﻿var pickerX=0;
var pickerY=0;
var Show_Foreis = false;
var Show_IPTV = false;
var Show_Centrespoly = false;
var Show_model = true;
var Show_model_or_iptv = true;


function returnXY()
{
    window.opener.returnXY(pickerX,pickerY);
    window.close();
}

var dragging = false;
var dragging_overview = false;
var InAnim=false;
var InAnim1=false;
var InAnim2=false;


function GV_Map(ControlID,MinZoom, ZoomControl, CenterAtGreece, isOverview, OverviewTarget, ShowDifferentMaps, resizable, MapType, InitZoom, ZoomControlId, IsPickerMap)
{

// Internal Control Variables
    this.IsOverview = isOverview;
    this.MyOverview = null;
    if (OverviewTarget)
        this.MyOverviewTarget = OverviewTarget;
    var thisMap=this;
    MapCurrent = thisMap;
    var curTileSize = tileSize;
    var Map= document.getElementById(ControlID);

    var Recenter_Zoom=-1;
    var Recenter_X = -1;
    var Recenter_Y = -1;
    
    var zoomDiv;
    //var innerDiv;
    var canvasDiv;
    var innerDivJQID;
    this.viewportWidth = $("#"+ControlID).width();
    this.viewportHeight = $("#"+ControlID).height();
    var zoom = MinZoom;
    if (typeof(InitZoom)!="undefined")
        zoom = InitZoom;
    var pinOffsetX = 10;
    var pinOffsetY = 27;

    var poipinOffsetX = 15;
    var poipinOffsetY = 24;

    var infotePoipinOffsetX = 22;
    var infotePoipinOffsetY = 31;

    var infotePinOffsetX = 12;
    var infotePinOffsetY = 34;
    
    var smallDialogOffsetX = 198;
    var smallDialogOffsetY = 151;

    var mediumDialogOffsetX = 175;
    var mediumDialogOffsetY = 299;


    var bigDialogOffsetX = 225;
    var bigDialogOffsetY = 297;


    var curDialogX=0;
    var curDialogY=0;
    
    var AllPinsCoords=new Array();
    var lastRoute;
    var lastExtent;
    this.xyStart;
    this.xyEnd;




//END: Internal Control Variables


// Initialization code
    
    innerDivJQID = "#innerDiv_"+ControlID;

    var leftZoom;
    var topZoom;

    
    if (ZoomControl==0)
    {
        leftZoom = 10;
        topZoom = thisMap.viewportHeight+55;
    }
    else if (ZoomControl==1)
    {
        leftZoom = 5;
        topZoom = thisMap.viewportHeight-15;
    }
    else if (ZoomControl==10)
    {
        leftZoom = 10;
        topZoom =  30;
    }
    else if (ZoomControl==11)
    {
        leftZoom = 5;
        topZoom =  15;
    }
    var IsCallOutMap = false;
    var map_type=1;
    if (typeof(MapType)!= "undefined")
    {
        map_type=MapType;
        IsCallOutMap = true;
    }
        
    var zInx =0;
    if (isOverview)
        zInx =2;
    var dmIcons="";
    if (ShowDifferentMaps)
    {
        dmIcons =  '<div id="dm1_'+ControlID+'" class="MapTypeSelect" style="position: absolute;right: '+170+'px;top:5px;width:50px;height:15px;z-index: 10">Χάρτης</div>';    
        dmIcons +=  '<div id="dm2_'+ControlID+'" class="MapTypeSelect" style="position: absolute;right: '+80+'px;top:5px;width:80px;height:15px;z-index: 10">Δορυφορική</div>';    
        dmIcons +=  '<div id="dm3_'+ControlID+'" class="MapTypeSelect" style="position: absolute;right: '+10+'px;top:5px;width:60px;height:15px;z-index: 10">Υβριδικός</div>';    
        if (browser.isIElLessThan7)
            dmIcons +=  '<img id="turkLogo" style="position: absolute;right:110px;bottom:14px;z-index:10" src="images/blank.gif" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=image, src=\'resources/images/inta-logo2.png\');"  />';
        else        
            dmIcons +=  '<img id="turkLogo" style="position: absolute;right:110px;bottom:14px;z-index:10" src="resources/images/inta-logo2.png" />';
        dmIcons +=  '<span id="turkLogoPS" style="color:#B0B9BD;position: absolute;right:130px;bottom:1px;z-index:1000" >pixel size 1.5m</span>';
    }
    var context = "";
    if (!isOverview)
    {
        if (IsPickerMap)
        {
            context = '<div id="ContextMenu_' + ControlID + '" class="ContextMenu" style="display:none;height:26px;">';
            context += '<div id="SetPic_'+ControlID+'" class="context_menu_item" onmouseout = "this.className = \'context_menu_item\'" onmouseover = "this.className = \'context_menu_item_hover\'">&nbsp;Ορισμός σημείου</div><br/>';
            context += '<div id="CenterHere_'+ControlID+'" class="context_menu_item" onmouseout = "this.className = \'context_menu_item\'" onmouseover = "this.className = \'context_menu_item_hover\'">&nbsp;Κεντράρισμα του χάρτη εδώ</div>';
            context += '</div>';
        }
        else
        {
            context = '<div id="ContextMenu_' + ControlID + '" class="ContextMenu" style="display:none;	height:26px;">';
            context += '<div id="SetPic_'+ControlID+'" class="context_menu_item" onmouseout = "this.className = \'context_menu_item\'" onmouseover = "this.className = \'context_menu_item_hover\'">&nbsp;Ορισμός σημείου</div><br/>';
            //context += '<div id="SetDep_'+ControlID+'" class="context_menu_item" onmouseout = "this.className = \'context_menu_item\'" onmouseover = "this.className = \'context_menu_item_hover\'">&nbsp;Πλοήγηση από εδώ</div><br/>';
            //context += '<div id="SetDest_'+ControlID+'" class="context_menu_item" onmouseout = "this.className = \'context_menu_item\'" onmouseover = "this.className = \'context_menu_item_hover\'">&nbsp;Πλοήγηση προς τα εδώ</div><br/>';
            context += '<div id="CenterHere_'+ControlID+'" class="context_menu_item" onmouseout = "this.className = \'context_menu_item\'" onmouseover = "this.className = \'context_menu_item_hover\'">&nbsp;Κεντράρισμα του χάρτη εδώ</div>';
            context += '</div>';
        }
    }
    
    var inTmp = dmIcons;
    if (typeof(ZoomControlId)=='undefined' || ZoomControlId=='undefined')
    {
        inTmp = inTmp +'<div id="zoomDiv_'+ControlID+'" style="position: absolute;left: '+leftZoom+'px;top: '+topZoom+'px;z-index: 10"></div>';
    }
    inTmp = inTmp + '<div id="innerDiv_'+ControlID+'" style="border: 0px solid red;position: absolute;left: 0px;top: 0px;z-index: '+zInx+'">'+context+'</div>';

    Map.innerHTML =inTmp;
    $("#turkLogo").hide();
    $("#turkLogoPS").hide();
    this.innerDiv = document.getElementById("innerDiv_"+ControlID);
    if (ShowDifferentMaps)
    {
        var dm1 = document.getElementById("dm1_"+ControlID);
        dm1.onclick = function(){setMapType(1);};
        var dm2 = document.getElementById("dm2_"+ControlID);
        dm2.onclick = function(){setMapType(2);};
        var dm3 = document.getElementById("dm3_"+ControlID);
        dm3.onclick = function(){setMapType(3);};
    }
    
    if (!isOverview)
    {
        if (IsPickerMap)
        {
            var cm1 = document.getElementById('SetPic_'+ControlID);
            cm1.onmousedown = function(){SetPickerXY();};
            var cm3 = document.getElementById('CenterHere_'+ControlID);
            cm3.onmousedown = function(){CenterHere();}; 
        }
        else
        {
            var cm0 = document.getElementById('SetPic_'+ControlID);
            cm0.onmousedown = function(){SetPickerXY();};
            //var cm1 = document.getElementById('SetDep_'+ControlID);
            //cm1.onmousedown = function(){SetDep();};
            //var cm2 = document.getElementById('SetDest_'+ControlID);
            //cm2.onmousedown = function(){SetDest();};
            var cm3 = document.getElementById('CenterHere_'+ControlID);
            cm3.onmousedown = function(){CenterHere();};    
        }
    }

    var myCanvas;
    var context;
    if (!isOverview)
    {
        myCanvas = document.createElement("canvas"); 
		myCanvas.id = "myCanvas"+ControlID; 
		thisMap.innerDiv.appendChild(myCanvas); 

        if (myCanvas.getContext == undefined) {
            G_vmlCanvasManager.initElement();
			if (ieversion<=8)
				G_vmlCanvasManager.initElement(myCanvas);
        }
        //else 
        //{         
        //    myCanvas.id = "myCanvas"+ControlID; 
        //    thisMap.innerDiv.appendChild(myCanvas); 
        //} 
        myCanvas = document.getElementById("myCanvas"+ControlID); 
        myCanvas.style.position="absolute";
        myCanvas.style.zIndex = 8;
        //myCanvas.onmousedown = startMove;

        context = myCanvas.getContext("2d");
    }


    var arVersion = navigator.appVersion.split("MSIE");
    var version = parseFloat(arVersion[1]);


    Map.onmouseover = setPointer;
    Map.onmousedown = startMove;
    
    if (resizable)
    {
        $(window).bind("resize", function(){DoResize();});
    }
    
    if (!isOverview && !IsCallOutMap)
    {
	    eval('$("#'+ControlID+'").mousewheel(function(objEvent, intDelta){if (intDelta > 0){Zoom(zoom+1, true);}else if (intDelta < 0){Zoom(zoom-1, true);}});');
	    eval('$("#'+ControlID+'").dblclick(function(){Zoom(zoom+1, true);})');
    }
    Map.ondragstart = function() { return false; };
    
    if (typeof(ZoomControlId)=='undefined' || ZoomControlId=='undefined')
        zoomDiv = document.getElementById("zoomDiv_"+ControlID);
    else
        zoomDiv = document.getElementById(ZoomControlId);
    
    if (!isOverview)
        if (ZoomControl<10)
            createZoomControl();
        else
            createZoomControl2();
            
    this.innerDiv.oncontextmenu = function() {
        return false;
    };       
        
    if (CenterAtGreece)
    {
        //CenterAtCoords(530620,4217490);
        ZoomToExtent(92777,4624355,914300,3846678);
    }


var debugCounter=0;
this.DoResize = DoResize;
function DoResize()
{
    //Map= document.getElementById(ControlID); 

   var w = $(window).width()-272;
   
   var h = $(window).height()-124;
   
   if (IsForPost)
		h = $(window).height()-64;
	
   var d = document.getElementById(ControlID);
   if (w>0)
   d.style.width=w+'px';
   if (h>0)
   d.style.height=h+'px';
   
    thisMap.viewportWidth = w;
    thisMap.viewportHeight = h;
    
    //$("#debug").html((debugCounter++)+" "+w);
    
    FixResultAreaHeight();
      
    var center = GetCenterCoords();
    var oldZoomOv = thisMap.MyOverview.GetLevel();
    //this.innerDiv = document.getElementById("innerDiv_"+ControlID);
    if (zoom>3)
    {
        var start = thisMap.GetStartCoords();
        var end =  thisMap.GetEndCoords();
        thisMap.MyOverview.InsertOverviewArea(start,end);
    }
    else
    {
        thisMap.MyOverview.Zoom(0);
        thisMap.MyOverview.RemoveOverviewArea();
    }
    thisMap.MyOverview.CenterAtCoords(center[0],center[1],0,0,false, false,oldZoomOv);
        
    checkTiles();
}    


this.setMapType =setMapType;
function setMapType(mt)
{
    if (map_type==mt)
        return;
        
    map_type=mt;
    eval('$(".tile_' + ControlID + '").remove();');
    eval('$(".hybrid_tile_' + ControlID + '").remove();');
    
//    $("#dm1_"+ControlID).css({ fontWeight:"normal" });
//    $("#dm2_"+ControlID).css({ fontWeight:"normal" });
//    $("#dm3_"+ControlID).css({ fontWeight:"normal" });
//    $("#dm"+mt+"_"+ControlID).css({ fontWeight:"bold" });
    
//    clearLowLevels();

//    if (thisMap.MyOverview!=null)
//    {
//        thisMap.MyOverview.setMapType(mt);
//    }
//    if (thisMap.IsOverview)
//    {
//        switch(mt)
//        {
//            case 1:
//            document.getElementById(ControlID).style.border = "3px solid Black";
//            document.getElementById(ControlID).style.borderBottomWidth = "0px";
//            document.getElementById(ControlID).style.borderRightWidth = "0px";
//            break;
//            case 2:
//            document.getElementById(ControlID).style.border = "3px solid White";
//            document.getElementById(ControlID).style.borderBottomWidth = "0px";
//            document.getElementById(ControlID).style.borderRightWidth = "0px";
//            break;
//            case 3:
//            document.getElementById(ControlID).style.border = "3px solid White";
//            document.getElementById(ControlID).style.borderBottomWidth = "0px";
//            document.getElementById(ControlID).style.borderRightWidth = "0px";
//            break;
//        }
//    }
    checkTiles();
    checkTurkLogo();    
}
    

function createZoomControl()
{

    if (ZoomControl==0)
    {
        img = document.createElement("img");
        img.src = "resources/images/ZoomControl/up.png";
        img.style.position = "absolute";
        img.style.left =  "18px";
        img.style.top = "0px";
        img.style.zIndex = 2;
        img.onclick= function(){Pan('up');return false;};
        img.style.cursor = "pointer";
        zoomDiv.appendChild(img);

        img = document.createElement("img");
        img.src = "resources/images/ZoomControl/left.png";
        img.style.position = "absolute";
        img.style.left =  "0px";
        img.style.top = "18px";
        img.style.zIndex = 2;
        img.onclick= function(){Pan('left');return false;};
        img.style.cursor = "pointer";
        zoomDiv.appendChild(img);

        img = document.createElement("img");
        img.src = "resources/images/ZoomControl/right.png";
        img.style.position = "absolute";
        img.style.left =  "36px";
        img.style.top = "18px";
        img.style.zIndex = 2;
        img.onclick= function(){Pan('right');return false;};
        img.style.cursor = "pointer";
        zoomDiv.appendChild(img);
        
        img = document.createElement("img");
        img.src = "resources/images/ZoomControl/down.png";
        img.style.position = "absolute";
        img.style.left =  "18px";
        img.style.top = "36px";
        img.style.zIndex = 2;
        img.onclick= function(){Pan('down');return false;};
        img.style.cursor = "pointer";
        zoomDiv.appendChild(img);
        
        img = document.createElement("img");
        img.src = "resources/images/ZoomControl/recenter.png";
        img.style.position = "absolute";
        img.style.left =  "18px";
        img.style.top = "18px";
        img.style.zIndex = 2;
        img.onclick= function(){Recenter();return false;};
        img.style.cursor = "pointer";
        zoomDiv.appendChild(img);

    }

    img = document.createElement("img");
    img.src = "resources/images/ZoomControl/pluss.png";
    img.style.position = "absolute";
    img.style.left =  "60px";
    img.style.top = "19px";
    img.style.zIndex = 2;
    img.onclick= function(){Zoom(zoom+1);return false;};
    img.style.cursor = "pointer";
    zoomDiv.appendChild(img);

    // This runs the for loop using a LOCAL scope for each iteration. 
    if (ZoomControl==0)
    {
        (function loop( intI ){

        var intX = intI;

        if (intX >= MinZoom){

            img = document.createElement("img");
            if (intX==zoom)
                img.src = "resources/images/ZoomControl/arrowMap.png";
            else
                img.src = "resources/images/ZoomControl/point.png";
            img.style.position = "absolute";
            img.style.left = 73 + 12*(zoom_levels-intX-1) + "px";
            img.style.top = "19px";
            img.style.zIndex = 2;
            img.onclick= function(){Zoom(intX);return false;};
            img.style.cursor = "pointer";
            img.setAttribute("id", "Z_level_"+intX+ControlID);
            zoomDiv.appendChild(img);      
            loop(intI - 1);          
        }
        })(zoom_levels-1);
    }
    img = document.createElement("img");
    img.src = "resources/images/ZoomControl/minus.png";
    img.style.position = "absolute";
    
    if (ZoomControl==0)
        img.style.left =  73 + 12*(zoom_levels-MinZoom) + "px";
    else
        img.style.left =  "73px";
    
    img.style.top = "19px";
    img.style.zIndex = 2;
    img.onclick= function(){Zoom(zoom-1);return false;};
    img.style.cursor = "pointer";
    zoomDiv.appendChild(img);

    zoomDiv.style.width =  12*(zoom_levels+2) + "px";
}

function createZoomControl2()
{
    if (ZoomControl==10)
    {
        img = document.createElement("img");
        img.src = "resources/images/ZoomControl2/controller_up.png";
        img.style.position = "absolute";
        img.style.left =  "14px";
        img.style.top = "0px";
        img.style.zIndex = 2;
        img.onclick= function(){Pan('up');return false;};
        img.style.cursor = "pointer";
        zoomDiv.appendChild(img);

        img = document.createElement("img");
        img.src = "resources/images/ZoomControl2/controller_left.png";
        img.style.position = "absolute";
        img.style.left =  "0px";
        img.style.top = "13px";
        img.style.zIndex = 2;
        img.onclick= function(){Pan('left');return false;};
        img.style.cursor = "pointer";
        zoomDiv.appendChild(img);

        img = document.createElement("img");
        img.src = "resources/images/ZoomControl2/controller_right.png";
        img.style.position = "absolute";
        img.style.left =  "27px";
        img.style.top = "13px";
        img.style.zIndex = 2;
        img.onclick= function(){Pan('right');return false;};
        img.style.cursor = "pointer";
        zoomDiv.appendChild(img);
        
        img = document.createElement("img");
        img.src = "resources/images/ZoomControl2/controller_down.png";
        img.style.position = "absolute";
        img.style.left =  "14px";
        img.style.top = "27px";
        img.style.zIndex = 2;
        img.onclick= function(){Pan('down');return false;};
        img.style.cursor = "pointer";
        zoomDiv.appendChild(img);

    }

    img = document.createElement("img");
    img.src = "resources/images/ZoomControl2/plus.png";
    img.style.position = "absolute";
    if (ZoomControl==10)
    {
        img.style.left =  "14px";
        img.style.top = "45px";
    }
    else
    {
        img.style.left =  "0px";
        img.style.top = "0px";
    }
    img.style.zIndex = 2;
    img.onclick= function(){Zoom(zoom+1);return false;};
    img.style.cursor = "pointer";
    if (browser.isIElLessThan7)
        img.style.behavior="url('pngbehavior.htc')";
    zoomDiv.appendChild(img);

    // This runs the for loop using a LOCAL scope for each iteration. 
    if (ZoomControl==10)
    {
        (function loop( intI ){

        var intX = intI;

        if (intX >= MinZoom){

            img = document.createElement("img");
            if (intX==zoom)
                img.src = "resources/images/ZoomControl2/indicator.png";
            else
                img.src = "resources/images/ZoomControl2/step.png";
            img.style.position = "absolute";
            img.style.top = 45 + 11*(zoom_levels-intX) + "px";
            if (ZoomControl==10)
                img.style.left = "14px";
            else
                img.style.left = "0px";
            img.style.zIndex = 2;
            img.onclick= function(){Zoom(intX);return false;};
            img.style.cursor = "pointer";
            img.setAttribute("id", "Z_level_"+intX+ControlID);
            if (browser.isIElLessThan7)
                img.style.behavior="url('pngbehavior.htc')";
            zoomDiv.appendChild(img);      
            loop(intI - 1);          
        }
        })(zoom_levels-1);
    }
    img = document.createElement("img");
    img.src = "resources/images/ZoomControl2/minus.png";
    img.style.position = "absolute";
    
    if (ZoomControl==10)
    {
        img.style.top =  45 + 11*(zoom_levels-MinZoom+1) + "px";
        img.style.left = "14px";
    }
    else
    {
        img.style.top =  "11px";
        img.style.left = "0px";
    }
    img.style.zIndex = 2;
    img.onclick= function(){Zoom(zoom-1);return false;};
    img.style.cursor = "pointer";
    if (browser.isIElLessThan7)
        img.style.behavior="url('pngbehavior.htc')";
    zoomDiv.appendChild(img);

    zoomDiv.style.width =  12*(zoom_levels+2) + "px";
}

function Recenter()
{
    if (Recenter_Zoom!=-1)
        Zoom(Recenter_Zoom);
    if (Recenter_X!=-1)
        CenterAtCoords(Recenter_X,Recenter_Y,0,0,true);
}

function Pan(direction)
{
    var LeftMargin = 0;
    var TopMargin = 0;
    switch(direction)
    {
        case 'down':
            var TopMargin = (-1)*thisMap.viewportHeight/3;   
            break;
        case 'up':
            var TopMargin = thisMap.viewportHeight/3;   
            break;
        case 'right':
            var LeftMargin = (-1)*thisMap.viewportWidth/3;   
            break;
        case 'left':
            var LeftMargin = thisMap.viewportWidth/3;   
            break;            
    }
    var lala = '$("#'+thisMap.innerDiv.id+'").animate({left: "+='+LeftMargin+'px",top: "+='+TopMargin+'px"}, 400,"linear", function(){checkTiles();});';
    eval(lala);

}

function setPointer(event) 
{
    if (browser.isFirefox)
        thisMap.innerDiv.style.cursor = '-moz-grab';
    else
        thisMap.innerDiv.style.cursor = 'resources/cursors/grab.cur'; 
}

function startMove(event) 
{
     event = event || window.event;
     var target = event.srcElement || event.target;
     if ( target.className!="tile_"+ControlID 
     && target.className!="hybrid_tile_"+ControlID
     && target.id!='ContextMenu_'+ControlID 
     && target.id!='SetPic_'+ControlID 
     && target.id!='SetDep_'+ControlID 
     && target.id!='SetDest_'+ControlID 
     && target.id!='CenterHere_'+ControlID 
     && target.id!='pinDialog'
     && target.id!='overviewArea_'+ControlID
     && target.id!='overviewAreaTmp_'+ControlID
     && target != this) return;
     
    if (InAnim)
        return;

    InMove=true;
    // necessary for IE
    //if (!event) event = window.event;

    if (!right(event))
    {

        Map_Current_dragStartLeft = event.clientX;
        Map_Current_dragStartTop = event.clientY;
        
        if (browser.isFirefox)
            thisMap.innerDiv.style.cursor = '-moz-grabbing';
        else
            thisMap.innerDiv.style.cursor = 'resources/cursors/grabbing.cur'; 
        
        Map_Current_m_top = stripPx(thisMap.innerDiv.style.top);
        Map_Current_m_left = stripPx(thisMap.innerDiv.style.left);

        dragging = true;
        Map_Current = thisMap;
        innerDiv_Current = document.getElementById("innerDiv_"+ControlID);
        
        dragOffsetY = Map_Current_m_top- Map_Current_dragStartTop;
        dragOffsetX = Map_Current_m_left- Map_Current_dragStartLeft;
        
        if (thisMap.MyOverview!=null)
            thisMap.MyOverview.CloneOverviewArea();
        if (thisMap.IsOverview)
        {
            thisMap.CloneOverviewArea();
            var MapIDJQ = '#'+ControlID;
            var of = $(MapIDJQ).offset();
            var x_center = (-1)*stripPx(thisMap.innerDiv.style.left)  + event.clientX -of.left;
            var y_center = (-1)*stripPx(thisMap.innerDiv.style.top)  + event.clientY-of.top;
            
            if (InOverview(x_center,y_center ) )
            {
                var ov_id = 'overviewAreaTmp_'+ControlID;
                var overviewArea = document.getElementById(ov_id);
                
                dragging_overview = true;
                dragOverview_Current =overviewArea;
                
                Map_Current_m_top = stripPx(overviewArea.style.top);
                Map_Current_m_left = stripPx(overviewArea.style.left);
        
                dragOffsetY = Map_Current_m_top- Map_Current_dragStartTop;
                dragOffsetX = Map_Current_m_left- Map_Current_dragStartLeft;
            }
            
        }
        if (!this.IsOverview)
        {
            $('#ContextMenu_'+ControlID).hide();
        }
    }
    else //right click!
    {
        if (!this.IsOverview)
        {        
            if (rightClickTO==null)
            {
                //$("#debug").css("backgroundColor","Red");
                Map_Current = thisMap;
                myRightCounter=0;
                rightClickTO = setTimeout("RightClick('"+ControlID+"');",600);
            }
        }
    }
    event.cancelBubble=true;
    return false;
   
}


function InOverview(clientX, clientY)
{
    var ToReturn =false;
    var ov_id = 'overviewArea_'+ControlID;
    var overviewArea = document.getElementById(ov_id);
    if (overviewArea)
    {
        var top_x = stripPx(overviewArea.style.left)-5;
        var top_y = stripPx(overviewArea.style.top)-5;
        var bottom_x = stripPx(overviewArea.style.width)+top_x+10;
        var bottom_y = stripPx(overviewArea.style.height)+top_y+10;
        if (clientX>top_x && clientX<bottom_x && clientY>top_y && clientY<bottom_y)
        {
            ToReturn = true;
        }
    }
    return ToReturn;
}
this.MapToXY = MapToXY;
function MapToXY(m_x, m_y,z)
{
    m_x = parseInt(m_x);
    m_y = parseInt(m_y);
    var x_ret;
    var y_ret;
    
    if (isNaN(z))
    {
        x_ret = xOrigin + offset[zoom][0]* curTileSize * resolution[zoom] + m_x * resolution[zoom];
        y_ret = yOrigin - offset[zoom][1]* curTileSize * resolution[zoom] - m_y * resolution[zoom];
    }
    else
    {
        x_ret = xOrigin + offset[z][0]* curTileSize * resolution[z] + m_x * resolution[z];
        y_ret = yOrigin - offset[z][1]* curTileSize * resolution[z] - m_y * resolution[z];
    }
    return [Math.round(x_ret), Math.round(y_ret)];                
}

function XYToMap(x, y, z)
{
    x = parseInt(x);
    y = parseInt(y);
    z = parseInt(z);
    var m_x_ret;
    var m_y_ret;
        
    if (isNaN(z))
    {
        m_x_ret = (x - xOrigin) /resolution[zoom] - offset[zoom][0]* curTileSize;
        m_y_ret = (yOrigin - y) /resolution[zoom] - offset[zoom][1]* curTileSize;
    }
    else
    {
        m_x_ret = (x - xOrigin) /resolution[z] - offset[z][0]* curTileSize;
        m_y_ret = (yOrigin - y) /resolution[z] - offset[z][1]* curTileSize;
    }
    
    return [Math.round(m_x_ret), Math.round(m_y_ret)];                
}

this.GetCenterMapCoords = GetCenterMapCoords;
function GetCenterMapCoords()
{
    var x_center = (-1)*stripPx(thisMap.innerDiv.style.left) + thisMap.viewportWidth/2;
    var y_center = (-1)*stripPx(thisMap.innerDiv.style.top) + thisMap.viewportHeight/2;
    
    return [x_center, y_center];
}

this.GetCenterCoords =GetCenterCoords;
function GetCenterCoords(dragOverview)
{
    var x_center;
    var y_center;
    
    if (typeof(dragOverview)!='undefined')
    {
        x_center = stripPx(dragOverview.style.left) + stripPx(dragOverview.style.width)/2;
        y_center = stripPx(dragOverview.style.top) + stripPx(dragOverview.style.height)/2;
    }
    else
    {
        x_center = (-1)*stripPx(thisMap.innerDiv.style.left) + thisMap.viewportWidth/2;
        y_center = (-1)*stripPx(thisMap.innerDiv.style.top) + thisMap.viewportHeight/2;
    }
    return MapToXY(x_center, y_center);
}
this.GetStartCoords = GetStartCoords;
function GetStartCoords()
{
    var x_center = (-1)*stripPx(thisMap.innerDiv.style.left);
    var y_center = (-1)*stripPx(thisMap.innerDiv.style.top);
    
    return MapToXY(x_center, y_center);
}

this.GetEndCoords = GetEndCoords;
function GetEndCoords()
{
    var x_center = (-1)*stripPx(thisMap.innerDiv.style.left)+thisMap.viewportWidth;
    var y_center = (-1)*stripPx(thisMap.innerDiv.style.top)+thisMap.viewportHeight;
    
    return MapToXY(x_center, y_center);
}



this.CenterAtCoords = CenterAtCoords;
function CenterAtCoords(x,y, mapOffsetX, mapOffsetY, withAnimation, returnEval, oldZoom)
{
    var center = XYToMap(x,y);
    
    if (typeof(mapOffsetX) == 'undefined' )
    {
        thisMap.innerDiv.style.left = (center[0]*(-1) + thisMap.viewportWidth/2) + "px";
        thisMap.innerDiv.style.top = (center[1]*(-1) + thisMap.viewportHeight/2) + "px";            
    }
    else
    {
        if (withAnimation)
        {
            //RemoveOverviewArea(true);
            var mLeft = (center[0]*(-1) + thisMap.viewportWidth/2 - mapOffsetX) - stripPx(thisMap.innerDiv.style.left);
            var mTop = (center[1]*(-1) + thisMap.viewportHeight/2 - mapOffsetY) - stripPx(thisMap.innerDiv.style.top);
            var speed = 500;//(Math.abs(mLeft)+Math.abs(mTop))/3*1.5;
            var lala = '$("#'+thisMap.innerDiv.id+'").animate({left: "+='+mLeft+'px",top: "+='+mTop+'px"}, '+speed +',"linear", function(){checkTiles();RefreshRoute();});';
            if (returnEval)
            {
                lala = '$("#'+thisMap.innerDiv.id+'").animate({left: "+='+mLeft+'px",top: "+='+mTop+'px"}, $$SPEED$$,"linear", function(){$$ANDTHEN$$;});';
                return [MapToXY(center[0] - thisMap.viewportWidth/2, center[1] - thisMap.viewportHeight/2 ),lala];  
            }
            else 
                eval(lala);
        }
        else
        {
            thisMap.innerDiv.style.left = (center[0]*(-1) + thisMap.viewportWidth/2 - mapOffsetX) + "px";
            thisMap.innerDiv.style.top = (center[1]*(-1) + thisMap.viewportHeight/2 - mapOffsetY) + "px";            
        }
    }
    if (isNaN(oldZoom))
    {
        checkTiles();
    }
    AdjustOverview();
  
}

this.AdjustOverview=AdjustOverview;
function AdjustOverview()
{
    if (thisMap.MyOverview)
    {
        var center = GetCenterCoords();
        thisMap.MyOverview.CenterAtCoords(center[0],center[1]);
        var start = GetStartCoords();
        thisMap.MyOverview.MoveOverviewAreaToXY(start[0],start[1], false, false);
    }
}

// START:checktiles
this.checkTiles = checkTiles;
function checkTiles() 
{
    // check which tiles should be visible in the inner div
    var visibleTiles = getVisibleTiles();

    // add each tile to the inner div, checking first to see
    // if it has already been added
    this.visibleTilesMap = {};      
    var j = Math.floor(visibleTiles.length/2);
    for (i = 0; i < visibleTiles.length; i++) {
        j = j - i*(i%2) + i*((i+1)%2);
        
        var tileName = "l=" + zoom + "&r=" + (visibleTiles[j][1]+offset[zoom][1]) + "&c=" + (visibleTiles[j][0]+offset[zoom][0]);
            
        this.visibleTilesMap[tileName+"&"+ControlID] = true;
        //var img = document.getElementById(tileName + "&" + ControlID);
        var img;
        var pref = handlers_url;
        if (upserver)
            pref = "";

        if (isOverview || (!document.getElementById(tileName + "&" + ControlID + "&s0") ))
        {
            img = document.createElement("img");
			if (IsForPost)
				img.src = pref + "TileServer.ashx?" + tileName;
            else if (map_type == 2)
                img.src = pref + "TileServer.ashx?t=evrizon&" + tileName;
            else if (map_type == 1)
                img.src = pref + "TileServer.ashx?" + tileName;
            img.style.position = "absolute";
            img.style.left = (visibleTiles[j][0] * curTileSize) + "px";
            img.style.top = (visibleTiles[j][1] * curTileSize) + "px";
            img.style.width = curTileSize;
            img.style.height = curTileSize;
            img.style.zIndex = 0;
            img.setAttribute("id", tileName + "&" + ControlID + "&s0");
            img.className = "tile_" + ControlID;
            thisMap.innerDiv.appendChild(img);
        }

        if (!isOverview) {
            $("#debug").html($(".tile_" + ControlID).length);

            if ((Show_model_or_iptv) && (!document.getElementById(tileName + "&" + ControlID + "&s1"))) {

                img = document.createElement("img");
                var m="";
                if (Show_model)
                    m = "model";
                if (Show_IPTV)
                    m = "iptv";
                    
                img.src = pref + "TileServer.ashx?t="+m+"&" + tileName;
                if (browser.isIElLessThan7)
                    img.style.behavior = "url('pngbehavior.htc')";

                img.style.position = "absolute";
                img.style.left = (visibleTiles[j][0] * curTileSize) + "px";
                img.style.top = (visibleTiles[j][1] * curTileSize) + "px";
                img.style.width = curTileSize;
                img.style.height = curTileSize;
                img.style.zIndex = 1;
                img.setAttribute("id", tileName + "&" + ControlID + "&s1");
                img.className = "hybrid_tile_" + ControlID;
                thisMap.innerDiv.appendChild(img);
            }

//            if (Show_Centrespoly && (!document.getElementById(tileName + "&" + ControlID + "&s2"))) {
//                img = document.createElement("img");
//                img.src = pref + "TileServer.ashx?t=centrespoly&" + tileName;
//                if (browser.isIElLessThan7)
//                    img.style.behavior = "url('pngbehavior.htc')";

//                img.style.position = "absolute";
//                img.style.left = (visibleTiles[j][0] * curTileSize) + "px";
//                img.style.top = (visibleTiles[j][1] * curTileSize) + "px";
//                img.style.width = curTileSize;
//                img.style.height = curTileSize;
//                img.style.zIndex = 2;
//                var opacity = 60;

//                img.style.opacity = (opacity / 100);
//                img.style.MozOpacity = (opacity / 100);
//                img.style.KhtmlOpacity = (opacity / 100);
//                img.style.filter = "alpha(opacity=" + opacity + ")";
//                
//                img.setAttribute("id", tileName + "&" + ControlID + "&s2");
//                img.className = "hybrid_tile_" + ControlID;
//                thisMap.innerDiv.appendChild(img);

//                //$("#"+tileName + "&" + ControlID + "&s1").css({ opacity: 0.5 });
//            }



//            if (Show_IPTV && (!document.getElementById(tileName + "&" + ControlID + "&s3"))) {
//                img = document.createElement("img");
//                img.src = pref + "TileServer.ashx?t=IPTV&" + tileName;
//                if (browser.isIElLessThan7)
//                    img.style.behavior = "url('pngbehavior.htc')";

//                img.style.position = "absolute";
//                img.style.left = (visibleTiles[j][0] * curTileSize) + "px";
//                img.style.top = (visibleTiles[j][1] * curTileSize) + "px";
//                img.style.width = curTileSize;
//                img.style.height = curTileSize;
//                img.style.zIndex = 3;
//                img.setAttribute("id", tileName + "&" + ControlID + "&s3");
//                img.className = "tile_" + ControlID;
//                thisMap.innerDiv.appendChild(img);
//            }

//            if (Show_Foreis && (!document.getElementById(tileName + "&" + ControlID + "&s4"))) {
//                img = document.createElement("img");
//                img.src = pref + "TileServer.ashx?t=foreis&" + tileName;
//                if (browser.isIElLessThan7)
//                    img.style.behavior = "url('pngbehavior.htc')";

//                img.style.position = "absolute";
//                img.style.left = (visibleTiles[j][0] * curTileSize) + "px";
//                img.style.top = (visibleTiles[j][1] * curTileSize) + "px";
//                img.style.width = curTileSize;
//                img.style.height = curTileSize;
//                img.style.zIndex = 4;
//                img.setAttribute("id", tileName + "&" + ControlID + "&s4");
//                img.className = "hybrid_tile_" + ControlID;
//                thisMap.innerDiv.appendChild(img);
//            }
        }
    }
}
// END:checktiles

this.clearUnvisibles = clearUnvisibles;
function clearUnvisibles()
{
    var imgs = thisMap.innerDiv.getElementsByTagName("img");
    for (i = 0; i < imgs.length; i++) 
    {
        var id = imgs[i].getAttribute("id");
        if (imgs[i].className == "tile_" + ControlID || imgs[i].className == "hybrid_tile_" + ControlID)
        {
            var ids = "";
            //if (map_type==2 || Show_model)
            ids = id.substring(0,id.length-3);
            if (((!this.visibleTilesMap[ids]) && (!this.visibleTilesMap[id])) && (imgs[i].className == "tile_" + ControlID || imgs[i].className == "hybrid_tile_" + ControlID) /*&& (!imgs[i].complete)*/) {
                thisMap.innerDiv.removeChild(imgs[i]);
                i--;  // compensate for live nodelist
            }
        }
    }
}

this.clearLowLevels = clearLowLevels;
function clearLowLevels()
{
    var imgs = thisMap.innerDiv.getElementsByTagName("img");
    for (i = 0; i < imgs.length; i++) 
    {
        var id = imgs[i].getAttribute("id");
        if ((imgs[i].className == "tile_" + ControlID || imgs[i].className == "hybrid_tile_" + ControlID) && parseInt(imgs[i].style.zIndex) < -1)
        {
            thisMap.innerDiv.removeChild(imgs[i]);
            i--;  // compensate for live nodelist            {                
        }
    }
}

this.clearUnwantedFromView = clearUnwantedFromView;
function clearUnwantedFromView()
{
    var visibleTiles = getVisibleTiles();

    // add each tile to the inner div, checking first to see
    // if it has already been added
    this.visibleTilesMap = {};      
    for (i = 0; i < visibleTiles.length; i++) {
        var tileArray = visibleTiles[i];
        var tileName = "l=" + zoom + "&r=" + (tileArray[1]+offset[zoom][1]) + "&c=" + (tileArray[0]+offset[zoom][0]);
            
        this.visibleTilesMap[tileName+"&"+ControlID] = true;
    }
    
    var imgs = thisMap.innerDiv.getElementsByTagName("img");
    for (i = 0; i < imgs.length; i++) {
        var id = imgs[i].getAttribute("id");
        if ((imgs[i].className == "tile_" + ControlID) || (imgs[i].className == "hybrid_tile_" + ControlID))
        {
            var ids = "";
            //if (map_type==2 || Show_model)
            ids = id.substring(0,id.length-3);
            if ( ((!this.visibleTilesMap[ids])&&(!this.visibleTilesMap[id])) && (imgs[i].className=="tile_"+ControlID || imgs[i].className=="hybrid_tile_"+ControlID)) {
                thisMap.innerDiv.removeChild(imgs[i]);
                i--;  // compensate for live nodelist
            }
        }
    }    
}

function correctPNG(src, left, top, width, height, id) 
{
    var imgID = "id='" + id + "' ";
    var imgClass = "class='tile' ";
    var strNewHTML = "<img " + imgID + imgClass 
    + "sm:iepng=\"true\"" + "position:absolute;z-index:0; width:" + width + "px; height:" + height + "px;" + " left:" + left + "px; top:" + top + "px;"
    + "src=\'" + src + "\' />";
    return strNewHTML;
}

function getVisibleTiles() {
    var mapX = stripPx(thisMap.innerDiv.style.left);
    var mapY = stripPx(thisMap.innerDiv.style.top);

    var startX = (-1)*Math.floor(mapX / curTileSize) - 1;
    var startY = (-1)*Math.floor(mapY / curTileSize) - 1;

    var tilesX = Math.ceil(thisMap.viewportWidth / curTileSize) + 1;
    var tilesY = Math.ceil(thisMap.viewportHeight / curTileSize) + 1;

    var visibleTileArray = [];
    var counter = 0;
    for (x = startX; x < (tilesX + startX); x++) {
        for (y = startY; y < (tilesY + startY); y++) {
            visibleTileArray[counter++] = [x, y];
        }
    }
    return visibleTileArray;
}

this.GetZoomLevel =GetZoomLevel;
function GetZoomLevel()
{
    return zoom;
}

this.Zoom = Zoom;
function Zoom(Level, ZoomToLastMousePos) 
{
    if (!isOverview) {
        if (Level < 11)
            $(".PoiPin").hide();
        else
            $(".PoiPin").show();
            
        if (map_type==2)
        {
            if (Level > 8)
                $("#inxEvryzon").hide();
            else
                $("#inxEvryzon").show();
        }
    }
//var d1 = new Date();
//var t1 = d1.getTime();

    if (Level<MinZoom || Level>=zoom_levels || Level==zoom)
        return;
    
    var OldFocus = document.getElementById("Z_level_"+zoom+ControlID);
    var NewFocus = document.getElementById("Z_level_"+Level+ControlID);
    if (ZoomControl==0)
    {
        if (NewFocus)
            NewFocus.src = "resources/images/ZoomControl/arrowMap.png";
        if (OldFocus)
            OldFocus.src = "resources/images/ZoomControl/point.png";
    }
    else if (ZoomControl==10)
    {
        if (NewFocus)
            NewFocus.src = "resources/images/ZoomControl2/indicator.png";
        if (OldFocus)
            OldFocus.src = "resources/images/ZoomControl2/step.png";
    }

//var d2 = new Date();
//var t2 = d2.getTime();

    var center = GetCenterCoords();
    var KeepAtPoint;
    var MapOffset;
    var x_center;
    var y_center;

    if (typeof(ZoomToLastMousePos)!= 'undefined')
    {
        var MapIDJQ = '#'+ControlID;
        x_center = (-1)*stripPx(thisMap.innerDiv.style.left)  + LastMouseX-stripPx($(MapIDJQ).css('left'));
        y_center = (-1)*stripPx(thisMap.innerDiv.style.top)  + LastMouseY-stripPx($(MapIDJQ).css('top'));
    
        KeepAtPoint = MapToXY(x_center, y_center);
        
        OldCenterMap = XYToMap(center[0], center[1]);
        MapOffset = [OldCenterMap[0] - x_center, OldCenterMap[1] - y_center ];
    }

//var d3 = new Date();
//var t3 = d3.getTime();

    var oldZoom = zoom;  
    zoom = Level;
    
    var imgs = thisMap.innerDiv.getElementsByTagName("img");
    for (i = 0; i < imgs.length; i++) {
        var id = imgs[i].getAttribute("id");

        if (imgs[i].className == "tile_" + ControlID || imgs[i].className == "hybrid_tile_" + ControlID) {
            if (!imgs[i].complete)
            {
                thisMap.innerDiv.removeChild(imgs[i]);
                i--;  // compensate for live nodelist            
            }
            else
            {
                var lala = imgs[i].id.split("&");
            
                var TileZoom = parseInt(lala[0].substring(lala[0].indexOf("l=")+2,lala[0].length));
                
                var my = parseInt(lala[1].substring(2,lala[1].length));
                var mx = parseInt(lala[2].substring(2,lala[2].length));
                var l = (mx - offset[TileZoom][0])*tileSize;
                var t = (my - offset[TileZoom][1])*tileSize;

                var extentRatio = Math.pow(2,Math.abs(zoom-TileZoom));
                var oldLeftTop = MapToXY(l, t, TileZoom); 
                var newLeftTop = XYToMap(oldLeftTop[0], oldLeftTop[1]); 
                imgs[i].style.left = newLeftTop[0] + 'px';
                imgs[i].style.top = newLeftTop[1] + 'px';
                if (TileZoom==Level)
                {
                    if (lala.length == 4) // is tile from hybrid
                        imgs[i].style.zIndex = -1;
                    else
                        imgs[i].style.zIndex = 0;
                }
                else
                {
                    if (map_type==2 || Show_model)
                        imgs[i].style.zIndex = imgs[i].style.zIndex-2;
                    else
                        imgs[i].style.zIndex = imgs[i].style.zIndex-1;
                }
                if (TileZoom<zoom)
                {
                    imgs[i].style.width = (tileSize*extentRatio)+'px';
                    imgs[i].style.height = (tileSize*extentRatio)+'px';
                }
                else
                {
                    imgs[i].style.width = (tileSize/extentRatio)+'px';
                    imgs[i].style.height = (tileSize/extentRatio)+'px';
                }
            }
        }
    }

//var d4 = new Date();
//var t4 = d4.getTime();
    
    if (typeof(ZoomToLastMousePos)!= 'undefined')
    {
        CenterAtCoords(KeepAtPoint[0], KeepAtPoint[1], MapOffset[0], MapOffset[1], false, false, oldZoom );
        
        $("#littleX").remove();
        
        littleX = document.createElement("img");
        littleX.style.position = "absolute";
        var anim_center = XYToMap(KeepAtPoint[0], KeepAtPoint[1]);

        
        var MarginWH;
        var MarginLT;
        if (Level > oldZoom)
        {
            littleX.src = "resources/images/zoomIn.png";
            if (browser.isIElLessThan7)
                littleX.style.behavior="url('pngbehavior.htc')";

            littleX.style.width = "23px";
            littleX.style.height = "23px";
            MarginWH = '"+=23px"';
            MarginLT = '"-=12px"';
            littleX.style.left = anim_center[0] -12 + 'px';
            littleX.style.top = anim_center[1]  -12 + 'px';
        }
        else
        {
            littleX.src = "resources/images/zoomOut.png";
            if (browser.isIElLessThan7)
                littleX.style.behavior="url('pngbehavior.htc')";
            littleX.style.width = "46px";
            littleX.style.height = "46px";
            MarginWH = '"-=23px"';
            MarginLT = '"+=12px"';
            littleX.style.left = anim_center[0] -23 + 'px';
            littleX.style.top = anim_center[1]  -23 + 'px';
        }
            
        littleX.style.zIndex = 12;
        littleX.setAttribute("id", "littleX");
        thisMap.innerDiv.appendChild(littleX);

//        if (Level > oldZoom)
//        {
//            new OpacityObject('littleX','resources/images/zoomIn').setBackground();
//        }
//        else
//        {
//            new OpacityObject('littleX','resources/images/zoomOut').setBackground();
//        }

        eval ('$("#littleX").animate({left:'+MarginLT+',top:'+MarginLT+',width:'+MarginWH+',height:'+MarginWH+'},400,"linear", function(){$("#littleX").remove();});');

    }
    else
    {
        CenterAtCoords(center[0], center[1],0,0,false,false,oldZoom);
    }

//var d5 = new Date();
//var t5 = d5.getTime();


    for (var i=0; i<AllPinsCoords.length; i++)
    {
        var newPinCoords = XYToMap(AllPinsCoords[i][2],AllPinsCoords[i][3]);
        var l = newPinCoords[0] - AllPinsCoords[i][4];
        var t = newPinCoords[1] - AllPinsCoords[i][5];
        var curPin = eval('$("#'+AllPinsCoords[i][0]+'")');
        eval('curPin.css("left","'+l+'px");');
        eval('curPin.css("top","'+t+'px");');
    }

    if (thisMap.MyOverview!=null)
    {
        ClearRoute();
      
        var center = GetCenterCoords();
        var oldZoomOv = thisMap.MyOverview.GetLevel();
//        innerDiv = document.getElementById("innerDiv_"+ControlID);
        if (zoom>3)
        {
            thisMap.MyOverview.Zoom(zoom-4);
            var start = thisMap.GetStartCoords();
            var end =  thisMap.GetEndCoords();
            thisMap.MyOverview.InsertOverviewArea(start,end);
        }
        else
        {
            thisMap.MyOverview.Zoom(0);
            thisMap.MyOverview.RemoveOverviewArea();
        }
        thisMap.MyOverview.CenterAtCoords(center[0],center[1],0,0,false, false,oldZoomOv);

        if (checkTilesTimerId!=false)
        {
            clearTimeout( checkTilesTimerId );
            checkTilesTimerId = false;
        }
        MapCurrent = thisMap;
        checkTilesTimerId = setTimeout("MapCurrent.checkTiles();if (MapCurrent.MyOverview)MapCurrent.MyOverview.checkTiles();if (!MapCurrent.IsOverview)MapCurrent.RefreshRoute();checkTilesTimerId = false;",400);

        checkTurkLogo();
    }
    else //if (IsCallOutMap)
    {
        if (checkTilesTimerId!=false)
        {
            clearTimeout( checkTilesTimerId );
            checkTilesTimerId = false;
        }
        MapCurrent = thisMap;
        checkTilesTimerId = setTimeout("MapCurrent.checkTiles();MapCurrent.RefreshRoute();checkTilesTimerId = false;",400);    
    }
   
//var d6 = new Date();    
//var t6 = d6.getTime();
//    
//var d7 = new Date();
//var t7 = d7.getTime();

//var debug = document.getElementById("debug");
//debug.innerHTML= (t2-t1) + " " + (t3-t2) + " " + (t4-t3) + " " + (t5-t4) + " " + (t6-t5) + " " +(t7-t6) + " ";


}

function checkTurkLogo()
{
    $("#turkLogo").hide();    
    $("#turkLogoPS").hide();   
    if (map_type>1)
    {
        if (zoom>8)
        {
            $("#turkLogo").show();    
            $("#turkLogoPS").show();    
        }
    }
}

this.GetLevel = GetLevel;
function GetLevel()
{
    return zoom;
}

this.CloneOverviewArea =CloneOverviewArea;
function CloneOverviewArea()
{
    var ov_id = 'overviewArea_'+ControlID;
    var overviewArea = document.getElementById(ov_id);
    if (overviewArea) {
        var ov_id_tmp = 'overviewAreaTmp_'+ControlID;
        var ov_tmp = document.getElementById(ov_id_tmp);
        if (ov_tmp)
            ov_tmp.parentNode.removeChild(ov_tmp);
        
        ov_tmp = document.createElement("div");
            
        ov_tmp.style.position = "absolute";
        ov_tmp.setAttribute("id", ov_id_tmp);
        
        var opacity=60;

            
        ov_tmp.style.opacity = (opacity / 100); 
        ov_tmp.style.MozOpacity = (opacity / 100); 
        ov_tmp.style.KhtmlOpacity = (opacity / 100); 
        ov_tmp.style.filter = "alpha(opacity=" + opacity + ")";
        ov_tmp.style.backgroundColor='#FFFFFF';
        ov_tmp.style.border='2px solid #FF0000';
        
        ov_tmp.style.left = overviewArea.style.left;
        ov_tmp.style.top = overviewArea.style.top;
        
        ov_tmp.style.width = overviewArea.style.width;
        ov_tmp.style.height = overviewArea.style.height;
        ov_tmp.style.zIndex = 3;
        thisMap.innerDiv.appendChild(ov_tmp);   
    }

}

this.InsertOverviewArea = InsertOverviewArea;
function InsertOverviewArea(TopLeft, BottomRight, isTemp)
{
    var ov_id = 'overviewArea_'+ControlID;
    if (isTemp)
        ov_id = 'overviewAreaTmp_'+ControlID;

    var overviewArea = document.getElementById(ov_id);
    if (overviewArea) {
        overviewArea.parentNode.removeChild(overviewArea);
    }

    overviewArea = document.createElement("div");
    
    overviewArea.style.position = "absolute";
    overviewArea.setAttribute("id", ov_id);
    
    var opacity=40;
    if (isTemp)
        opacity=60;
    
    overviewArea.style.opacity = (opacity / 100); 
    overviewArea.style.MozOpacity = (opacity / 100); 
    overviewArea.style.KhtmlOpacity = (opacity / 100); 
    overviewArea.style.filter = "alpha(opacity=" + opacity + ")";
    if (isTemp)
        overviewArea.style.backgroundColor='#FFFFFF';
    else
        overviewArea.style.backgroundColor='#00DFFF';
    overviewArea.style.border='2px solid #FF0000';
    
    var TopLeftMap = XYToMap(TopLeft[0],TopLeft[1]);
    var BottomRightMap = XYToMap(BottomRight[0],BottomRight[1]);
    overviewArea.style.left = TopLeftMap[0] + 'px';
    overviewArea.style.top = TopLeftMap[1] + 'px';
    
    overviewArea.style.width = (BottomRightMap[0]-TopLeftMap[0]) +"px";
    overviewArea.style.height = (BottomRightMap[1]-TopLeftMap[1]) +"px";
    overviewArea.style.zIndex = 3;
    thisMap.innerDiv.appendChild(overviewArea);
}

this.RemoveOverviewArea = RemoveOverviewArea;
function RemoveOverviewArea(isTemp)
{
    var ov_id = 'overviewArea_'+ControlID;
    if (isTemp)
        ov_id = 'overviewAreaTmp_'+ControlID;

    var overviewArea = document.getElementById(ov_id);
    if (overviewArea) {
        overviewArea.parentNode.removeChild(overviewArea);
    }
}

this.KeepOverviewAreaCentered = KeepOverviewAreaCentered;
function KeepOverviewAreaCentered(isTemp)
{
    var ov_id = 'overviewArea_'+ControlID;
    if (isTemp)
        ov_id = 'overviewAreaTmp_'+ControlID;
        
    var overviewArea = document.getElementById(ov_id);
    //innerDiv = document.getElementById("innerDiv_"+ControlID);

    if (overviewArea)
    {
        var l = stripPx(thisMap.innerDiv.style.left);
        var t = stripPx(thisMap.innerDiv.style.top);
        overviewArea.style.left = (-1)*l+ (thisMap.viewportWidth-stripPx(overviewArea.style.width))/2 + 'px';
        overviewArea.style.top = (-1)*t+ (thisMap.viewportHeight-stripPx(overviewArea.style.height))/2 + 'px';
    }
}


this.MoveOverviewAreaToXY = MoveOverviewAreaToXY;
function MoveOverviewAreaToXY(X, Y,isTemp, withAnimation, returnEval, afterAnim)
{
    if (typeof(afterAnim)=="undefined")
        afterAnim=";";

    var ov_id = 'overviewArea_'+ControlID;
    if (isTemp)
        ov_id = 'overviewAreaTmp_'+ControlID;
        
    var newStart = XYToMap(X, Y);
    var overviewArea = document.getElementById(ov_id);
    
    if (overviewArea)
    {
        if (withAnimation)
        {
            var mLeft = newStart[0] - stripPx(overviewArea.style.left);
            var mTop = newStart[1] - stripPx(overviewArea.style.top);
            var speed = (mLeft+mTop)*5;
            var lala;
            if (returnEval)
            {
                lala = '$("#'+overviewArea.id+'").animate({left: "+='+mLeft+'px",top: "+='+mTop+'px"}, $$SPEED$$ ,"linear", function(){eval("'+afterAnim+'");});';
                return lala;
            }
            else
            {
                lala = '$("#'+overviewArea.id+'").animate({left: "+='+mLeft+'px",top: "+='+mTop+'px"}, '+speed +',"linear", function(){checkTiles();RemoveOverviewArea(true);eval("'+afterAnim+'");});';
                eval(lala);        
            }
        }
        else
        {
            overviewArea.style.left = newStart[0] + 'px';
            overviewArea.style.top = newStart[1] + 'px';
        }
    }
    else
    {
        if (returnEval)
            return afterAnim;
        else
            eval(afterAnim);
    }
}

this.MoveOverviewAreaAtMap = MoveOverviewAreaAtMap;
function MoveOverviewAreaAtMap(mapX, mapY,isTemp)
{
    var ov_id = 'overviewArea_'+ControlID;
    if (isTemp)
        ov_id = 'overviewAreaTmp_'+ControlID;

    var overviewArea = document.getElementById(ov_id);
    if (overviewArea)
    {
        overviewArea.style.left = mapX + 'px';
        overviewArea.style.top = mapY + 'px';
    }
}

this.PutNaviPoint = PutNaviPoint;
function PutNaviPoint(x1,y1,num, InCalloutMap)
{
    var myId = "NaviPoint"+num;
    if (InCalloutMap)
        myId = "NaviPointInCallout"+num;
        
    ClearFromAllPinsCoordsById(myId);
    var naviPoint = document.createElement("div");
    naviPoint.style.position = "absolute";
    naviPoint.setAttribute("id", myId);
    
    var pinCenter = XYToMap(x1,y1);
    var pinLeft = parseInt(pinCenter[0] - 15);
    var pinTop = parseInt(pinCenter[1] - 15);
    AllPinsCoords[AllPinsCoords.length] = [ myId , "NaviPoint", x1,y1,15,15];
    
    naviPoint.style.left = pinLeft + 'px';
    naviPoint.style.top = pinTop + 'px';
    
    naviPoint.style.width = "30px";
    naviPoint.style.height = "30px";
    naviPoint.style.zIndex = 20;
        
    naviPoint.className = "NaviPoint";
    naviPoint.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;";
    thisMap.innerDiv.appendChild(naviPoint);
    //new OpacityObject(myId,'resources/images/NaviPoint').setBackground();

    if (!InCalloutMap)
    {
        var np = document.getElementById(myId);
        if (browser.isIElLessThan7)
            np.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='resources/images/NaviPointBlanc.png');";
        else
            np.style.background = "url(resources/images/NaviPointBlanc.png)";
    
        //$("#"+myId).css('background-image','url(resources/images/NaviPointBlanc.png)');
        $("#"+myId).bind("mouseover", function(){ShowNaviPoint(num);});
        $("#"+myId).bind("mouseout", function(){HideNaviPoint(num);});
        $("#"+myId).bind("click",function(){DisplayCalloutWithMap(x1,y1,num);});
    }
    else
    {
        var np = document.getElementById(myId);
        if (browser.isIElLessThan7)
            np.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='resources/images/NaviPoint.png');";
        else
            np.style.background = "url(resources/images/NaviPoint.png)";
            
        //$("#"+myId).css('background-image','url(resources/images/NaviPoint.png)');
        $("#"+myId).html(num);
    }
}
this.ShowNaviPoint =ShowNaviPoint;
function ShowNaviPoint(num)
{
    var np = document.getElementById("NaviPoint"+num);
    if (browser.isIElLessThan7)
        np.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='resources/images/NaviPoint.png');";
    else
        np.style.background = "url(resources/images/NaviPoint.png)";
    //$("#NaviPoint"+num).css('background-image','url(resources/images/NaviPoint.png)');
    $("#NaviPoint"+num).html(num);
}
var numInCallout=-1;
this.HideNaviPoint =HideNaviPoint;
function HideNaviPoint(num)
{
    if (numInCallout!=num)
    {
    
        var np = document.getElementById("NaviPoint"+num);
        if (np!=null)
        {
            if (browser.isIElLessThan7)
                np.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='resources/images/NaviPointBlanc.png');";
            else
                np.style.background = "url(resources/images/NaviPointBlanc.png)";
        } 
        //$("#NaviPoint"+num).css('background-image','url(resources/images/NaviPointBlanc.png)');
        $("#NaviPoint"+num).html("&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;");
    }
}

