﻿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;

var curDialogX = 0;
var curDialogY = 0;


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 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) {

        context = '<img id="Layer" src="images/blanc.png" style="z-index:1;position: absolute" />';

        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(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 != 'Layer'
     && 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 (!EETTpost)
                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;

                if (returnEval) {
                    MapCurrent = thisMap;
                    var lala = '$("#' + thisMap.innerDiv.id + '").animate({left: "+=' + mLeft + 'px",top: "+=' + mTop + 'px"}, $$SPEED$$,"linear", function(){MapCurrent.RefreshRoute();$$ANDTHEN$$;});';
                    return [MapToXY(center[0] - thisMap.viewportWidth / 2, center[1] - thisMap.viewportHeight / 2), lala];
                }
                else {
                    $("#" + thisMap.innerDiv.id).animate({ left: "+=" + mLeft + "px", top: "+=" + mTop + "px" }, speed, linear, function () { thisMap.checkTiles(); thisMap.RefreshRoute(); });
                }
            }
            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.checkLayer = checkLayer;
    function checkLayer() {

        if ($('#chkElta').attr('checked') ||
        $('#chkPraktoreiaElta').attr('checked') ||
        $('#chkTaxymetafores').attr('checked') ||
		$('#chkGram').attr('checked')
		) {

            var lrs = "";

            if ($('#chkElta').attr('checked'))
                lrs += "1,6,";
            if ($('#chkPraktoreiaElta').attr('checked'))
                lrs += "2,7,";
            if ($('#chkTaxymetafores').attr('checked'))
                lrs += "3,8,";
            if ($('#chkGram').attr('checked'))
                lrs += "4,9,";

            var start = GetStartCoords();
            var end = GetEndCoords();
            //var lt = XYToMap(start[0], end[1]);
            var bbox = start[0] + "%2C" + end[1] + "%2C" + end[0] + "%2C" + start[1];
            var size = thisMap.viewportWidth + "%2C" + thisMap.viewportHeight;
            $("#Layer").hide().attr("src", "http://mapsrv5.terra.gr/ArcGIS/rest/services/EETTPosts/MapServer/export?dpi=96&layers=show:" + lrs.substring(0, lrs.length - 1) + "&transparent=true&format=png8&bbox=" + bbox + "&bboxSR=2100&imageSR=2100&size=" + size + "&f=image").load(
            function () {
                $("#Layer").css({ "left": (-1) * stripPx(thisMap.innerDiv.style.left) + "px", "top": (-1) * stripPx(thisMap.innerDiv.style.top) + "px", "width": thisMap.viewportWidth + "px", "height": thisMap.viewportHeight + "px" });
                $("#Layer").show();
            }
            );
        } else {
            $("#Layer").hide().attr("src", "images/blanc.png");
        }
    }

    this.GetZoomLevel = GetZoomLevel;
    function GetZoomLevel() {
        return zoom;
    }

    this.Zoom = Zoom;
    function Zoom(Level, ZoomToLastMousePos) {
        if (!isOverview) {
            $("#Layer").hide().attr("src", "images/blanc.png");

            if (Level < 2)
                $(".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();
            }
        }
        checkLayer();
    }

    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
        if (!EETTpost)
            poiPoint.innerHTML = "<span class='PoiNumTextWhite'>" + GetLetter(num) + "</span>" + iconPic;
        else
            poiPoint.innerHTML = 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>Διεύθυνση: <span id=\"addressInCallout\">" + unescape(pHtml) + "</span>";

        message += "<br/><a href='#' onclick='Maintenance(true);' class='calloutLink'>Εισαγωγή επιχείρησης στο σημείο αυτό</a>";

        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.x,attr.y);
    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.x,attr.y,bigDialogOffsetX,bigDialogOffsetY];
    curDialogX=attr.x;
    curDialogY=attr.y;
    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.x;
    var cY=attr.y;

    //$("#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];
        CurrentPOI = attr;
        HideCallouts();
        var center = XYToMap(attr.x, attr.y);
        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.x, attr.y, smallDialogOffsetX, smallDialogOffsetY];
        curDialogX = attr.x;
        curDialogY = attr.y;
        dialog.style.width = "400px";
        dialog.style.height = "150px";
        dialog.style.zIndex = 16;
        dialog.setAttribute("id", "pinDialog");

        var FieldsHtml = "<b>" + attr.fields[0].label + " " + attr.fields[0].value + "</b><br/>";
        for (var i = 1; i < attr.fields.length; i++) {
            FieldsHtml += attr.fields[i].label + ": " + attr.fields[i].value + "<br/>";
        }
        //FieldsHtml += "<br/><span style='float:right; width:350px'></span>";

        dialog.innerHTML = icon + "<div style='position:absolute;left:10px;top:5px;z-index:21;right:95px; bottom:30px;'>" +
        "<table style='position:absolute;left:0px;top:0px;z-index:21;' width='320px' height='120px'>" +
        //"<tr><td align='center'></td></tr>" +
        "<tr><td align='center'>" + FieldsHtml + "</td></tr>" +
        "</table></div>" +
        "<span style='position:absolute;right:70px; bottom:30px;z-index:22'><a href='#' onclick='Maintenance(false);' class='calloutLink'>Αναφορά σφάλματος</a></span>" +
        "<img  style='position:absolute;left:20px; bottom:30px;z-index:22' src='resources/images/poi/large/" + attr.icon + "' />";
        thisMap.innerDiv.appendChild(dialog);

        var cX = attr.x;
        var cY = attr.y;

        $("#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;

        checkLayer();

        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);
    }
}