this.ClearNaviPoints = ClearNaviPoints;
function ClearNaviPoints()
{
    $(".NaviPoint").remove();
    ClearFromAllPinsCoordsByClass("NaviPoint");
}

this.InsertPoiPin = InsertPoiPin;
function InsertPoiPin(x,y,name,num,icon,type,subtype,cls, BigCallout)
{
    var myId = "PoiPin"+num+"_"+type+"_"+subtype+cls;
    myId = replaceAll(myId,"-","");
    //ClearFromAllPinsCoordsById(myId);
    var poiPoint = document.createElement("div");
    poiPoint.style.position = "absolute";
    poiPoint.setAttribute("id", myId);
    
    var pinCenter = XYToMap(x,y);
    var pinLeft = parseInt(pinCenter[0] - poipinOffsetX);
    var pinTop = parseInt(pinCenter[1] - poipinOffsetY);
    AllPinsCoords[AllPinsCoords.length] = [ myId, cls, x,y,poipinOffsetX,poipinOffsetY];
    
    poiPoint.style.left = pinLeft + 'px';
    poiPoint.style.top = pinTop + 'px';
    
    poiPoint.style.width = "44px";
    poiPoint.style.height = "25px";
    poiPoint.style.zIndex = 5;
        
    poiPoint.className="PoiPin "+cls;
    
    var iconPic="";
    if (icon!='' && icon !=null)
    {
        iconPic = "<img id='Ico_"+myId+"' class=\"PoiIcon\" src='resources/images/poi/small/"+ icon +"'/>";
    }
//    if (BigCallout)
//        poiPoint.innerHTML = "<span class='PoiNumTextBlack'>"+GetLetter(num)+"</span>"+iconPic;
//    else
        poiPoint.innerHTML = "<span class='PoiNumTextWhite'>"+GetLetter(num)+"</span>"+iconPic;
    
    thisMap.innerDiv.appendChild(poiPoint);
    //new OpacityObject(myId,'resources/images/poiPoint').setBackground();

    if (BigCallout)
        new OpacityObject(myId,'resources/images/interest').setBackground();
    else
        new OpacityObject(myId,'resources/images/interest').setBackground();
        
        
        
    if (BigCallout)
        $("#"+myId).bind("click",function(){DisplayBigCallout(num,type,subtype,icon);});
    else
        $("#"+myId).bind("click",function(){DisplayPoiCallout(num,type,subtype,icon);});
}


    
this.InsertPin = InsertPin;
function InsertPin(pinLeft, pinTop, pinHtml, pinType, pinId, animateToPosition, anim_none)
{
    var pinClass;
    switch (pinType)
    {
        case 0:
        pinClass = "addressPin";
        break;
        case 1:
        pinClass = "startPin";
        break;
        case 2:
        pinClass = "endPin";
        break;
    }
    if (pinType>0)
        ClearRoute(true,false);

    if (IsPickerMap)    
    {
        $(".addressPin").remove();
        ClearFromAllPinsCoordsById("addressPin");

        pickerX = pinLeft;
        pickerY = pinTop;
    }
    else
    {
        $("#"+pinId).remove();
        ClearFromAllPinsCoordsById(pinId);
    }
    HideCallouts();
    

    if (animateToPosition)
    {
        pinMapCenter = XYToMap(pinLeft, pinTop);
        //innerDiv = document.getElementById("innerDiv_"+ControlID);
        var mLeft = (-1)*(pinMapCenter[0] - thisMap.viewportWidth/2) - stripPx(thisMap.innerDiv.style.left);
        var mTop = (-1)*(pinMapCenter[1] - thisMap.viewportHeight/2) - stripPx(thisMap.innerDiv.style.top);
        var lala = '$(innerDivJQID).animate({left: "+='+mLeft+'px",top: "+='+mTop+'px"}, 300,"linear", function(){InsertPin(pinLeft, pinTop, pinHtml, pinType, pinId, false);checkTiles();});';
        eval(lala);
        return;    
    }


    


    var pinImage = document.createElement("div");
    pinImage.style.position = "absolute";
    pinImage.setAttribute("id", pinId);
//    switch (pinType)
//    {
//        case 0:
//        pinImage.src='resources/images/general_point_3.png';
//        break;
//        case 1:
//        pinImage.src='resources/images/start_point_2.png';
//        break;
//        case 2:
//        pinImage.src='resources/images/end_point_2.png';
//        break;
//    }
    AllPinsCoords[AllPinsCoords.length] = [ pinId , pinClass, pinLeft, pinTop, pinOffsetX, pinOffsetY];
    Recenter_Zoom=GetLevel();
    Recenter_X = pinLeft;
    Recenter_Y = pinTop;

    var pinCenter = XYToMap(pinLeft,pinTop);
    
    pinImage.style.left = parseInt(pinCenter[0] - pinOffsetX) + 'px';
    if (anim_none)
        pinImage.style.top = parseInt(pinCenter[1] - pinOffsetY) + 'px';
    else
        pinImage.style.top = parseInt(pinCenter[1] - 400 - pinOffsetY) + 'px';
    
    pinImage.style.width = "21px";
    pinImage.style.height = "27px";
    pinImage.style.zIndex = 15;
    thisMap.innerDiv.appendChild(pinImage);
    
    switch (pinType)
    {
        case 0:
        new OpacityObject(pinId,'resources/images/general').setBackground();
        break;
        case 1:
        new OpacityObject(pinId,'resources/images/start').setBackground();
        break;
        case 2:
        new OpacityObject(pinId,'resources/images/end').setBackground();
        break;
        case 3:
        new OpacityObject(pinId,'resources/images/general_praxi').setBackground();
        break;
    }
    
    var m;
    eval('m =$("#' + pinId + '");');
    
    m.addClass(pinClass);
    m.addClass("Pin");
    m.bind("click",function(){eval("DisplayCallout("+stripPx(pinImage.style.left)+","+stripPx(pinImage.style.top)+",'"+ pinHtml+"',\""+pinId+"\");");});
	
	if (anim_none!=true)
	{	
	    m.animate({ 
            top: "+=400px"
        }, 300,  "linear", 
        function(){
            eval("DisplayCallout("+stripPx(pinImage.style.left)+","+stripPx(pinImage.style.top)+",'"+ pinHtml+"',\""+pinId+"\");");
        });
    }
    if (thisMap.MyOverview)
    {
        var center = GetCenterCoords();
        CenterAtCoords(center[0],center[1]);
    }
    return pinImage;
}

this.ClearAll = ClearAll;
function ClearAll(pinType)
{
    var pinClass = "Pin";
    switch (pinType)
    {
        case 0:
        pinClass = "addressPin";
        break;
        case 1:
        pinClass = "startPin";
        break;
        case 2:
        pinClass = "endPin";
        break;
    }
    $("."+pinClass).remove();
    ClearFromAllPinsCoordsByClass(pinClass);
    
    HideCallouts();
}

this.ClearFromAllPinsCoordsById = ClearFromAllPinsCoordsById;
function ClearFromAllPinsCoordsById(id)
{
    for (var i=0; i< AllPinsCoords.length; i++)
    {
        if (AllPinsCoords[i][0] == id)
        {
            AllPinsCoords.splice(i,1); //ie remove from index i one item
            return;
        }
    }
}

this.ClearFromAllPinsCoordsByClass = ClearFromAllPinsCoordsByClass;
function ClearFromAllPinsCoordsByClass(cl)
{
    for (var i=0; i< AllPinsCoords.length; i++)
    {
        if (AllPinsCoords[i][1] == cl)
        {
            AllPinsCoords.splice(i,1); //ie remove from index i one item
            i--;
        }
    }
}

function GetPinCoords(pin,pinType)
{
    var myPin = document.getElementById(pin);
    var x = stripPx(myPin.style.left) + pinOffsetX;
    var y = stripPx(myPin.style.top) + pinOffsetY;
    if (pinType==1)
    {
//        x = stripPx(myPin.style.left) + smallDialogOffsetX;
//        y = stripPx(myPin.style.top)  + smallDialogOffsetY;
        return [curDialogX,curDialogY];
    }
    else if (pinType==2)
    {
        x = stripPx(myPin.style.left) + poipinOffsetX;
        y = stripPx(myPin.style.top)  + poipinOffsetY;
    }
    return MapToXY(x,y);
}

function DisplayCallout(pinImageLeft, pinImageTop, pHtml, pinId)
{
    if (pHtml=='')
        return;
    HideCallouts();

    var container = document.createElement("div");
    container.style.position = "absolute";
    var pinLeft = pinImageLeft + pinOffsetX;
    var pinTop = pinImageTop + pinOffsetY;
    var dialogLeft = pinLeft - smallDialogOffsetX;
    var dialogTop = pinTop - smallDialogOffsetY;
    var center = MapToXY(pinLeft,pinTop);
    curDialogX=center[0];
    curDialogY=center[1];
    container.style.left = dialogLeft + "px";
    container.style.top = dialogTop + "px";
    AllPinsCoords[AllPinsCoords.length] = [ "pinDialog" , "", center[0], center[1],smallDialogOffsetX,smallDialogOffsetY];

    container.style.width = "400px";
    container.style.height = "150px";
    container.style.zIndex = 16;
    container.setAttribute("id", "pinDialog");
    
    
    var dialog = document.createElement("div");
    dialog.style.position = "absolute";
    dialog.style.left = "0px";
    dialog.style.top = "0px";
    dialog.style.width = "400px";
    dialog.style.height = "150px";
    dialog.style.zIndex = 0;
    
    if (browser.isIElLessThan7)
        dialog.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='resources/images/balloon_300x150.png');";
    else
        dialog.style.background = "url(resources/images/balloon_300x150.png)";
    
    
    container.appendChild(dialog);
    
    
    thisMap.innerDiv.appendChild(container);
    
    var message = "";
    
    
    if (unescape(pHtml)!='')
        message = "Διεύθυνση: <span id=\"addressInCallout\">"+unescape(pHtml);
    
    
    
    var NonCityGuide="";
    if (!IsCityGuide)
        NonCityGuide="<tr><td align='left'><span style=\"align:center\" id=\"pinDialogModelLabel\" class=\"blueTxt11B\"></span> </td></tr>";

	if (!IsForPost)
		$.get(handlers_url + "GetModelEETT.ashx?x=" + center[0] + "&y=" + center[1], function(data) {
			if (data.toString().substr(0,2)=="Δε")
				$("#pinDialogModelLabel").html('Απόσταση από τηλεπικοινωνιακό κέντρο: ' + data);
			else
				$("#pinDialogModelLabel").html('Απόσταση από τηλεπικοινωνιακό κέντρο: έως '+data);
			});
		
		
	var wifi = "<tr><td align='left'><span id='pinDialogODXG' class='lnkBlue10'>Καταχώρηση wifi hotspot στο σημείο αυτό</span></td></tr>";
	if (IsForPost)
		wifi = "";
    $("#pinDialog").append("<div style='position:absolute;left:10px;top:0px;z-index:21;width:100%;height:100%'><table 'position:absolute;left:0px;top:0px;z-index:20' height='80%' width='83%'>" +
      "<tr style=\"border:1px Black solid;height:50px\"><td align='center'>"+message+"</span></td></tr>" +
      NonCityGuide +
      "<tr><td align='left'>&nbsp; </td></tr>" +
      wifi +
      "<tr><td align='left'>&nbsp; </td></tr>" +
      "</table></div>");

//if (!IsCityGuide)
//{
    $("#pinDialogODXG").bind("click", function() { ShowAithshForm(true); });
    $("#pinDialogODXG").bind("mouseover",function(){$("#pinDialogODXG").css("text-decoration","underline");});
    $("#pinDialogODXG").bind("mouseout",function(){$("#pinDialogODXG").css("text-decoration","none");});

//    
//    $("#pinDialogTakto").bind("click",function(){eval('setPinAsGetPoleoTaktoODXG("pinDialog",true, 1,2);');});
//    $("#pinDialogTakto").bind("mouseover",function(){$("#pinDialogTakto").css("text-decoration","underline");});
//    $("#pinDialogTakto").bind("mouseout",function(){$("#pinDialogTakto").css("text-decoration","none");});


//    $("#pinDialogPoleo").bind("click",function(){eval('setPinAsGetPoleoTaktoODXG("pinDialog",true, 1,1);');});
//    $("#pinDialogPoleo").bind("mouseover",function(){$("#pinDialogPoleo").css("text-decoration","underline");});
//    $("#pinDialogPoleo").bind("mouseout",function(){$("#pinDialogPoleo").css("text-decoration","none");});
//}

//    $("#pinDialogStart").bind("click",function(){eval('setPinAsDepart("pinDialog",true, 1);');});
//    $("#pinDialogStart").bind("mouseover",function(){$("#pinDialogStart").css("text-decoration","underline");});
//    $("#pinDialogStart").bind("mouseout",function(){$("#pinDialogStart").css("text-decoration","none");});
//    
//    $("#pinDialogFinish").bind("click",function(){eval('setPinAsDest("pinDialog",true, 1);');});
//    $("#pinDialogFinish").bind("mouseover",function(){$("#pinDialogFinish").css("text-decoration","underline");});
//    $("#pinDialogFinish").bind("mouseout",function(){$("#pinDialogFinish").css("text-decoration","none");});

//    
    var close = document.createElement("div");
    close.style.position = "absolute";
    close.style.backgroundImage = "url(resources/images/close_grey.gif)";
    close.style.right = "70px";
    close.style.top = "10px";

    close.style.width = "15px";
    close.style.height = "15px";
    close.style.zIndex = 30;
    close.style.cursor = "pointer";
    close.setAttribute("id", "pinDialogClose");
    
    container.appendChild(close);
    
    //new OpacityObject('pinDialog','resources/images/balloon_300x150_3').setBackground();
    $("#pinDialogClose").bind("click",
    function(){
        HideCallouts();
    }
    );
    
    var mapX = (-1)*stripPx(thisMap.innerDiv.style.left);
    var mapY = (-1)*stripPx(thisMap.innerDiv.style.top);
    
    var dialogLeft = stripPx(container.style.left);
    var dialogTop = stripPx(container.style.top);
    
    var dialogWidth = stripPx(container.style.width);
    var dialogHeight = stripPx(container.style.height);
    
    var mLeft = 0;
    var mTop = 0;
    
    if (dialogLeft < mapX)
        mLeft = mapX - dialogLeft;
    else if (dialogLeft + 309 > mapX + thisMap.viewportWidth)
        mLeft = mapX + thisMap.viewportWidth - dialogLeft-309;

    if (dialogTop < mapY)
        mTop = mapY - dialogTop;
    else if (dialogTop + 229 > mapY + thisMap.viewportHeight)
        mTop = mapY + thisMap.viewportHeight - dialogTop-229;

    if (mLeft !=0 || mTop!=0)
    {
        ;//eval('$(innerDivJQID).animate({left: "+='+mLeft+'px",top: "+='+mTop+'px"}, 500,"linear", function(){checkTiles();RefreshRoute();});');
    }
    
}

function DisplayCalloutPoleoTakto(pinImageLeft, pinImageTop, pHtml, pinId, isPoleo)
{
//    if (pHtml=='')
//        if (isPoleo==0)
//            alert("Δεν βρέθηκαν πράξεις τακτοποίησης");
//        else
//            alert("Δεν βρέθηκαν πολεοδομικά στοιχεία");
    HideCallouts();
    
    var Diatagmata;
    var OikTetDimou="";
    var OikTetPehode="";
    
    if (isPoleo==1)
    {
        var DiatagmataAll = pHtml.toString().split('%%');
        Diatagmata = DiatagmataAll[0].split('$');
        var lala = DiatagmataAll[1].split('%');
        if (lala.length==2)
        {
            OikTetDimou=lala[0];
            OikTetPehode=lala[1];
        }
    }
    else
    {
        Diatagmata = pHtml.toString().split('$');
    }
    
    var Diatagma = new Array();
    for (var i=0;i<Diatagmata.length;i++)
        Diatagma[i] = Diatagmata[i].split('#');
    

    var container = document.createElement("div");
    container.style.position = "absolute";
    var pinLeft = pinImageLeft + pinOffsetX;
    var pinTop = pinImageTop + pinOffsetY;
    var dialogLeft = pinLeft - mediumDialogOffsetX;
    var dialogTop = pinTop - mediumDialogOffsetY;
    var center = MapToXY(pinLeft,pinTop);
    curDialogX=center[0];
    curDialogY=center[1];
    container.style.left = dialogLeft + "px";
    container.style.top = dialogTop + "px";
    AllPinsCoords[AllPinsCoords.length] = [ "pinDialog" , "", center[0], center[1],mediumDialogOffsetX,mediumDialogOffsetY];

    container.style.width = "400px";
    container.style.height = "300px";
    container.style.zIndex = 16;
    container.setAttribute("id", "pinDialog");
    
    
    var dialog = document.createElement("div");
    dialog.style.position = "absolute";
    dialog.style.left = "0px";
    dialog.style.top = "0px";
    dialog.style.width = "400px";
    dialog.style.height = "300px";
    dialog.style.zIndex = 0;
    
    if (browser.isIElLessThan7)
        dialog.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='resources/images/balloon_300x150.png');";
    else
        dialog.style.background = "url(resources/images/balloon_300x300.png)";
    
    
    container.appendChild(dialog);
    thisMap.innerDiv.appendChild(container);
//    $("#pinDialog").append("<div style='position:absolute;left:10px;top:0px;z-index:21;width:100%;height:100%'><table 'position:absolute;left:0px;top:0px;z-index:20' height='80%' width='83%'>" +
//      "<tr style=\"border:1px Black solid;height:50px\"><td align='center'>Διεύθυνση: <span id=\"addressInCallout\">"+unescape(pHtml)+"</span></td></tr>" +
//      "<tr><td align='left'>&nbsp;<span id=\"pinDialogPoleo\" class=\"calloutLink\">Πολεοδομικά στοιχεία</span> - <span id=\"pinDialogTakt\" class=\"calloutLink\">Πράξεις τακτοποίησης</span> </td></tr>" +
//      "<tr><td align='left'>&nbsp;Πλοήγηση: Ορισμός ως <span id=\"pinDialogStart\" class=\"calloutLink\">Αφετηρία</span> - <span id=\"pinDialogFinish\" class=\"calloutLink\">Προορισμός</span> </td></tr>" +
//      "</table></div>");
    
    
    var calloutTitle;
    if (isPoleo)
        calloutTitle="Πολεοδομικά διατάγματα";
    else
        calloutTitle="Πράξεις τακτοποίησης";
    
    
        $("#pinDialog").append("<div style='z-index:2;position:absolute;'><div id='MediumPoiDialogHeader'>"+calloutTitle+"</div><div id='MediumPoiDialogBody'>"+
      "<div id='MediumPoiDialogItems'><span id=\"addressInCallout2\">Δεν βρέθηκαν στοιχεία</span></div>" +
      "<div id='MediumPoiDialogTabs'></div></div>" +
      "<div id='MediumPoiDialogNavi'><span id='NaviSpan'>Πλοήγηση: Ορισμός ως <span id=\"pinDialogStart\" class=\"calloutLink\">Αφετηρία</span> - <span id=\"pinDialogFinish\" class=\"calloutLink\">Προορισμός</span></span></div></div>");;

    //thisMap.innerDiv.appendChild(dialog);
    
    var bpdt = document.getElementById("MediumPoiDialogTabs");
    var fDiv;
    var ul = document.createElement("ul");
    var ToEval='';
    var i=0;
    
   var foundText = false;
    
    if (Diatagmata.length>1)
    {
    
    for (var i=0;i<Diatagmata.length-1;i++)
    {
        foundText = true;
        var li = document.createElement("li");
        li.setAttribute("id", "li_"+i);
        ToEval += '$("#li_'+i+'").html("<a href=\'#div_li_'+i+'\'><span>' + (i+1) + '</span></a>");';
        ul.appendChild(li);

        var div = document.createElement("div");
        div.setAttribute("id", "div_li_"+i);
        div.className="MediumCalloutTabText";
        var Formatted;
        if (isPoleo==1)
        {
            Formatted = "Κ. Δήμου: " + OikTetDimou + " Κ. ΥΠΕΧΩΔΕ: " + OikTetPehode +"<br/> AA: "+ Diatagma[i][2] + "&nbsp;&nbsp;AA_1: "+ Diatagma[i][1] + " <span id='Ar_dgr"+i+"' class='calloutLink'>Διάγραμμα</span> - <span id='Ar_fek"+i+"' class='calloutLink'>ΦΕΚ</span><br/>"
                      + "Διάταγμα: "+ replaceAll(Diatagma[i][3].toString(),"12:00:00 πμ","") +"&nbsp;&nbsp;ΦΕΚ: "+ Diatagma[i][4]+ "<br/>"
                      + "<b>" + Diatagma[i][5]+ "</b><br/>";
        }
        else
        {
            Formatted = "Κωδικός: "+ Diatagma[i][1] + "<br/>" +
            "<br/><span id='Ar_lektiko"+i+"' class='calloutLink'>Αρχείο λεκτικού</span> <br/><br/> " +
            "<span id='Ar_apofasi"+i+"' class='calloutLink'>Αρχείο απόφασης</span> <br/><br/> " +
            "<span id='Ar_diatagma"+i+"' class='calloutLink'>Αρχείο διατάγματος</span>";

        }
            
        ToEval += '$("#div_li_'+i+'").html("'+replaceAll(replaceAll(replaceAll(Formatted,'\r\n',''),'\n',''),'"',"'")+'");';
        
        if (isPoleo==0)
        {
            ToEval += "$('#Ar_lektiko"+i+"').bind('click',function(){window.open('Docs/Takto/LEK/LEK$%$%.pdf');});";
            ToEval += "$('#Ar_apofasi"+i+"').bind('click',function(){window.open('Docs/Takto/DEC/DEC$%$%.pdf');});";
            ToEval += "$('#Ar_diatagma"+i+"').bind('click',function(){window.open('Docs/Takto/DCT/DCT$%$%.pdf');});";
            
            ToEval = replaceAll(ToEval,"$%$%",Diatagma[i][1]);
        
            ToEval += "$('#Ar_lektiko"+i+"').bind('mouseover',function(){$('#Ar_lektiko"+i+"').css('text-decoration','underline');});"+
            "$('#Ar_lektiko"+i+"').bind('mouseout',function(){$('#Ar_lektiko"+i+"').css('text-decoration','none');});"+
            "$('#Ar_apofasi"+i+"').bind('mouseover',function(){$('#Ar_apofasi"+i+"').css('text-decoration','underline');});"+
            "$('#Ar_apofasi"+i+"').bind('mouseout',function(){$('#Ar_apofasi"+i+"').css('text-decoration','none');});"+
            "$('#Ar_diatagma"+i+"').bind('mouseover',function(){$('#Ar_diatagma"+i+"').css('text-decoration','underline');});"+
            "$('#Ar_diatagma"+i+"').bind('mouseout',function(){$('#Ar_diatagma"+i+"').css('text-decoration','none');});";
        }
        else
        {
            ToEval += "$('#Ar_dgr"+i+"').bind('click',function(){window.open('Docs/Poleodomika/DGR/DGR$%$1%.pdf');});";
            ToEval += "$('#Ar_fek"+i+"').bind('click',function(){window.open('Docs/Poleodomika/FEK/FEK$%$2%.pdf');});";
            ToEval = replaceAll(ToEval,"$%$1%",Diatagma[i][1]);
            ToEval = replaceAll(ToEval,"$%$2%",Diatagma[i][2]);
            ToEval += "$('#Ar_dgr"+i+"').bind('mouseover',function(){$('#Ar_dgr"+i+"').css('text-decoration','underline');});"+
            "$('#Ar_dgr"+i+"').bind('mouseout',function(){$('#Ar_dgr"+i+"').css('text-decoration','none');});"+
            "$('#Ar_fek"+i+"').bind('mouseover',function(){$('#Ar_fek"+i+"').css('text-decoration','underline');});"+
            "$('#Ar_fek"+i+"').bind('mouseout',function(){$('#Ar_fek"+i+"').css('text-decoration','none');});";
        }

        
        bpdt.appendChild(div);
        if (typeof(fDiv)=="undefined") 
            fDiv = div;
    }
    bpdt.insertBefore(ul,fDiv);
    eval(ToEval);
    
    
    
    
    $("#MediumPoiDialogTabs > ul").tabs();

    TB_Init();
    
    $(".ui-tabs-panel").css("width","280px");
    $(".ui-tabs-panel").css("height","160px");
    
    }
    else
    {
        $("#MediumPoiDialogItems").show();
    }
    
    

//    $("#pinDialogPoleo").bind("click",function(){eval('setPinAsGetPoleo("pinDialog",true, 1);');});
//    $("#pinDialogPoleo").bind("mouseover",function(){$("#pinDialogPoleo").css("text-decoration","underline");});
//    $("#pinDialogPoleo").bind("mouseout",function(){$("#pinDialogPoleo").css("text-decoration","none");});


    $("#pinDialogStart").bind("click",function(){eval('setPinAsDepart("pinDialog",true, 1);');});
    $("#pinDialogStart").bind("mouseover",function(){$("#pinDialogStart").css("text-decoration","underline");});
    $("#pinDialogStart").bind("mouseout",function(){$("#pinDialogStart").css("text-decoration","none");});
    
    $("#pinDialogFinish").bind("click",function(){eval('setPinAsDest("pinDialog",true, 1);');});
    $("#pinDialogFinish").bind("mouseover",function(){$("#pinDialogFinish").css("text-decoration","underline");});
    $("#pinDialogFinish").bind("mouseout",function(){$("#pinDialogFinish").css("text-decoration","none");});

    
    var close = document.createElement("div");
    close.style.position = "absolute";
    close.style.backgroundImage = "url(resources/images/close_grey.gif)";
    close.style.right = "100px";
    close.style.top = "10px";

    close.style.width = "15px";
    close.style.height = "15px";
    close.style.zIndex = 30;
    close.style.cursor = "pointer";
    close.setAttribute("id", "pinDialogClose");
    
    container.appendChild(close);
    
    //new OpacityObject('pinDialog','resources/images/balloon_300x150_3').setBackground();
    $("#pinDialogClose").bind("click",
    function(){
        HideCallouts();
    }
    );
    
    var mapX = (-1)*stripPx(thisMap.innerDiv.style.left);
    var mapY = (-1)*stripPx(thisMap.innerDiv.style.top);
    
    var dialogLeft = stripPx(container.style.left);
    var dialogTop = stripPx(container.style.top);
    
    var dialogWidth = stripPx(container.style.width);
    var dialogHeight = stripPx(container.style.height);
    
    var mLeft = 0;
    var mTop = 0;
    
    if (dialogLeft < mapX)
        mLeft = mapX - dialogLeft;
    else if (dialogLeft + 309 > mapX + thisMap.viewportWidth)
        mLeft = mapX + thisMap.viewportWidth - dialogLeft-309;

    if (dialogTop < mapY)
        mTop = mapY - dialogTop;
    else if (dialogTop + 229 > mapY + thisMap.viewportHeight)
        mTop = mapY + thisMap.viewportHeight - dialogTop-229;

    if (mLeft !=0 || mTop!=0)
    {
        ;//eval('$(innerDivJQID).animate({left: "+='+mLeft+'px",top: "+='+mTop+'px"}, 500,"linear", function(){checkTiles();RefreshRoute();});');
    }
    
}

function DisplayCalloutODXG(pinImageLeft, pinImageTop, pHtml, pinId)
{
//    if (pHtml=='')
//        return;
    HideCallouts();
    var ODXGs = pHtml.toString().split('$');
    var ODXG = new Array();
    for (var i=0;i<ODXGs.length;i++)
        ODXG[i] = ODXGs[i].split('#');
    

    var container = document.createElement("div");
    container.style.position = "absolute";
    var pinLeft = pinImageLeft + pinOffsetX;
    var pinTop = pinImageTop + pinOffsetY;
    var dialogLeft = pinLeft - mediumDialogOffsetX;
    var dialogTop = pinTop - mediumDialogOffsetY;
    var center = MapToXY(pinLeft,pinTop);
    curDialogX=center[0];
    curDialogY=center[1];
    container.style.left = dialogLeft + "px";
    container.style.top = dialogTop + "px";
    AllPinsCoords[AllPinsCoords.length] = [ "pinDialog" , "", center[0], center[1],mediumDialogOffsetX,mediumDialogOffsetY];

    container.style.width = "400px";
    container.style.height = "300px";
    container.style.zIndex = 16;
    container.setAttribute("id", "pinDialog");
    
    
    var dialog = document.createElement("div");
    dialog.style.position = "absolute";
    dialog.style.left = "0px";
    dialog.style.top = "0px";
    dialog.style.width = "400px";
    dialog.style.height = "300px";
    dialog.style.zIndex = 0;
    
    if (browser.isIElLessThan7)
        dialog.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='resources/images/balloon_300x150.png');";
    else
        dialog.style.background = "url(resources/images/balloon_300x300.png)";
    
    
    container.appendChild(dialog);
    thisMap.innerDiv.appendChild(container);
//    $("#pinDialog").append("<div style='position:absolute;left:10px;top:0px;z-index:21;width:100%;height:100%'><table 'position:absolute;left:0px;top:0px;z-index:20' height='80%' width='83%'>" +
//      "<tr style=\"border:1px Black solid;height:50px\"><td align='center'>Διεύθυνση: <span id=\"addressInCallout\">"+unescape(pHtml)+"</span></td></tr>" +
//      "<tr><td align='left'>&nbsp;<span id=\"pinDialogPoleo\" class=\"calloutLink\">Πολεοδομικά στοιχεία</span> - <span id=\"pinDialogTakt\" class=\"calloutLink\">Πράξεις τακτοποίησης</span> </td></tr>" +
//      "<tr><td align='left'>&nbsp;Πλοήγηση: Ορισμός ως <span id=\"pinDialogStart\" class=\"calloutLink\">Αφετηρία</span> - <span id=\"pinDialogFinish\" class=\"calloutLink\">Προορισμός</span> </td></tr>" +
//      "</table></div>");
    
    
    var calloutTitle;
    calloutTitle="Χρήσεις γης/Όροι δόμησης";
    
    
    
        $("#pinDialog").append("<div style='z-index:2;position:absolute;'><div id='MediumPoiDialogHeader'>"+calloutTitle+"</div><div id='MediumPoiDialogBody'>"+
      "<div id='MediumPoiDialogItems'><span id=\"addressInCallout2\">Δεν βρέθηκαν στοιχεία</span></div>" +
      "<div id='MediumPoiDialogTabs'></div></div>" +
      "<div id='MediumPoiDialogNavi'><span id='NaviSpan'>Πλοήγηση: Ορισμός ως <span id=\"pinDialogStart\" class=\"calloutLink\">Αφετηρία</span> - <span id=\"pinDialogFinish\" class=\"calloutLink\">Προορισμός</span></span></div></div>");;

    //thisMap.innerDiv.appendChild(dialog);
    
    var bpdt = document.getElementById("MediumPoiDialogTabs");
    var fDiv;
    var ul = document.createElement("ul");
    var ToEval='';
    var i=0;
    
   var foundText = false;
    
    if (ODXGs.length>1)
    {
    
    for (var i=0;i<ODXGs.length-1;i++)
    {
        foundText = true;
        var li = document.createElement("li");
        li.setAttribute("id", "li_"+i);
        
        if (ODXG[i][0]=="0")
            ToEval += '$("#li_'+i+'").html("<a href=\'#div_li_'+i+'\'><span>Σημειακή</span></a>");';
        else if (ODXG[i][0]=="1")
            ToEval += '$("#li_'+i+'").html("<a href=\'#div_li_'+i+'\'><span>Γραμμική</span></a>");';
        else if (ODXG[i][0]=="2")
            ToEval += '$("#li_'+i+'").html("<a href=\'#div_li_'+i+'\'><span>Πολυγωνική</span></a>");';
        else if (ODXG[i][0]=="3")
            ToEval += '$("#li_'+i+'").html("<a href=\'#div_li_'+i+'\'><span>Όροι</span></a>");';
        
        ul.appendChild(li);

        var div = document.createElement("div");
        div.setAttribute("id", "div_li_"+i);
        div.className="MediumCalloutTabText";
        var Formatted;
        if (ODXG[i][0]=="0")
        {
            Formatted = "Κωδικός: "+ ODXG[i][1] + "<br/>Περιγραφή: "+ ODXG[i][2];
        }
        else if (ODXG[i][0]=="1")
        {
            Formatted = "Κωδικός: "+ ODXG[i][1] + "<br/>Περιγραφή: "+ ODXG[i][2];
        }
        else if (ODXG[i][0]=="2")
        {
            Formatted = "Κωδικός: "+ ODXG[i][1] + "<br/>Περιγραφή: "+ ODXG[i][2];
        }
        else if (ODXG[i][0]=="3")
        {
            Formatted =  "Πινακίδα: <b>"+ ODXG[i][1] + "</b> Τομέας: <b>"+ ODXG[i][2] + "</b> Ύψος: <b>"+ ODXG[i][3] +"</b><br/>";
            Formatted += "Ελ. Πρόσωπο: <b>"+ ODXG[i][4] + "</b> Συντελεστής: <b>"+ ODXG[i][5] + "</b>  Ελ. Εμβαδό: <b>"+ ODXG[i][6] +"</b><br/>";
            Formatted += "Διάταγμα: <b>"+ ODXG[i][7] + "</b> Σύστημα: <b>"+ ODXG[i][8] + "</b><br/>";
            Formatted += "Σχόλια: "+ ODXG[i][9] + "<br/>";

        }
            
        ToEval += '$("#div_li_'+i+'").html("'+Formatted+'");';
        
        
        bpdt.appendChild(div);
        if (typeof(fDiv)=="undefined") 
            fDiv = div;
    }
    bpdt.insertBefore(ul,fDiv);
    eval(ToEval);
    
    
    
    
    $("#MediumPoiDialogTabs > ul").tabs();

    TB_Init();
    
    $(".ui-tabs-panel").css("width","280px");
    $(".ui-tabs-panel").css("height","160px");
    
    }
    else
    {
        $("#MediumPoiDialogItems").show();
    }
    
    

//    $("#pinDialogPoleo").bind("click",function(){eval('setPinAsGetPoleo("pinDialog",true, 1);');});
//    $("#pinDialogPoleo").bind("mouseover",function(){$("#pinDialogPoleo").css("text-decoration","underline");});
//    $("#pinDialogPoleo").bind("mouseout",function(){$("#pinDialogPoleo").css("text-decoration","none");});


    $("#pinDialogStart").bind("click",function(){eval('setPinAsDepart("pinDialog",true, 1);');});
    $("#pinDialogStart").bind("mouseover",function(){$("#pinDialogStart").css("text-decoration","underline");});
    $("#pinDialogStart").bind("mouseout",function(){$("#pinDialogStart").css("text-decoration","none");});
    
    $("#pinDialogFinish").bind("click",function(){eval('setPinAsDest("pinDialog",true, 1);');});
    $("#pinDialogFinish").bind("mouseover",function(){$("#pinDialogFinish").css("text-decoration","underline");});
    $("#pinDialogFinish").bind("mouseout",function(){$("#pinDialogFinish").css("text-decoration","none");});

    
    var close = document.createElement("div");
    close.style.position = "absolute";
    close.style.backgroundImage = "url(resources/images/close_grey.gif)";
    close.style.right = "100px";
    close.style.top = "10px";

    close.style.width = "15px";
    close.style.height = "15px";
    close.style.zIndex = 30;
    close.style.cursor = "pointer";
    close.setAttribute("id", "pinDialogClose");
    
    container.appendChild(close);
    
    //new OpacityObject('pinDialog','resources/images/balloon_300x150_3').setBackground();
    $("#pinDialogClose").bind("click",
    function(){
        HideCallouts();
    }
    );
    
    var mapX = (-1)*stripPx(thisMap.innerDiv.style.left);
    var mapY = (-1)*stripPx(thisMap.innerDiv.style.top);
    
    var dialogLeft = stripPx(container.style.left);
    var dialogTop = stripPx(container.style.top);
    
    var dialogWidth = stripPx(container.style.width);
    var dialogHeight = stripPx(container.style.height);
    
    var mLeft = 0;
    var mTop = 0;
    
    if (dialogLeft < mapX)
        mLeft = mapX - dialogLeft;
    else if (dialogLeft + 309 > mapX + thisMap.viewportWidth)
        mLeft = mapX + thisMap.viewportWidth - dialogLeft-309;

    if (dialogTop < mapY)
        mTop = mapY - dialogTop;
    else if (dialogTop + 229 > mapY + thisMap.viewportHeight)
        mTop = mapY + thisMap.viewportHeight - dialogTop-229;

    if (mLeft !=0 || mTop!=0)
    {
        ;//eval('$(innerDivJQID).animate({left: "+='+mLeft+'px",top: "+='+mTop+'px"}, 500,"linear", function(){checkTiles();RefreshRoute();});');
    }
    
}


this.poiArray = new Array();

this.DisplayBigCallout=DisplayBigCallout;
function DisplayBigCallout(num,type,subtype,icon)
{
    var attr=thisMap.poiArray[num+"_"+type+"_"+subtype];
    if (type==-1)
        attr=PoiInfo.split('$%$');
    
    HideCallouts();
    var center = XYToMap(attr[11],attr[12]);
    var pinImageLeft = center[0];
    var pinImageTop = center[1];
    var dialog = document.createElement("div");
    dialog.style.position = "absolute";
    var pinLeft = pinImageLeft - bigDialogOffsetX;
    var pinTop = pinImageTop - bigDialogOffsetY;
    dialog.style.left = pinLeft + "px";
    dialog.style.top = pinTop + "px";
    AllPinsCoords[AllPinsCoords.length] = [ "pinDialog" , "", attr[11],attr[12],bigDialogOffsetX,bigDialogOffsetY];
    curDialogX=attr[11];
    curDialogY=attr[12];
    dialog.style.width = "500px";
    dialog.style.height = "300px";
    dialog.style.zIndex = 16;
    dialog.setAttribute("id", "pinDialog");

    if (trim(attr[6])=="0")
        attr[6]="";
    
    var address= trim(attr[3])+" "+trim(attr[6]);
    if (trim(attr[1])!="")
    {
        if (attr[2]=="0")
            attr[2]="";
        address=attr[1]+" "+ attr[2]+", "+address;
    }
    if (icon!="")
        icon = "<img class=\"pinDialogIconBig\" src=\"resources/images/poi/large/"+icon+"\"/>";
    var remarks="";
    if (trim(attr[10])!="" && trim(attr[10])!=trim(attr[9]))
    {
        remarks=" ("+trim(attr[10])+")";
    }
    
    var tel="";
    if (trim(attr[4])!="")
    {
        tel=" Τηλέφωνο:&nbsp;<span>"+attr[4]+"</span> ";
    }
    var fax="";
    if (trim(attr[5])!="")
    {
        fax= " FAX:&nbsp;<span>"+attr[5]+"</span> ";
    }
    var email="";
    if (trim(unescape(attr[7]))!="+")
    {
        email=" e-mail:&nbsp;<span id=\"pinDialogEmail\" class=\"calloutLink\" onclick='parent.location=\"mailto:"+unescape(attr[7])+"\"'>"+unescape(attr[7])+"</span> ";
    }
    var web="";
    if (trim(unescape(attr[8]))!="+")
    {
        web=" web:&nbsp;<span id=\"pinDialogWeb\" class=\"calloutLink\" onclick='window.open(\"http://"+unescape(attr[8])+"\")'>"+unescape(attr[8])+"</span> ";
    }
    
    dialog.innerHTML = "<div style='z-index:2;position:absolute;'><div id='BigPoiDialogHeader'>"+attr[9]+"</div><div id='BigPoiDialogBody'>"+
      "<div id='BigPoiDialogItems'>Διεύθυνση: <span id=\"addressInCallout2\">"+address+"</span><br/>"+tel+fax+"<br/>"+email+web+"</div>" +
      "<div id='BigPoiDialogTabs'></div></div>" +
      "<div id='BigPoiDialogNavi'><span id='NaviSpan'>Πλοήγηση: Ορισμός ως <span id=\"pinDialogStart\" class=\"calloutLink\">Αφετηρία</span> - <span id=\"pinDialogFinish\" class=\"calloutLink\">Προορισμός</span></span>"+icon+"</div></div>";

    thisMap.innerDiv.appendChild(dialog);
    
    var bpdt = document.getElementById("BigPoiDialogTabs");
    var fDiv;
    var ul = document.createElement("ul");
    var ToEval='';
    var i=0;
    
   var foundText = false;
    
    
//    for (var i=0;i<4;i++)
//    {
//        if (attr[20+i]!='' && attr[20+i]!='<br type=\'_moz\' />')
//        {
//            foundText = true;
//            var li = document.createElement("li");
//            li.setAttribute("id", "li_"+i);
//            ToEval += '$("#li_'+i+'").html("<a href=\'#div_li_'+i+'\'><span>' + attr[20+i] + '</span></a>");';
//            ul.appendChild(li);

//            var div = document.createElement("div");
//            div.setAttribute("id", "div_li_"+i);
//            div.className="BigCalloutTabText";
//            ToEval += '$("#div_li_'+i+'").html("'+attr[16+i]+'");';
//            
//            bpdt.appendChild(div);
//            if (typeof(fDiv)=="undefined") 
//                fDiv = div;
//        }
//    }


    var li = document.createElement("li");
    li.setAttribute("id", "li_"+i);
    ToEval += '$("#li_'+i+'").html("<a href=\'#div_li_'+i+'\'><span>Φωτογραφίες</span></a>");';
    ul.appendChild(li);
    var div = document.createElement("div");
    div.setAttribute("id", "div_li_"+i);
    var photo_inx = i;
    div.className="BigCalloutTabTextNoScroll";
    var galUl = "<div id=\"galdiv\"><ul class=\"galleria galleriaul\">";
    var foundPhoto = false;
    for (var i=0;i<10;i++)
    {
        if (attr[35+i]!='')
        {
            galUl += "<li><a class='thickbox' href='images/poi/"+unescape(attr[35+i]).replace('.tif','.jpg')+"'  rel='oeo' title='"+unescape(attr[25+i])+"'><img class='bc_images' id='gal_"+i+"' src='images/poi/"+unescape(attr[35+i]).replace('.tif','.jpg')+"' onload='ResizeThumb(\"gal_"+i+"\")' alt='"+unescape(attr[25+i])+"' /></a></li>";
            foundPhoto = true;
        }
    }
    galUl += "</ul></div>";
    if (foundPhoto)
    {
        bpdt.appendChild(div);
        if (typeof(fDiv)=="undefined") 
            fDiv = div;    
        $("#BigPoiDialogTabs").append(galUl);
        //$("#div_li_"+photo_inx).append(galUl);
    }
    
    if (foundPhoto || foundText)
    {
        bpdt.insertBefore(ul,fDiv);
        eval(ToEval);
        $("#BigPoiDialogTabs > ul").tabs();
    }
    
    //$("#BigPoiDialogTabs > ul").tabs("select",1);
    
//    $("#div_li_0").html(galUl);
//    var options = {
//            insert : '#my_main_image',
//            history : false,
//            onImage : function() {$("#my_main_image").show();},
//            onThumb : function() {}
//    };
    
//    $('ul.gallery').galleria(options);
//    $("#my_main_image").unbind();
//    $("#my_main_image").bind("click",function(){$("#my_main_image").hide();});
    
    //setTimeout('$("#BigPoiDialogTabs > ul").tabs("select",0);',1000);


    TB_Init();


    //$("#div_li_"+photo_inx).bind('tabsselect', function(){ ShowImgs(); });
    
    //$('.ui-tabs-nav').bind('tabsselect', function(event, ui) {
        //ui.instance // internal widget instance
        //ui.options // options used to intialize this widget
        //ui.tab // anchor element of the currently shown tab
        //ui.panel // element, that contains the contents of the currently shown tab
        //ShowImgs(ui);
    //});

    //$(".bc_images").css("z-index",-5);
    $(".bc_images").css("z-index",20);
    $("#galdiv").css("z-index",20);
    //ShowImgs(ui);

    var cX=attr[11];
    var cY=attr[12];

    //$("#BigDialogDesc").bind("click",function(){eval('$("#BigPoiDialogMain").html(\'' + replaceAll(attr[15],"'","\'")+'\');');});
    //$("#BigDialogPhotos").bind("click",function(){eval('$("#BigPoiDialogMain").html(\''+replaceAll(attr[16],"'","\'")+'\');');});

    
    //$("#BigPoiDialogMain").bind("click",function(){myCancelBubble();});
    $("#pinDialogStart").bind("click",function(){eval('setPinAsDepart("pinDialog",true,1);');});
    $("#pinDialogStart").bind("mouseover",function(){$("#pinDialogStart").css("text-decoration","underline");});
    $("#pinDialogStart").bind("mouseout",function(){$("#pinDialogStart").css("text-decoration","none");});
    
    $("#pinDialogFinish").bind("click",function(){eval('setPinAsDest("pinDialog",true,1);');});
    $("#pinDialogFinish").bind("mouseover",function(){$("#pinDialogFinish").css("text-decoration","underline");});
    $("#pinDialogFinish").bind("mouseout",function(){$("#pinDialogFinish").css("text-decoration","none");});

    $("#pinDialogEmail").bind("mouseover",function(){$("#pinDialogEmail").css("text-decoration","underline");});
    $("#pinDialogEmail").bind("mouseout",function(){$("#pinDialogEmail").css("text-decoration","none");});

    $("#pinDialogWeb").bind("mouseover",function(){$("#pinDialogWeb").css("text-decoration","underline");});
    $("#pinDialogWeb").bind("mouseout",function(){$("#pinDialogWeb").css("text-decoration","none");});



    var dialog_img = document.createElement("div");
    dialog_img.style.position = "absolute";
    dialog_img.style.left = "0px";
    dialog_img.style.top = "0px";
    dialog_img.style.width = "500px";
    dialog_img.style.height = "300px";
    dialog_img.style.zIndex = 0;

    if (browser.isIElLessThan7)
        dialog_img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='resources/images/balloon_400x300.png');";
    else
        dialog_img.style.background = "url(resources/images/balloon_400x300.png)";
    
    dialog.appendChild(dialog_img);

    var close = document.createElement("div");
    close.style.position = "absolute";
    //close.src = "resources/images/close_grey.gif";
    close.style.backgroundImage = "url(resources/images/close_grey.gif)";
//    close.style.left = (pinImageLeft - 205) + 278 + "px";
//    close.style.top = (pinImageTop - 118) + 7 + "px";
    close.style.right = "105px";
    close.style.top = "5px";

    close.style.width = "15px";
    close.style.height = "15px";
    close.style.zIndex = 17;
    close.style.cursor = "pointer";
    close.setAttribute("id", "pinDialogClose");
    
    dialog.appendChild(close);
    
    //new OpacityObject('pinDialog','resources/images/balloon_400x300_2').setBackground();
    $("#pinDialogClose").bind("click",
    function(){
        HideCallouts();
    }
    );
    
    var mapX = (-1)*stripPx(thisMap.innerDiv.style.left);
    var mapY = (-1)*stripPx(thisMap.innerDiv.style.top);
    
    var dialogLeft = stripPx(dialog.style.left);
    var dialogTop = stripPx(dialog.style.top);
    
    var dialogWidth = stripPx(dialog.style.width);
    var dialogHeight = stripPx(dialog.style.height);
    
    var mLeft = 0;
    var mTop = 0;
    
    if (dialogLeft < mapX)
        mLeft = mapX - dialogLeft;
    else if (dialogLeft + 409 > mapX + thisMap.viewportWidth)
        mLeft = mapX + thisMap.viewportWidth - dialogLeft-409;

    if (dialogTop < mapY)
        mTop = mapY - dialogTop;
    else if (dialogTop + 229 > mapY + thisMap.viewportHeight)
        mTop = mapY + thisMap.viewportHeight - dialogTop-229;

    if (mLeft !=0 || mTop!=0)
    {
        eval('$(innerDivJQID).animate({left: "+='+mLeft+'px",top: "+='+mTop+'px"}, 500,"linear", function(){checkTiles();RefreshRoute();});');
    }

}

function myCancelBubble()
{
    if (!event) event = window.event;
    event.cancelBubble = true;
}

this.DisplayPoiCallout=DisplayPoiCallout;
function DisplayPoiCallout(num,type,subtype,icon)
{
    var attr=thisMap.poiArray[num+"_"+type+"_"+subtype];
    
    HideCallouts();
    var center = XYToMap(attr[11],attr[12]);
    var pinImageLeft = center[0];
    var pinImageTop = center[1];
    var dialog = document.createElement("div");
    dialog.style.position = "absolute";
    var pinLeft = pinImageLeft - smallDialogOffsetX;
    var pinTop = pinImageTop - smallDialogOffsetY;
    dialog.style.left = pinLeft + "px";
    dialog.style.top = pinTop + "px";
    AllPinsCoords[AllPinsCoords.length] = [ "pinDialog" , "", attr[11],attr[12],smallDialogOffsetX,smallDialogOffsetY];
    curDialogX=attr[11];
    curDialogY=attr[12];
    dialog.style.width = "400px";
    dialog.style.height = "150px";
    dialog.style.zIndex = 16;
    dialog.setAttribute("id", "pinDialog");

    if (trim(attr[6])=="0")
        attr[6]="";
    
    var address= trim(attr[3])+" "+trim(attr[6]);
    if (trim(attr[1])!="")
    {
        if (attr[2]=="0")
            attr[2]="";
        address=attr[1]+" "+ attr[2]+", "+address;
    }
    if (icon!="")
        icon = "<img class=\"pinDialogIcon\" src=\"resources/images/poi/large/"+icon+"\"/>";
    var remarks="";
    if (trim(attr[10])!="" && trim(attr[10])!=trim(attr[9]))
    {
        remarks=" "+trim(attr[10])+"";
    }
    
    var tel="";
    if (trim(attr[4])!="")
    {
        tel=" Τηλέφωνο:&nbsp;<span>"+attr[4]+"</span> ";
    }
    var fax="";
//    if (trim(attr[5])!="")
//    {
//        fax= " FAX:&nbsp;<span>"+attr[5]+"</span> ";
//    }
    var email="";
    if (trim(unescape(attr[7]))!="+")
    {
        ;//email=" e-mail:&nbsp;<span id=\"pinDialogEmail\" class=\"calloutLink\" onclick='parent.location=\"mailto:"+unescape(attr[7])+"\"'>"+unescape(attr[7])+"</span> ";
    }
    var web="";
    if (trim(unescape(attr[8]))!="+")
    {
        ;//web=" web:&nbsp;<span id=\"pinDialogWeb\" class=\"calloutLink\" onclick='window.open(\"http://"+unescape(attr[8])+"\")'>"+attr[8]+"</span> ";
    }
    var add="";
    if (address!='' && address!=' ')
        add="Διεύθυνση: <span id=\"addressInCallout\">"+address+"</span>";
    else if (attr[45]!='' && attr[45]!=' ' && attr[45]!='0')
    {
        l = parseFloat(attr[45].replace(',','.'))*1000;
        l = parseFloat(Math.round(l))/1000.0;
        
        add="Υψόμετρο: <span id=\"addressInCallout\">"+l.toString().replace('.',',')+"</span>";
    }
    
    
    dialog.innerHTML = icon+"<div style='position:absolute;left:10px;top:15px;z-index:21;width:100%;height:100%'><table height='80%' width='83%'>" +
      //"<tr><td align='center'></td></tr>" +
      "<tr><td align='center'>"+attr[9]+"<br/>"+remarks+"<br/>"+add+"<br/>"+tel+fax+email+web+"</td></tr>" +
      "<tr><td align='left'>&nbsp; </td></tr>" +
      "</table></div>";
    thisMap.innerDiv.appendChild(dialog);

    var cX=attr[11];
    var cY=attr[12];
    
    $("#pinDialogStart").bind("click",function(){eval('setPinAsDepart("pinDialog",true,1);');});
    $("#pinDialogStart").bind("mouseover",function(){$("#pinDialogStart").css("text-decoration","underline");});
    $("#pinDialogStart").bind("mouseout",function(){$("#pinDialogStart").css("text-decoration","none");});
    
    $("#pinDialogFinish").bind("click",function(){eval('setPinAsDest("pinDialog",true,1);');});
    $("#pinDialogFinish").bind("mouseover",function(){$("#pinDialogFinish").css("text-decoration","underline");});
    $("#pinDialogFinish").bind("mouseout",function(){$("#pinDialogFinish").css("text-decoration","none");});

    $("#pinDialogEmail").bind("mouseover",function(){$("#pinDialogEmail").css("text-decoration","underline");});
    $("#pinDialogEmail").bind("mouseout",function(){$("#pinDialogEmail").css("text-decoration","none");});

    $("#pinDialogWeb").bind("mouseover",function(){$("#pinDialogWeb").css("text-decoration","underline");});
    $("#pinDialogWeb").bind("mouseout",function(){$("#pinDialogWeb").css("text-decoration","none");});
    
    var dialog_img = document.createElement("div");
    dialog_img.style.position = "absolute";
    dialog_img.style.left = "0px";
    dialog_img.style.top = "0px";
    dialog_img.style.width = "400px";
    dialog_img.style.height = "150px";
    dialog_img.style.zIndex = 0;

    if (browser.isIElLessThan7)
        dialog_img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='resources/images/balloon_300x150.png');";
    else
        dialog_img.style.background = "url(resources/images/balloon_300x150.png)";
    
    dialog.appendChild(dialog_img);


    var close = document.createElement("div");
    close.style.position = "absolute";
    //close.src = "resources/images/close_grey.gif";
    close.style.backgroundImage = "url(resources/images/close_grey.gif)";
//    close.style.left = (MapCoords[0] - 220) + 278 + "px";
//    close.style.top = (MapCoords[1] - 295) + 7 + "px";
    close.style.right = "70px";
    close.style.top = "10px";
    close.style.width = "15px";
    close.style.height = "15px";
    close.style.zIndex = 40;
    close.style.cursor = "pointer";
    close.setAttribute("id", "pinDialogClose");
    dialog.appendChild(close);
    
    //new OpacityObject('pinDialogWithMap','resources/images/balloon_300x300_2').setBackground();
    $("#pinDialogClose").bind("click",
    function(){
        HideCallouts();
    }
    );
    
   
    var mapX = (-1)*stripPx(thisMap.innerDiv.style.left);
    var mapY = (-1)*stripPx(thisMap.innerDiv.style.top);
    
    var dialogLeft = stripPx(dialog.style.left);
    var dialogTop = stripPx(dialog.style.top);
    
    var dialogWidth = stripPx(dialog.style.width);
    var dialogHeight = stripPx(dialog.style.height);
    
    var mLeft = 0;
    var mTop = 0;
    
    if (dialogLeft < mapX)
        mLeft = mapX - dialogLeft;
    else if (dialogLeft + 309 > mapX + thisMap.viewportWidth)
        mLeft = mapX + thisMap.viewportWidth - dialogLeft-309;

    if (dialogTop < mapY)
        mTop = mapY - dialogTop;
    else if (dialogTop + 229 > mapY + thisMap.viewportHeight)
        mTop = mapY + thisMap.viewportHeight - dialogTop-229;

    if (mLeft !=0 || mTop!=0)
    {
        eval('$(innerDivJQID).animate({left: "+='+mLeft+'px",top: "+='+mTop+'px"}, 500,"linear", function(){checkTiles();RefreshRoute();});');
    }

}

this.DirIds = new Array();

this.DisplayCalloutWithMap = DisplayCalloutWithMap;
function DisplayCalloutWithMap(x,y, num)
{
    var wherePrev = $(".naviresult")[num-1];
    var whereNext = $(".naviresult")[num+1];
    

    if (typeof(wherePrev)!="undefined")
        clickPrev = wherePrev.onclick;
    
    if (typeof(whereNext)!="undefined")
        clickNext = whereNext.onclick;

    HideCallouts();
    numInCallout = num;
    ShowNaviPoint(num);
    var MapCoords = XYToMap(x,y);

    var dialog = document.createElement("div");
    dialog.style.position = "absolute";
    var pinLeft = MapCoords[0] - 180;
    var pinTop = MapCoords[1] - 300;
    dialog.style.left = pinLeft + "px";
    dialog.style.top = pinTop + "px";
    
//    var center = MapToXY(pinImageLeft,pinImageTop);
    AllPinsCoords[AllPinsCoords.length] = [ "pinDialogWithMap" , "", x,y,180,300];

//    AllPinsCoords[AllPinsCoords.length] = [ "pinDialogWithMap" , "", x,y, ];
        
    dialog.style.width = "400px";
    dialog.style.height = "300px";
    dialog.style.zIndex = 21;
    dialog.setAttribute("id", "pinDialogWithMap");
    
        dialog.innerHTML = "<div style='position:absolute;left:0px;top:0px;z-index:21;width:100%;height:100%'><table style='border:1px Red' height='78%' width='75%'>" +
      "<tr><td class=\"MapCalloutTrTop\"><span id=\"addressInCallout\">"+thisMap.DirIds[num]+"</span></td></tr>" +
      "<tr class=\"MapCalloutTr\"><td class=\"MapCalloutTd\" align='left'><div id=\"CallOutMap\"></div></td></tr>" +
      "<tr><td align='left'><div id=\"CallOutMapLinks\">Πλοήγηση: <span id=\"pinDialogPrevRoute\" class=\"calloutLink\">Προηγούμενο βήμα</span> - <span id=\"pinDialogNextRoute\" class=\"calloutLink\">Επόμενο βήμα</span></div></td></tr>" +

      "</table></div>";
    thisMap.innerDiv.appendChild(dialog);
    myCallOutMap = new GV_Map('CallOutMap',1, 11 , false, false,0,false, false,map_type,12);
    myCallOutMap.CenterAtCoords(x,y);    
    myCallOutMap.ShowRoute(lastRoute);
    myCallOutMap.PutNaviPoint(x,y,num, true);
    
    eval('$("#pinDialogPrevRoute").bind("click",function(){clickPrev();});');
    $("#pinDialogPrevRoute").bind("mouseover",function(){$("#pinDialogPrevRoute").css("text-decoration","underline");});
    $("#pinDialogPrevRoute").bind("mouseout",function(){$("#pinDialogPrevRoute").css("text-decoration","none");});
    
    eval('$("#pinDialogNextRoute").bind("click",function(){clickNext();});');
    $("#pinDialogNextRoute").bind("mouseover",function(){$("#pinDialogNextRoute").css("text-decoration","underline");});
    $("#pinDialogNextRoute").bind("mouseout",function(){$("#pinDialogNextRoute").css("text-decoration","none");});

    
    var dialog_img = document.createElement("div");
    dialog_img.style.position = "absolute";
    dialog_img.style.left = "0px";
    dialog_img.style.top = "0px";
    dialog_img.style.width = "400px";
    dialog_img.style.height = "300px";
    dialog_img.style.zIndex = 0;

    if (browser.isIElLessThan7)
        dialog_img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='resources/images/balloon_300x300.png');";
    else
        dialog_img.style.background = "url(resources/images/balloon_300x300.png)";
    
    dialog.appendChild(dialog_img);
    
    var close = document.createElement("div");
    close.style.position = "absolute";
    //close.src = "resources/images/close_grey.gif";
    close.style.backgroundImage = "url(resources/images/close_grey.gif)";
//    close.style.left = (MapCoords[0] - 220) + 278 + "px";
//    close.style.top = (MapCoords[1] - 295) + 7 + "px";
    close.style.right = "100px";
    close.style.top = "5px";
    close.style.width = "15px";
    close.style.height = "15px";
    close.style.zIndex = 40;
    close.style.cursor = "pointer";
    close.setAttribute("id", "pinDialogClose");
    
    dialog.appendChild(close);
    
    //new OpacityObject('pinDialogWithMap','resources/images/balloon_300x300_2').setBackground();
    $("#pinDialogClose").bind("click",
    function(){
        HideCallouts();
    }
    );
    
    var mapX = (-1)*stripPx(thisMap.innerDiv.style.left);
    var mapY = (-1)*stripPx(thisMap.innerDiv.style.top);
    
    var dialogLeft = stripPx(dialog.style.left);
    var dialogTop = stripPx(dialog.style.top);
    
    var dialogWidth = stripPx(dialog.style.width);
    var dialogHeight = stripPx(dialog.style.height);
    
    var mLeft = 0;
    var mTop = 0;
    
    if (pinLeft < mapX)
        mLeft = mapX - pinLeft;
    else if (pinLeft + 295 > mapX + thisMap.viewportWidth)
        mLeft = mapX + thisMap.viewportWidth - pinLeft-295;

    if (pinTop < mapY)
        mTop = mapY - pinTop;
    else if (pinTop + 305 > mapY + thisMap.viewportHeight)
        mTop = mapY + thisMap.viewportHeight - pinTop-305;

    if (mLeft !=0 || mTop!=0)
    {
        eval('$(innerDivJQID).animate({left: "+='+mLeft+'px",top: "+='+mTop+'px"}, 500,"linear", function(){checkTiles();RefreshRoute();});');
    }
}

function setPinAsGetPoleoTaktoODXG(pin,useAddrFromCallout, pinType, PTO)
{
    var curCoords = GetPinCoords(pin,pinType);
    if (useAddrFromCallout)
    {
        var address1 = document.getElementById("navi_from");
        address1.value = $("#addressInCallout").html();
        if (address1.value=="null")
            address1.value = $("#addressInCallout2").html();
        
        //InsertPin(thisMap.xyStart[0],thisMap.xyStart[1], address1.value, 1, 'startPin', false,true );
    }
    var URLsub="";

    
    if (PTO==1)
    {    
        $.get(handlers_url+"GetDiatagma.ashx?x="+curCoords[0]+"&y="+curCoords[1], function(data){
        $("#PleaseWait").remove();
        var pinLeft =  stripPx($("#"+pin).css("left"))+ smallDialogOffsetX-pinOffsetX;
        var pinTop  =  stripPx($("#"+pin).css("top")) + smallDialogOffsetY-pinOffsetY;
        DisplayCalloutPoleoTakto(pinLeft,pinTop,data,pin,1);
        
        });
    }
    else if (PTO==2)
    {
        $.get(handlers_url+"GetTaktopoihsh.ashx?x="+curCoords[0]+"&y="+curCoords[1], function(data){
        $("#PleaseWait").remove();
        var pinLeft =  stripPx($("#"+pin).css("left"))+ smallDialogOffsetX-pinOffsetX;
        var pinTop  =  stripPx($("#"+pin).css("top")) + smallDialogOffsetY-pinOffsetY;
        DisplayCalloutPoleoTakto(pinLeft,pinTop,data,pin,0);
        
        });
    
    }
    else if (PTO==3)
    {
        $.get(handlers_url+"GetODXG.ashx?x="+curCoords[0]+"&y="+curCoords[1], function(data){
        $("#PleaseWait").remove();
        var pinLeft =  stripPx($("#"+pin).css("left"))+ smallDialogOffsetX-pinOffsetX;
        var pinTop  =  stripPx($("#"+pin).css("top")) + smallDialogOffsetY-pinOffsetY;
        DisplayCalloutODXG(pinLeft,pinTop,data,pin);
        
        });
    
    }
}

function setPinAsDepart(pin,useAddrFromCallout, pinType)
{
    thisMap.xyStart = GetPinCoords(pin,pinType);
    if (useAddrFromCallout)
    {
        var address1 = document.getElementById("navi_from");
        address1.value = $("#addressInCallout").html();
        if (address1.value=="null")
            address1.value = $("#addressInCallout2").html();
        
        InsertPin(thisMap.xyStart[0],thisMap.xyStart[1], address1.value, 1, 'startPin', false,true );
    }    
    CheckRoute();  
}

function CheckRoute()
{
    if ( $(".startPin").length==1 && $(".endPin").length==1)
        CalculateRoute();
}

function setPinAsDest(pin, useAddrFromCallout, pinType)
{
    thisMap.xyEnd = GetPinCoords(pin,pinType);
    if (useAddrFromCallout)
    {
        var address2 = document.getElementById("navi_to");
        address2.value = $("#addressInCallout").html();
        if (address2.value=="null")
            address2.value = $("#addressInCallout2").html();

        InsertPin(thisMap.xyEnd[0],thisMap.xyEnd[1], address2.value, 2, 'endPin', false,true );
    }
    CheckRoute();
}

this.HideCallouts =HideCallouts;
function HideCallouts()
{
    var tmp = numInCallout;
    numInCallout = -1;
    HideNaviPoint(tmp);
    $("#pinDialog").remove();
    ClearFromAllPinsCoordsById("pinDialog");
    $("#pinDialogWithMap").remove();
    ClearFromAllPinsCoordsById("pinDialogWithMap");
}


this.ZoomToExtent =ZoomToExtent;
function ZoomToExtent(x1,y1,x2,y2)
{
    x1 = parseInt(x1);
    y1 = parseInt(y1);
    x2 = parseInt(x2);
    y2 = parseInt(y2);
    for (var i=0; i<zoom_levels; i++)
    {
        var z = zoom_levels-i-1;
        var p1 = XYToMap(x1,y1,z);
        var p2 = XYToMap(x2,y2,z);
        if ( ( Math.abs(p1[0]-p2[0]) < thisMap.viewportWidth-20) && ( Math.abs(p1[1]-p2[1]) < thisMap.viewportHeight-20) )
        {
            //Careful! Needs first to be zoomed and then centered!!!
            Zoom(z);
            CenterAtCoords((x1+x2)/2, (y1+y2)/2);
            Recenter_Zoom=z;
            Recenter_X = (x1+x2)/2;
            Recenter_Y = (y1+y2)/2;
            break;
        }
    }
    

}

var prevX;
var prevY;
var prevW;
var prevH;

this.ClearRoute = ClearRoute;
function ClearRoute(allTheWay, alsoPins)
{
    
    if (thisMap.IsOverview)
        return;
    context.save();
    context.clearRect(0, 0, myCanvas.width, myCanvas.height);   
    context.restore();
    if (allTheWay)
    {
        lastRoute = null;
        ClearNaviPoints();
        if (alsoPins)
        {
            $("#startPin").remove();
            $("#endPin").remove();
            ClearFromAllPinsCoordsById("startPin");
            ClearFromAllPinsCoordsById("endPin");
        }
    }
//    alert(myCanvas.style.left+" "+myCanvas.style.top+" "+myCanvas.width+" "+myCanvas.height);
}
this.RefreshRoute = RefreshRoute;
function RefreshRoute()
{
    if (thisMap.IsOverview)
        return;

    ClearRoute();

    if (lastRoute==null)
        return;

    points = lastRoute;
    if (typeof(points)=="undefined")
        return;

    var xMin = 2147483647;
    var xMax = 0;
    var yMin = 2147483647;
    var yMax = 0;
    
    var p = new Array();
    var pCounter=0;
    for (var i=0;i<points.length;i++)
    {
        if (points[i]!="")
        {
            var xy = points[i].split('-');
        
            m = XYToMap(xy[0],xy[1]);
            if ( 
            (m[0]>(-1)*stripPx(thisMap.innerDiv.style.left)-1000) && 
            (m[0]<(-1)*stripPx(thisMap.innerDiv.style.left)+1000+thisMap.viewportWidth) && 
            (m[1]>(-1)*stripPx(thisMap.innerDiv.style.top)-1000) &&
            (m[1]<(-1)*stripPx(thisMap.innerDiv.style.top)+1000+thisMap.viewportHeight) 
            )       
            {     

                    if ( (typeof(mprev)=="undefined") || (Math.abs(m[0]-mprev[0]) + Math.abs(m[1]-mprev[1]) > 10) )
                    {
                        p[pCounter++]= [ m[0],m[1] ];
                        mprev = m;
                        if (m[0]< xMin)
                            xMin = m[0];
                        if (m[0]> xMax)
                            xMax = m[0];
                        if (m[1]< yMin)
                            yMin = m[1];
                        if (m[1]> yMax)
                            yMax = m[1];
                    }
            }
            else
            {
                if (pCounter>0)
                {
                    if (p[pCounter-1][0]!=0)
                        p[pCounter++] = [0,0];
                        
                    var u;
                    mprev = u;
                }
            }
        }
    }

    if (pCounter!=0)
    {
        context.save();
        
        myCanvas.style.left = xMin+"px";
        myCanvas.style.top = yMin+"px";
        myCanvas.width = xMax-xMin;
        myCanvas.height = yMax-yMin;
        
        cX = stripPx(myCanvas.style.left);
        cY = stripPx(myCanvas.style.top);
        
        context.strokeStyle = "rgba(0,0,255,0.5)";
        context.lineWidth = 5;
        
        context.moveTo(p[0][0]-cX,p[0][1]-cY);
        mprev = m;

        var m;
        var mprev;
        var nextMoveTo = false;
        for (var i=1;i<p.length;i++)
        {
            if (nextMoveTo)
            {
                context.moveTo(p[i][0]-cX,p[i][1]-cY);
                nextMoveTo = false;
            }
            else
            {
                if (p[i][0]!=0)
                {
                    context.lineTo(p[i][0]-cX,p[i][1]-cY);
                }
                else 
                {
                    nextMoveTo = true;
                    context.stroke();
                }
            }
        }
        if (!nextMoveTo)
            context.stroke();
            
        if (!browser.isFirefox)
            context.restore();    
    }
}

this.CalculateRoute = CalculateRoute;
function CalculateRoute(rn)
{
    var address1 = document.getElementById("navi_from");
    var address2 = document.getElementById("navi_to");

    var d = '<div id="ResultHeaderTmp" class="result_header">' +
        '<img style="float:left" alt="Παρακαλώ περιμένετε..." src="resources/images/callbackActivityIndicator.gif" />' +
        '<span id="resheadtxtTmp" class="result_header_text">&nbsp;Από ' +
        address1.value +' προς '+address2.value+'</span></div>';

    if (isNaN(rn))
        $("#Results").prepend(d);
        
    
    ZoomToExtent(thisMap.xyStart[0],thisMap.xyStart[1],thisMap.xyEnd[0],thisMap.xyEnd[1]);
    //http://mapsrv1.terra.gr
    $("#ResultPW"+rn).toggle();
    var pref = handlers_url;
    if (upserver)
        pref = "";
    var uri=pref+"GetRoute.ashx?par="+escape(thisMap.xyStart[0]+"$"+thisMap.xyStart[1]+"$"+thisMap.xyEnd[0]+"$"+thisMap.xyEnd[1]);
    $.get(uri, function(data){
        CloseNavResults();
            
        if (data.indexOf('An error has occurred')==-1)
        {
            
            var results = data.split('@');
            var directions = results[0].split('$');
            var points = results[1].split('$');
            var moves = results[2].split('$');
            var extent = results[3].split('$');
            var lengths = results[4].split('$');
            var times = results[5].split('$');
            
            

            var dirs = FormatDirections(directions,points, lengths, times);
            DisplayResult(' Πλοήγηση από ' +address1.value +' προς '+address2.value, dirs,rn,1);
            myMap.ShowRoute(moves,extent);
            $("#ResultPW"+rn).toggle();
        }
        else
        {
            DisplayResult(' Πλοήγηση από ' +address1.value +' προς '+address2.value, "Δεν βρέθηκε",rn,1);
        }
        $("#ResultHeaderTmp").remove();
    });
    setTimeout('FixResultAreaHeight();',100);
}

this.ShowRoute = ShowRoute;
function ShowRoute(points, extent)
{
    if (thisMap.IsOverview)
        return;
    
    if (typeof(extent)!="undefined")
        ZoomToExtent(extent[0],extent[1],extent[2],extent[3]);


    lastRoute = points;
    lastExtent = extent;
    RefreshRoute();
}


this.SetGrab = SetGrab;
function SetGrab()
{
    if (browser.isFirefox)
        thisMap.innerDiv.style.cursor = '-moz-grab';
    else
        thisMap.innerDiv.style.cursor = 'resources/cursors/grab.cur'; 
}

this.CenterHere = CenterHere;
function CenterHere()
{
    var lastPos = MapToXY($('#ContextMenu_'+ControlID).css('left'), $('#ContextMenu_'+ControlID).css('top'));
    CenterAtCoords(lastPos[0],lastPos[1],0,0,true,false);
}

this.SetPickerXY = SetPickerXY;
function SetPickerXY()
{
    var Start = MapToXY($('#ContextMenu_'+ControlID).css('left'), $('#ContextMenu_'+ControlID).css('top'));
    InsertPin(Start[0],Start[1],"Επιλεγμένο σημείο", 0, 'startPin', false,true );
}


this.SetDep = SetDep;
function SetDep()
{
    var address1 = document.getElementById("navi_from");
    thisMap.xyStart = MapToXY($('#ContextMenu_'+ControlID).css('left'), $('#ContextMenu_'+ControlID).css('top'));
    address1.value = "Σημείο εκκίνησης";
    InsertPin(thisMap.xyStart[0],thisMap.xyStart[1],address1.value, 1, 'startPin', false,true );
    setPinAsDepart('startPin',false,0);
}

this.SetDest =SetDest;
function SetDest()
{
    var address2 = document.getElementById("navi_to");
    thisMap.xyEnd = MapToXY($('#ContextMenu_'+ControlID).css('left'), $('#ContextMenu_'+ControlID).css('top'));
    address2.value = "Σημείο προορισμού";
    InsertPin(thisMap.xyEnd[0],thisMap.xyEnd[1], address2.value, 2, 'endPin', false,true );
    setPinAsDest('endPin',false,0);
}
this.ZoomOut = ZoomOut;
function ZoomOut()
{
    Zoom(zoom-1,true);
}


}// End Class GV_Map

LastMouseX=0;
LastMouseY=0;

var Map_Current;
var Map_Current_m_top;
var Map_Current_m_left;
var Map_Current_dragStartTop;
var Map_Current_dragStartLeft;
var innerDiv_Current;
var dragOverview_Current;

document.onmousemove = processMove;
document.onmouseup = stopMove;

var myCounter=0;

var dragOffsetY;
var dragOffsetX;
var checkTilesTimerId = false;
function processMove(event) 
{
    if (!event) 
        event = window.event;  // for IE

    
    if (dragging_overview)
    {
        dragOverview_Current.style.top = dragOffsetY + event.clientY  + 'px';
        dragOverview_Current.style.left =  dragOffsetX + event.clientX + 'px';
    }
    else if (dragging) {

            innerDiv_Current.style.top = dragOffsetY + event.clientY  + 'px';
            innerDiv_Current.style.left =  dragOffsetX + event.clientX + 'px';

            
            if ((myCounter++)%5==0)
            {

                if (Map_Current.IsOverview)
                {
                    Map_Current.KeepOverviewAreaCentered(true);
                }
                else if (Map_Current.MyOverview!=null)
                {
                    var start = Map_Current.GetStartCoords();
                    Map_Current.MyOverview.MoveOverviewAreaToXY(start[0],start[1], false, false);
                }

                
            }
            
            if ((myCounter)%30==0)
               Map_Current.checkTiles();


    }
    else
    {
        LastMouseX = event.clientX; 
        LastMouseY = event.clientY;
    }
}

var myRightCounter=0;
function stopMove(event) 
{
    if (!InMove) return;
    if (!event) event=window.event;
    
    myCounter=0;
    if (right(event))
    {
//        $("#debug").css("backgroundColor","Blue");
        if (rightClickTO!=null)
        {
            myRightCounter++;
            if (myRightCounter==2)
            {
                myRightCounter=0;
                clearTimeout(rightClickTO);
                rightClickTO = null;
                Map_Current.ZoomOut();

//                $("#debug").css("backgroundColor","Green");
            }
        }
    }
    else if (Map_Current)
    {
        Map_Current.SetGrab();

        dragging = false;
        Map_Current.checkTiles();

        if (dragging_overview) // Here we were dragging the overview map center tile
        {
            dragging_overview = false;
            var center = Map_Current.GetCenterCoords(dragOverview_Current);
            var start = Map_Current.MyOverviewTarget.CenterAtCoords(center[0],center[1],0,0, true, true);
            var anim = "InAnim=true;InAnim1=true;InAnim2=true;"+start[1]+";"+Map_Current.MoveOverviewAreaToXY(start[0][0],start[0][1], false, true, true, "InAnim1=false;EndOverviewAnim("+center[0]+","+center[1]+")");
            anim = replaceAll(anim,"$$SPEED$$","250");
            anim = replaceAll(anim,"$$ANDTHEN$$","InAnim2=false;EndOverviewAnim("+center[0]+","+center[1]+");");
            eval(anim);
        }
        else if (Map_Current.IsOverview) // Here we were dragging the overview map 
        {
            var center = Map_Current.GetCenterCoords();
            
            var start = Map_Current.MyOverviewTarget.CenterAtCoords(center[0],center[1],0,0, true, true);
            var anim = "InAnim=true;InAnim1=true;InAnim2=true;"+start[1]+";"+Map_Current.MoveOverviewAreaToXY(start[0][0],start[0][1], false, true, true, "InAnim1=false;EndOverviewAnim("+center[0]+","+center[1]+")");
            anim = replaceAll(anim,"$$SPEED$$","250");
            anim = replaceAll(anim,"$$ANDTHEN$$","InAnim2=false;EndOverviewAnim("+center[0]+","+center[1]+");");
            eval(anim);

            //setTimeout("Map_Current.RemoveOverviewArea(true);Map_Current.MyOverviewTarget.checkTiles();",500);            
        }
        else if (Map_Current.MyOverview!=null)// Here we were dragging the main map
        {
            var center = Map_Current.GetCenterCoords();
            var start = Map_Current.GetStartCoords();
            Map_Current.MyOverview.CenterAtCoords(center[0],center[1],0,0, false);
            Map_Current.MyOverview.MoveOverviewAreaToXY(start[0],start[1], false, false, false);
            Map_Current.MyOverview.RemoveOverviewArea(true);
        }

        var timeout = 5000;
        if (clearUnwantedTimerId)
        {
            clearTimeout(clearUnwantedTimerId);
            timeout = 1500;
        }
        clearUnwantedTimerId = setTimeout("MapCurrent.clearUnwantedFromView();MapCurrent.clearLowLevels();if (MapCurrent.MyOverview){MapCurrent.MyOverview.clearUnwantedFromView();MapCurrent.MyOverview.clearLowLevels();}",timeout);    

        Map_Current.clearUnvisibles();
        //timeout = 1500;
        if (rrTimeout)
        {
            //timeout = 200;
            clearTimeout(rrTimeout);
        }
        rrTimeout = setTimeout("Map_Current.RefreshRoute();",500);
    }
    InMove=false;
}
var InMove=false;
function EndOverviewAnim(x,y)
{
    if (InAnim1==false && InAnim2==false )
    {
        Map_Current.RemoveOverviewArea(true);
        Map_Current.MyOverviewTarget.checkTiles();
        Map_Current.CenterAtCoords(x,y,0,0, false);
        InAnim=false;
    }
}

var rrTimeout;
var clearUnwantedTimerId;
function replaceAll(text, strA, strB) 
{
    while ( text.indexOf(strA) != -1)
    {
        text = text.replace(strA,strB);
    }
    return text;
}

////////////////////////////////////////////////////
//Right Click Handler
var rightClickTO=null;
function RightClick(myControlID)
{
    rightClickTO=null;
    var MapIDJQ = '#'+myControlID;
    var innerDiv = document.getElementById("innerDiv_"+myControlID);

    var x_center = (-1)*stripPx(innerDiv.style.left)  + LastMouseX-stripPx($(MapIDJQ).css('left'));
    var y_center = (-1)*stripPx(innerDiv.style.top)  + LastMouseY-stripPx($(MapIDJQ).css('top'));

    $('#ContextMenu_'+myControlID).css('left',x_center+'px');
    $('#ContextMenu_'+myControlID).css('top',y_center+'px');
    $('#ContextMenu_'+myControlID).show();
}

function stripPx(value) {
    if (value == "") return 0;
    return parseFloat(value.replace('px', ''));
}

function right(e) {
    if (browser.IsNetscape && (e.which == 3 || e.which == 2))
        return true;
    else if (e.button == 2 || e.button == 3) 
    {
        return true;
    }
    return false;
}

var clickPrev = function(){};
var clickNext = function(){};

////////////////////////////////////////////////////
//Preload Images

image1 = new Image();
image1.src = "resources/images/zoomIn.png";

image2 = new Image();
image2.src = "resources/images/zoomOut.png";

image3 = new Image();
image3.src = "resources/images/balloon_300x150.png";

image4 = new Image();
image4.src = 'resources/cursors/grab.cur';

image5 = new Image();
image5.src = 'resources/cursors/grabbing.cur';


function ResizeThumb(thumb_id)
{
    var _img = $("#"+thumb_id);
    var _container_width = 70;
    var _container_height = 58;
    
    if (_img.width()!=0 && _img.height()!=0)
    {
        var w = Math.ceil( _img.width() / _img.height() * _container_height );
	    var h = Math.ceil( _img.height() / _img.width() * _container_width );
	    if (w < h) {
		    _img.css({ height: 'auto', width: _container_width, marginTop: -(h-_container_height)/2 });
	    } else {
		    _img.css({ width: 'auto', height: _container_height, marginLeft: -(w-_container_width)/2 });
        }
	}
}
function ShowImgs(ui)
{
    if (ui.panel.id=="div_li_4")
    {
        $(".bc_images").css("z-index",20);
        $("#galdiv").css("z-index",20);
    }
    else
    {
        $(".bc_images").css("z-index",-5);
        $("#galdiv").css("z-index",-5);
    }
}


