﻿var centerLat;
var centerLng;
var geocoder;
var map;
var markerOptionsRed;
var mapBlowupOptions;
var map3;
var redHeartIcon;
var blueHeartIcon;
var greenHeartIcon;
var points = [];
var galleryTexts = [];
var videoTexts = [];
var shadows = [];
var tempInnerHTML = null;
var tempPoint = null;
var tempRect = null;
var tempElement = null;
var zoomDot = null;
var containerPost;
var imageURL;
var zoomV;
var oldCenter = null;
var IWCashPageID = [];
var IWCashInfo = [];
var markersStore = [];
var isMarkerInStore = [];
var infoWindowCategory = null;
var startZoom;
var startCenterLatLng = [];
var countryCode = null;
var cycleCounter = null;
var customMapOverlay = null;
var markersOverlay = null;
var isMarkerVisible = [];

var countryZoom = null;
var gIsInfoWindow = null;
var gStatus = null; 

var dynImgHandlerURL = null;
var queryParameter = null;

var gSubstance = null;
var gIItems8 = null;
var gIItems9 = null;

var gggStatus = null;
var gggLat = null;
var gggLng = null;
var gggPageIDVar = null;

var gTempTownsLats = null;
var gTempTownsLngs = null;
var gTempTownsZooms = null;
var gTempTownsContactItemPageIDs = null;
var gTempTownsInfoWindowLats = null;
var gTempTownsInfoWindowLngs = null;
var gTownsInfoStatus = null;

var gIsDraging = null;
var gStatusChanges = null;

var stringsLatsLngs = [];
var cVar = null;

var textualZoomControl = null;
var customMoveControl = null;

var gStatusEnableControls = null;
var customMoveControlPresent = null;
var gStatusFirst = null;

var anchorsStore = null;

var gFirstAdrPoints = null;

var gCountrtInd = null;

var gTownsAfterStartInfoWindow = null;
var gLenAddresses = null;

function initMapContactsWithParameter(sZoom, par) {
    //There is a check from Brani that par is a valid country - from
//the dropdown of the Contact page.
    queryParameter = par;
    initMapContacts(sZoom);
}

function initMapContacts(sZoom) {
  var imageURLDiv = getDivImagesURL();
  imageURL = imageURLDiv.innerHTML;

  gStatusChanges = "not aplicable";
  gStatusFirst = "yes";
  gStatusEnableControls = 1;
  gTownsInfoStatus = "renew";
  customMoveControlPresent = "no";
  gTownsAfterStartInfoWindow = "no";

  var IWCashPageID = null;
  var IWCashInfo = null;
  var IWCashPageID = [];
  var IWCashInfo = [];

  dynImgHandlerURL = getDivDynamicImageHandler().innerHTML;

  startZoom = sZoom;
  centerLat = 55.66629146700371;
  centerLng = 12.54714049454817;
  // Check if browser is capable to run google maps
  if (GBrowserIsCompatible()) {

    map = new GMap2(document.getElementById('divGoogleMapContacts'));
    map.disableDoubleClickZoom();
    map.disableDragging();
    gIsDraging = "no";

    map.getDragObject().setDraggableCursor("default");
    textualZoomControl = new TextualZoomControl();
    customMoveControl = new CustomMoveControl();

    var startCenterLatLngContainer =
        getDivStartCenterLatLng().childNodes;
    var lenStartCenterLatLngCont = startCenterLatLngContainer.length;
    var abdd;
    for (abdd = 0; abdd < lenStartCenterLatLngCont; abdd++) {
      startCenterLatLng.push(startCenterLatLngContainer[abdd].innerHTML);
    }

    if (pageIDs.length > 0) {
      var leftCornerItems = [];
    }
    geocoder = new GClientGeocoder();

    gStatus = "initMapContacts";
    cycleCounter = 0;
    SelectedCenterMapOnLoad2();
  }
}

function enableCtrls() {
    var zoom = map.getZoom();
    if (gIsDraging == "no") {
        if (zoom > 1) {
            map.enableDragging();
            gIsDraging = "yes";
        }
    }
    var selectCenter = document.getElementById('selectCenter');
    selectCenter.disabled = false;
    var selectCategory = document.getElementById('selectTownCenter');
    selectCategory.disabled = false;

    if (gStatusFirst == "yes") {
        map.addControl(textualZoomControl);
        map.addControl(customMoveControl);
        customMoveControlPresent = "yes";
        gStatusFirst = "no";
        
    }
    if (customMoveControlPresent == "no") {
        if (zoom > 1) {
            map.addControl(customMoveControl);
            customMoveControlPresent = "yes";
        }
    }

    enableCheckBoxes();
    
    if (gStatusChanges == "no") {
        gStatusChanges = "yes";
    }
}

function SelectedCenterMapOnLoad2() {
    countryCode = null;
    var divStartCenterLatLng = getDivStartCenterLatLng();
    var children = divStartCenterLatLng.childNodes;
    var lat = children[0].innerHTML;
    var lng = children[1].innerHTML;
    var code = children[2].innerHTML;
    var addrPoint = new GLatLng(lat, lng);
    countryCode = code;
    map.setCenter(addrPoint, startZoom);
    var selectCenter = document.getElementById('selectCenter');
    var len = selectCenter.options.length;
    var i = 0;
    var isFinish = false;
    while ((isFinish == false) && (i < len)) {
        var option = selectCenter.options[i];
        if (option.value == code) {
            selectCenter.selectedIndex = i;
            isFinish = true;
        }
        i = i + 1;
    }

    var index = getIndex(code);

    gCountrtInd = index;
    var leftBoxPageID = countryLeftBoxPageIDs[index];
    if ((leftBoxPageID != "") && (leftBoxPageID != null) && (showCenterInfoWindow == "no")) {
        var iItems;
        iItems = GetIItems(leftBoxPageID, "SetLeftBoxInfo", 0, 0);
        if (iItems != "") {
            SetLeftBoxInfo(iItems, leftBoxPageID);
        }
    }
    else {
        var leftBoxTop = document.getElementById('leftBoxTop');
        var pDivLeftBoxMiddle = document.getElementById('pDivLeftBoxMiddle');
        var pUlLeftBoxMiddle = document.getElementById('pUlLeftBoxMiddle');
        pDivLeftBoxMiddle.innerHTML = "";
        pUlLeftBoxMiddle.innerHTML = "";
        pDivLeftBoxMiddle.style.display = "none";
        pUlLeftBoxMiddle.style.display = "none";
        leftBoxTop.style.display = "none";
    }

    countryZoom = cZooms[index];
    if (countryZoom == 1) {
        map.disableDragging();
        gIsDraging = "no";
    }
    map.setZoom(parseInt(countryZoom));
    moveZoomDot(parseInt(countryZoom));

    checkCheckBoxesWithCondition();
    
    if (gStatus == "initMapContacts") {
        setMarkersFirst();
    }
    else if (gStatus == "SelectedCenterMap") {
        //not possible status here.
    }
//    alert("SelectedCenterMapOnLoad2_End");
}

function checkCheckBoxesWithCondition() {
    var len = checkBoxesNumber;
    var i;
    for (i = 0; i < len; i++) {
        var checkBoxId = "categoryCheckBox" + i;
        var chkBox = document.getElementById(checkBoxId);
        if (checkBoxesIsChecked[i] == 1) {
            chkBox.checked = "checked";
        }
    }
}

function findCountryCode(place) {
    var cCode = null;
    if (isset(place.AddressDetails)) {
        if (isset(place.AddressDetails.Accuracy)) {
            var accuracy = place.AddressDetails.Accuracy;
            if ((accuracy != "0") && (accuracy != 0)) {
                if (isset(place.AddressDetails.Country)) {
                    if (isset(place.AddressDetails.Country.CountryNameCode)) {
                        cCode = place.AddressDetails.Country.CountryNameCode;
                    }
                }
            }
        }
    }
    return cCode;
}

//Help function to check if a object is set or not
function isset(varname) {
    return (typeof (varname) != 'undefined');
}

function setMarkersFirst() {
  //So the transparent parts of images, when overlaping, not to
  //lead to sometimes false info window appearing on the map when
  //clicking a marker. If the transparent parts of images are at other
  //palces, the effect will not be achieved. It is not 100% achieved 
  //now as well.
  sortPointsLatsLngs();

  var lenAddresses = googleMapAddresses.length;
  if (lenAddresses > 0) {

    var divBrowserType = getDivBrouserType();
    var browserType = divBrowserType.innerHTML;

    markersStore = null;
    markersStore = [];
    isMarkerVisible = null;
    isMarkerVisible = [];
    var adrLength = lenAddresses;
    var nullVar = null;
    var xxx;
    for (xxx = 0; xxx < adrLength; xxx++) {
      markersStore.push(nullVar);
      isMarkerVisible.push(nullVar);
    }
    var iconsL = icons.length;
    var aabb;
    var iL = iconsL - 1;
    for (aabb = 0; aabb < adrLength; aabb++) {
      var categoryNum = categoryNumbers[aabb];
      if (categoryNum != null) {
        var iconIndex = 1 + (3 * parseInt(categoryNum));
        if (browserType == "IE6") {
          markersStore[aabb] = "<img style=\"width:35px;height:30px;border-width:0px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'" + icons[0] + "?f=" + icons[iconIndex] + "&w=35&h=30&r=0&o=&k=True&cr=" + icons[iconIndex + 1] + "&crcwp=&crchp=&rc=" + icons[iconIndex + 2] + "\', sizingMethod=\'(1)\');\"" + " alt=\"\" src=\"" + imageURL + "blank.gif\"" + " />";
        }
        else {
          markersStore[aabb] = "<img src=\"" + icons[0] + "?f=" + icons[iconIndex] + "&w=35&h=30&r=0&o=&k=True&cr=" + icons[iconIndex + 1] + "&crcwp=&crchp=&rc=" + icons[iconIndex + 2] + "\" />";
        }
        if (checkBoxesIsChecked[categoryNum] == 1) {
          isMarkerVisible[aabb] = "yes";
        }
        else {
          isMarkerVisible[aabb] = "no";
        }
      }
      else {
        markersStore[aabb] = null;
        isMarkerVisible[aabb] = null;
      }
    }

    for (jja = 0; jja < lenAddresses; jja++) {
      points.push(nullVar);
    }

    isMarkerInStore = null;
    isMarkerInStore = [];
    for (jj = 0; jj < lenAddresses; jj++) {
      isMarkerInStore.push(false);
    }

    customMapOverlay = null;
    customMapOverlay = document.createElement("div");
    customMapOverlay.style.position = "absolute";
    customMapOverlay.style.left = "0px";
    customMapOverlay.style.top = "0px";
    customMapOverlay.id = "customMapOverlay";

    anchorsStore = null;
    anchorsStore = [];
    for (j = 0; j < lenAddresses; j++) {
      cycleCounter = 0;
      setMarkersFirstTime(j, pageIDs[j]);
    }
    gFirstAdrPoints = null;
    var zeroPoint = new GPoint(0, 0);
    var zeroLatLng = map.fromContainerPixelToLatLng(zeroPoint);
    var zoom = map.getZoom();
    var cOverlay;
    if (zoom == 1) {
      cOverlay = new CustomOverlay(zeroLatLng, customMapOverlay, 525, 35);
    }
    else {
      cOverlay = new CustomOverlay(zeroLatLng, customMapOverlay, 9, 35);
    }
    map.addOverlay(cOverlay);
    markersOverlay = cOverlay;
    if (showCenterInfoWindow == "yes") {
      displayCenterInfoWindow(lenAddresses);
    }
  }
  if (!((lenAddresses > 0) && (showCenterInfoWindow == "yes"))) {
    FindTownsInfo(lenAddresses)
  }
}

function displayCenterInfoWindow(lenAddresses) {
  var divStartCenterLatLng = getDivStartCenterLatLng();
  var children = divStartCenterLatLng.childNodes;
  var lat = children[0].innerHTML;
  var lng = children[1].innerHTML;
  gTownsAfterStartInfoWindow = "yes";
  gLenAddresses = lenAddresses;
  DisplayInfoWindow(centerPageId, lat, lng, 0);
}

function FindTownsInfo(lenAddresses) {
  if ((gTownsInfoStatus == "renew") && (lenAddresses > 0)) {
    GetTownsInfoByCountry();
  }
  else {
    enableCtrls();
  }
}

function sortPointsLatsLngs() {
    var len = pointsLatsLngs.length;
    var i;
    var k = 0;
    var arrayToSort = [];
    for (i = 0; i < len; i = i + 2) {
        var lat = pointsLatsLngs[i];
        var lng = pointsLatsLngs[parseInt(i) + 1];
        if ((lat != "") && (lat != null)) {
            var adr = new GLatLng(lat, lng);
            var adrPoint = map.fromLatLngToContainerPixel(adr);
            var item = [];
            item.push(adrPoint);
            item.push(lat);
            item.push(lng); 
            item.push(categoryNumbers[k]);
            item.push(pageIDs[k]);
            arrayToSort.push(item);
        }
        else {
            var nullVar = null;
            arrayToSort.push(nullVar);
        }
        k = parseInt(k) + 1;
    }

    arrayToSort.sort(compTwoItems);

    pointsLatsLngs = null;
    pointsLatsLngs = [];
    categoryNumbers = null;
    categoryNumbers = [];
    pageIDs = null;
    pageIDs = [];
    gFirstAdrPoints = null;
    gFirstAdrPoints = [];
    len = arrayToSort.length;
    for (i = 0; i < len; i++) {
        var itemSorted = arrayToSort[i];
        if (itemSorted != null) {
            gFirstAdrPoints.push(itemSorted[0]);
            pointsLatsLngs.push(itemSorted[1]);
            pointsLatsLngs.push(itemSorted[2]);
            categoryNumbers.push(itemSorted[3]);
            pageIDs.push(itemSorted[4]);
        }
        else {
            var nullVar = null;
            gFirstAdrPoints.push(nullVar);
            pointsLatsLngs.push(nullVar);
            pointsLatsLngs.push(nullVar);
            categoryNumbers.push(nullVar);
            pageIDs.push(nullVar);
        }
    }
}

function compTwoItems(item1, item2) {
    if ((item1 == null) || (item2 == null)) {
        if ((item1 == null) && (item2 != null)) {
            return 1;
        }
        else if ((item1 != null) && (item2 == null)) {
            return -1;
        }
        return 0;
    }

    var adrPoint1 = item1[0];
    var adrPoint2 = item2[0];
    if (adrPoint1.x < adrPoint2.x) {
        return -1;
    }
    else if (adrPoint1.x > adrPoint2.x) {
        return 1;
    }
    else {
        if (adrPoint1.y < adrPoint2.y) {
            return 1;
        }
        else if (adrPoint1.y > adrPoint2.y) {
            return -1;
        }
    }
    return 0;
}

function palaceMarkers2() {
    map.removeOverlay(markersOverlay);
    var lenAddresses = googleMapAddresses.length;
    if (lenAddresses > 0) {
        points = null;
        points = [];

        isMarkerInStore = null;
        isMarkerInStore = [];

        var nullVar = null;
        for (jja = 0; jja < lenAddresses; jja++) {
            points.push(nullVar);
        }
        for (jj = 0; jj < lenAddresses; jj++) {
            isMarkerInStore.push(false);
        }

        customMapOverlay = null;
        customMapOverlay = document.createElement("div");
        customMapOverlay.style.position = "absolute";
        customMapOverlay.style.left = "0px";
        customMapOverlay.style.top = "0px";
        customMapOverlay.id = "customMapOverlay";
        var zeroPoint = new GPoint(0, 0);
        var zeroLatLng = map.fromContainerPixelToLatLng(zeroPoint);
        var zoom = map.getZoom();
        var cOverlay;
        if (zoom == 1) {
            cOverlay = new CustomOverlay(zeroLatLng, customMapOverlay, 525, 35);
        }
        else {
            cOverlay = new CustomOverlay(zeroLatLng, customMapOverlay, 9, 35);
        }
        map.addOverlay(cOverlay);
        markersOverlay = cOverlay;

        for (j = 0; j < lenAddresses; j++) {
            cycleCounter = 0;
            setMarkerN(j, pageIDs[j]);
        }
        if (gTownsInfoStatus == "renew") {
            GetTownsInfoByCountry();
        }
        else {
            enableCtrls();
        }
    }
    else {
        enableCtrls();
    }
}

function pausecomp(millis) {
    var date = new Date();
    var curDate = null;

    do { curDate = new Date(); }
    while (curDate - date < millis);
}

function setMarkersFirstTime(count, pageIDVar) {
    var countCount = count + count;
    var lat = pointsLatsLngs[countCount];
    if (lat == null) {
        var nullVar = null;
        anchorsStore.push(nullVar);
        isMarkerInStore[count] = false;
        points[count] = null;
    }
    else {
        var lng = pointsLatsLngs[parseInt(countCount) + 1];
        var adr = new GLatLng(lat, lng);
        var adrPoint = gFirstAdrPoints[count];

        var anchor = document.createElement("a");
        anchor.style.position = "absolute";
        anchor.style.left = adrPoint.x + "px";
        anchor.style.top = adrPoint.y + "px";

//        var divBrowserType = getDivBrouserType();
//        var browserType = divBrowserType.innerHTML;
//        if ((browserType == "IE") || (browserType == "IE6")) {
//            anchor.attachEvent("onmouseover", function() { DisplayInfoWindow(pageIDVar, lat, lng, count) });
//        }
//        else {
//            anchor.setAttribute("onmouseover", "DisplayInfoWindow(" + pageIDVar + ", " + lat + ", " + lng + ", " + count + ")");
//        }
        
        anchor.href = "javascript:DisplayInfoWindow(" + pageIDVar + ", " + lat + ", " + lng + ", " + count + ")";

//        var spanForImg = markersStore[count];
        if (isMarkerVisible[count] == "yes") {
            anchor.style.visibility = "visible";
        }
        else {
            anchor.style.visibility = "hidden";
        }
        //        anchor.appendChild(spanForImg);
        anchor.innerHTML = markersStore[count];

        anchorsStore.push(anchor);

        customMapOverlay.appendChild(anchor);

        points[count] = adr;

        isMarkerInStore[count] = true;
    }
}

function setMarkerN(count, pageIDVar) {
    var countCount = count + count;
    var lat = pointsLatsLngs[countCount];
    if (lat == null) {
        //No code needed here.
    }
    else {
        var anchor = anchorsStore[count];

        var lng = pointsLatsLngs[parseInt(countCount) + 1];
        var adr = new GLatLng(lat, lng);
        var adrPoint = map.fromLatLngToContainerPixel(adr);
        anchor.style.left = adrPoint.x + "px";
        anchor.style.top = adrPoint.y + "px";

        if (isMarkerVisible[count] == "yes") {
            anchor.style.visibility = "visible";
        }
        else {
            anchor.style.visibility = "hidden";
        }
        customMapOverlay.appendChild(anchor);

        points[count] = adr;

        isMarkerInStore[count] = true;
    }
}

function DisplayInfoWindow(pageIDVar, lat, lng, count) {
  var iItems = [];
  iItems = GetIItems(pageIDVar, "ShowCustomInfoWindow", lat, lng);
        if (iItems != "") {
          ShowCustomInfoWindow(iItems, pageIDVar, lat, lng);
        }
        var zoom = map.getZoom();
}

function ShowCustomInfoWindow(iItems, pageIDVar, lat, lng) {
    var tempLL = new GLatLng(lat, lng);

    var substance = getSubstance(iItems, 1, pageIDVar);

    tempPoint = tempLL;
    
    var elements = document.createElement("div");
    elements.innerHTML = "";

    elements.innerHTML = substance;

    tempInnerHTML = elements.innerHTML;
    tempElement = elements;
    if (tempRect != null) {
        map.removeOverlay(tempRect);
        tempRect = null;
        infoWindowCategory = null;
    }
    initializeProbe();

    var markerLatLng = tempLL;

    var lenPoints = points.length;
    for (ad = 0; ad < lenPoints; ad++) {
      if ((isset(points[ad])) && (points[ad] != null)) {
        if (pageIDs[ad] == pageIDVar) {
          infoWindowCategory = categoryNumbers[ad];
          break;
        }
      }
    }
    SetLeftBoxInfo(iItems, pageIDVar);
    if (typeof (OnCustomInfoWindowShown) != 'undefined') {
      OnCustomInfoWindowShown(iItems, infoWindowCategory);
    }  
}

    //Control1
    function TextualZoomControl() { } 
    // To "subclass" the GControl, we set the prototype object to
    // an instance of the GControl object
    TextualZoomControl.prototype = new GControl();
    // Creates a one DIV for each of the buttons and places them in a container
    // DIV which is returned as our control element. We add the control to
    // to the map container and return the element for the map class to
    // position properly.
    TextualZoomControl.prototype.initialize = function(map) {

        var imageURLDiv = getDivImagesURL();
        imageURL = imageURLDiv.innerHTML;
        var divBrowserType = getDivBrouserType();
        var browserType = divBrowserType.innerHTML;

        var container = document.createElement("div");

        var zoomInPlus = setZoomInPlus(browserType);
        container.appendChild(zoomInPlus);
        var br1 = document.createElement("br");
        container.appendChild(br1);

        containerPost = document.createElement("div");
        containerPost.style.position = "absolute";
        containerPost.style.left = "5px";
        containerPost.style.top = "27px";

        setZoomPostTop(browserType);
        setZoomPostPart("post_1.png", 16);
        setZoomPostPart("post_2.png", 15);
        setZoomPostPart("post_3.png", 14);
        setZoomPostPart("post_4.png", 13);
        setZoomPostPart("post_5.png", 12);
        setZoomPostPart("post_6.png", 11);
        setZoomPostPart("post_7.png", 10);
        setZoomPostPart("post_8.png", 9);
        setZoomPostPart("post_9.png", 8);
        setZoomPostPart("post_10.png", 7);
        setZoomPostPart("post_11.png", 6);
        setZoomPostPart("post_12.png", 5);
        setZoomPostPart("post_13.png", 4);
        setZoomPostPart("post_14.png", 3);
        setZoomPostPart("post_15.png", 2);
        setZoomPostBottomPart(browserType);

        container.appendChild(containerPost);

        var br18 = document.createElement("br");
        container.appendChild(br18);
        var zoomInMinus = setZoomInMinus(browserType);
        container.appendChild(zoomInMinus);

        map.getContainer().appendChild(container);

        setZoomDot(browserType);
        map.getContainer().appendChild(zoomDot);

        return container;
    }

    function setZoomInPlus(browserType) {
        var zoomInPlus = document.createElement("img");
        if (browserType == "IE6") {
            zoomInPlus.src = imageURL + "plus.gif";
        }
        else {
            zoomInPlus.src = imageURL + "plus.png";
        }
        zoomInPlus.style.cursor = "pointer";
        zoomInPlus.style.position = "absolute";
        GEvent.addDomListener(zoomInPlus, "click", function() {
            if (gStatusChanges != "no") {
                zoomV = map.getZoom();
                if (zoomV != 17) {
                    disableCtrlsShort();
                    closeInfoWindow();
                    map.zoomIn();
                    moveZoomDot(parseInt(zoomV) + 1);
                    palaceMarkers2();
                }
                if (gIsDraging == "no") {
                    map.enableDragging();
                    gIsDraging = "yes";
                }
                if (customMoveControlPresent == "no") {
                    map.addControl(customMoveControl);
                    customMoveControlPresent = "yes";
                }
            }
        });
        
        return zoomInPlus;
    }

    function setZoomPostTop(browserType) {
        var zoomPostTop = document.createElement("img");
        if (browserType == "IE6") {
            zoomPostTop.src = imageURL + "post_top.gif";
        }
        else {
            zoomPostTop.src = imageURL + "post_top_1.png";
        }
        zoomPostTop.style.cursor = "pointer";
        GEvent.addDomListener(zoomPostTop, "click", function() {
            zoomPartClick(17);
        });
        containerPost.appendChild(zoomPostTop);
    }

    function setZoomDot(browserType) {
        zoomDot = document.createElement("img");
        if (browserType == "IE6") {
            zoomDot.src = imageURL + "point.gif";
        }
        else {
            zoomDot.src = imageURL + "point.png";
        }
        zoomDot.style.position = "absolute";
        zoomDot.style.left = "45px";
        var topCalc;
        if (countryZoom != null) {
            topCalc = 116 + (17 - countryZoom) * 6;
        }
        else {
            topCalc = 116 + (17 - startZoom) * 6;
        }
        zoomDot.style.top = "" + topCalc + "px";
    }

    function setZoomInMinus(browserType) {
        var zoomInMinus = document.createElement("img");
        if (browserType == "IE6") {
            zoomInMinus.src = imageURL + "minusIE6.gif";
        }
        else {
            zoomInMinus.src = imageURL + "minus.png";
        }
        zoomInMinus.style.cursor = "pointer";
        zoomInMinus.style.position = "absolute";
        zoomInMinus.style.top = "134px";
        GEvent.addDomListener(zoomInMinus, "click", function() {
            if (gStatusChanges != "no") {
                zoomV = map.getZoom();
                if (zoomV == 2) {
                    map.disableDragging();
                    gIsDraging = "no";
                    if (customMoveControlPresent == "yes") {
                        map.removeControl(customMoveControl);
                        customMoveControlPresent = "no";
                    }
                }
                if (zoomV != 1) {
                    disableCtrlsShort();
                    closeInfoWindow();
                    map.zoomOut();
                    moveZoomDot(parseInt(zoomV) - 1);
                    palaceMarkers2();
                }
            }
        });
        
        return zoomInMinus;
    }

    function setZoomPostBottomPart(browserType) {
        var br17 = document.createElement("br");
        containerPost.appendChild(br17);
        var zoomPostBottom = document.createElement("img");
        if (browserType == "IE6") {
            zoomPostBottom.src = imageURL + "post_bottom.gif";
        }
        else {
            zoomPostBottom.src = imageURL + "post_bottom_1.png";
        }
        zoomPostBottom.style.cursor = "pointer";
        GEvent.addDomListener(zoomPostBottom, "click",
            zoomPartBottomClick);
        containerPost.appendChild(zoomPostBottom);
    }

    function zoomPartBottomClick() {
        if (gStatusChanges != "no") {
            disableCtrlsShort();
            closeInfoWindow();
            map.disableDragging();
            gIsDraging = "no";
            if (customMoveControlPresent == "yes") {
                map.removeControl(customMoveControl);
                customMoveControlPresent = "no";
            }
            map.setZoom(1);
            moveZoomDot(1);
            palaceMarkers2();
        }
    }

    function setZoomPostPart(imageVar, zoom) {
        var br = document.createElement("br");
        containerPost.appendChild(br);
        var zoomPost = document.createElement("img");
        zoomPost.src = imageURL + imageVar;
        zoomPost.style.cursor = "pointer";
        GEvent.addDomListener(zoomPost, "click", function() {
            zoomPartClick(zoom);
        });
        containerPost.appendChild(zoomPost);
    }

    function zoomPartClick(zoom) {
        if (gStatusChanges != "no") {
            disableCtrlsShort();
            closeInfoWindow();
            map.setZoom(parseInt(zoom));
            moveZoomDot(parseInt(zoom));
            palaceMarkers2();
            if (gIsDraging == "no") {
                map.enableDragging();
                gIsDraging = "yes";
            }
            if (customMoveControlPresent == "no") {
                map.addControl(customMoveControl);
                customMoveControlPresent = "yes";
            }
        }
    }
    
    TextualZoomControl.prototype.getDefaultPosition = function() {
        return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(40, 90));
    }
    // Sets the proper CSS for the given button element.
    //TextualZoomControl.prototype.setButtonStyle_ = function(button) {
    //    button.style.textDecoration = "underline";
    //    button.style.color = "#0000cc";
    //    button.style.backgroundColor = "white";
    //    button.style.font = "small Arial";
    //    button.style.border = "1px solid black";
    //    button.style.padding = "2px";
    //    button.style.marginBottom = "3px";
    //    button.style.textAlign = "center";
    //    button.style.width = "6em";
    //    button.style.cursor = "pointer";
    //}

    function moveZoomDot(zoomVar) {
        if ((isset(zoomDot)) && (zoomDot != null)) {
            map.getContainer().removeChild(zoomDot);
        }

        var divBrowserType = getDivBrouserType();
        var browserType = divBrowserType.innerHTML;

        zoomDot = null;
        zoomDot = document.createElement("img");
        if (browserType == "IE6") {
            zoomDot.src = imageURL + "point.gif";
        }
        else {
            zoomDot.src = imageURL + "point.png";
        }
        zoomDot.style.position = "absolute";
        zoomDot.style.left = "45px";
        var topCalc = 116 + (17 - parseInt(zoomVar)) * 6;
        zoomDot.style.top = "" + topCalc + "px";
        map.getContainer().appendChild(zoomDot);
    }

//Control2 - moving the map.
function CustomMoveControl() { }
// To "subclass" the GControl, we set the prototype object to
// an instance of the GControl object
CustomMoveControl.prototype = new GControl();
// Creates a one DIV for each of the buttons and places them in a container
// DIV which is returned as our control element. We add the control to
// to the map container and return the element for the map class to
// position properly.
CustomMoveControl.prototype.initialize = function(map) {

    var imageURLDiv = getDivImagesURL();
    imageURL = imageURLDiv.innerHTML;
    var divBrowserType = getDivBrouserType();
    var browserType = divBrowserType.innerHTML;

    var container = document.createElement("div");

    var moveFrame = document.createElement("img");
    if (browserType == "IE6") {
        moveFrame.src = imageURL + "square_1.gif";
    }
    else {
        moveFrame.src = imageURL + "frame.png";
    }
    moveFrame.style.position = "absolute";
    moveFrame.style.left = "14px";
    moveFrame.style.top = "12px";
    container.appendChild(moveFrame);

    var moveUp = document.createElement("img");
    if (browserType == "IE6") {
        moveUp.src = imageURL + "north.gif";
    }
    else {
        moveUp.src = imageURL + "north.png";
    }
    moveUp.style.cursor = "pointer";
    moveUp.style.position = "absolute";
    moveUp.style.left = "21px";
    GEvent.addDomListener(moveUp, "click", function() {
        if (gStatusChanges != "no") {
            var mapZoom = map.getZoom();
            if (mapZoom == 2) {
                disableCtrlsShorter();
            }

            oldCenter = map.getCenter();
            var centerPoint = map.fromLatLngToDivPixel(map.getCenter());
            centerPoint.y = centerPoint.y - 250;
            var newCenter = map.fromDivPixelToLatLng(centerPoint);
            var isInfoWindow = false;
            if (tempRect != null) {
                isInfoWindow = true;
            }
            closeInfoWindow();
            map.setCenter(newCenter);
            if (mapZoom == 2) {
                palaceMarkers2();
                enableCtrlsShorter();
            }
            var zoom = map.getZoom();
            //        if (zoom <= 4) {
            //            palaceMarkers2();
            //        }
            if (isInfoWindow) {
                initializeInfoWindowWithoutCenter();
            }
        }
    });
    container.appendChild(moveUp);
    var br1 = document.createElement("br");
    container.appendChild(br1);
    var moveLeft = document.createElement("img");
    if (browserType == "IE6") {
        moveLeft.src = imageURL + "east.gif";
    }
    else {
        moveLeft.src = imageURL + "west.png";
    }
    moveLeft.style.cursor = "pointer";
    moveLeft.style.position = "absolute";
    moveLeft.style.top = "20px";
    GEvent.addDomListener(moveLeft, "click", function() {
        if (gStatusChanges != "no") {
            var mapZoom = map.getZoom();
            if (mapZoom == 2) {
                disableCtrlsShorter();
            }

            oldCenter = map.getCenter();
            var centerPoint = map.fromLatLngToDivPixel(map.getCenter());
            centerPoint.x = centerPoint.x - 250;
            var newCenter = map.fromDivPixelToLatLng(centerPoint);
            var isInfoWindow = false;
            if (tempRect != null) {
                isInfoWindow = true;
            }
            closeInfoWindow();
            map.setCenter(newCenter);
            if (mapZoom == 2) {
                palaceMarkers2();
                enableCtrlsShorter();
            }
            var zoom = map.getZoom();
            //        if (zoom <= 4) {
            //            palaceMarkers2();
            //        }
            if (isInfoWindow) {
                initializeInfoWindowWithoutCenter();
            }
        }
    });
    container.appendChild(moveLeft);
    var moveRight = document.createElement("img");
    if (browserType == "IE6") {
        moveRight.src = imageURL + "west.gif";
    }
    else {
        moveRight.src = imageURL + "east.png";
    }
    moveRight.style.cursor = "pointer";
    moveRight.style.position = "absolute";
    moveRight.style.left = "40px";
    moveRight.style.top = "20px";
    GEvent.addDomListener(moveRight, "click", function() {
        if (gStatusChanges != "no") {
            var mapZoom = map.getZoom();
            if (mapZoom == 2) {
                disableCtrlsShorter();
            }

            oldCenter = map.getCenter();
            var centerPoint = map.fromLatLngToDivPixel(map.getCenter());
            centerPoint.x = centerPoint.x + 250;
            var newCenter = map.fromDivPixelToLatLng(centerPoint);
            var isInfoWindow = false;
            if (tempRect != null) {
                isInfoWindow = true;
            }
            closeInfoWindow();
            map.setCenter(newCenter);
            if (mapZoom == 2) {
                palaceMarkers2();
                enableCtrlsShorter();
            }
            var zoom = map.getZoom();
            //        if (zoom <= 4) {
            //            palaceMarkers2();
            //        }
            if (isInfoWindow) {
                initializeInfoWindowWithoutCenter();
            }
        }
    });
    container.appendChild(moveRight);
    var br2 = document.createElement("br");
    container.appendChild(br2);
    var moveDown = document.createElement("img");
    if (browserType == "IE6") {
        moveDown.src = imageURL + "south.gif";
    }
    else {
        moveDown.src = imageURL + "south.png";
    }
    moveDown.style.cursor = "pointer";
    moveDown.style.position = "absolute";
    moveDown.style.left = "21px";
    moveDown.style.top = "39px";
    GEvent.addDomListener(moveDown, "click", function() {
        if (gStatusChanges != "no") {
            var mapZoom = map.getZoom();
            if (mapZoom == 2) {
                disableCtrlsShorter();
            }

            oldCenter = map.getCenter();
            var centerPoint = map.fromLatLngToDivPixel(map.getCenter());
            centerPoint.y = centerPoint.y + 250;
            var newCenter = map.fromDivPixelToLatLng(centerPoint);
            var isInfoWindow = false;
            if (tempRect != null) {
                isInfoWindow = true;
            }
            closeInfoWindow();
            map.setCenter(newCenter);
            if (mapZoom == 2) {
                palaceMarkers2();
                enableCtrlsShorter();
            }
            var zoom = map.getZoom();
            //        if (zoom <= 4) {
            //            palaceMarkers2();
            //        }
            if (isInfoWindow) {
                initializeInfoWindowWithoutCenter();
            }
        }
    });
    container.appendChild(moveDown);

    var moveBack = document.createElement("img");
    if (browserType == "IE6") {
        moveBack.src = imageURL + "middle.gif";
    }
    else {
        moveBack.src = imageURL + "centre_1.png";
    }
    moveBack.style.cursor = "pointer";
    moveBack.style.position = "absolute";
    if (browserType == "IE6") {
        moveBack.style.left = "23px";
        moveBack.style.top = "21px";
    }
    else {
        moveBack.style.left = "22px";
        moveBack.style.top = "20px";
    }
    GEvent.addDomListener(moveBack, "click", function() {
        if (gStatusChanges != "no") {
            if (oldCenter != null) {
                var mapZoom = map.getZoom();
                if (mapZoom == 2) {
                    disableCtrlsShorter();
                }

                var isInfoWindow = false;
                if (tempRect != null) {
                    isInfoWindow = true;
                }
                closeInfoWindow();
                map.setCenter(oldCenter);
                if (mapZoom == 2) {
                    palaceMarkers2();
                    enableCtrlsShorter();
                }
                var zoom = map.getZoom();
                //            if (zoom <= 4) {
                //                palaceMarkers2();
                //            }
                if (isInfoWindow) {
                    initializeInfoWindowWithoutCenter();
                }
            }
        }
    });
    container.appendChild(moveBack);



    //    var zoomInDiv = document.createElement("div");
    //    this.setButtonStyle_(zoomInDiv);
    //    container.appendChild(zoomInDiv);
    //    zoomInDiv.appendChild(document.createTextNode("Zoom In"));
    //    GEvent.addDomListener(zoomInDiv, "click", function() {
    //        map.zoomIn(); });
    map.getContainer().appendChild(container);
    return container;
}

CustomMoveControl.prototype.getDefaultPosition = function() {
    return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(19, 20));
}

//CustomInfoWindow
//
////
// A Rectangle is a simple overlay that outlines a lat/lng bounds on the
// map. It has a border of the given weight and color and can optionally
// have a semi-transparent background color.
function Rectangle(topLeftPointVar, offsetVar, browserType, opt_weight, opt_color) {

    this.topLeftPoint_ = topLeftPointVar;
    this.offsetVar_ = offsetVar;
    this.weight_ = opt_weight || 1;
    this.color_ = opt_color || "#B2B2B2";
    this.browserType_ = browserType;
}
Rectangle.prototype = new GOverlay();
// Creates the DIV representing this rectangle.
Rectangle.prototype.initialize = function(map) {
    var divImgsUrl = getDivImagesURL();
    var imagesUrl = divImgsUrl.innerHTML;
    var divMiddleIWURL = getDivMiddleInfoWindowURL();
    var middleInfoWindowURL = divMiddleIWURL.innerHTML;

    var divUp = document.createElement("div");
    divUp.style.position = "absolute";
    var imgUp = document.createElement("img");
    imgUp.src = imagesUrl + "img_1top.gif";
    divUp.appendChild(imgUp);

    var anchorClose = document.createElement("a");
    anchorClose.href = "javascript:closeInfoWindow()";
    anchorClose.style.position = "absolute";
    anchorClose.style.left = "247px";
    anchorClose.style.top = "3px";
    var imgClose = document.createElement("img");
    //    imgClose.src = imagesUrl + "close_1.gif";
    imgClose.src = imagesUrl + "form_nature_luk_icon_15.gif";
    anchorClose.appendChild(imgClose);
    divUp.appendChild(anchorClose);

    var imgDown = document.createElement("img");
    imgDown.src = imagesUrl + "img_1bottom.gif";
    imgDown.style.position = "absolute";

    var imgMiddleBackground = document.createElement("img");
    imgMiddleBackground.src = middleInfoWindowURL + "?offsetVar=" + this.offsetVar_;
    imgMiddleBackground.style.position = "absolute";

    //  Create the DIV representing our rectangle
    var div = document.createElement("div");
    div.style.borderLeft = this.weight_ + "px solid " + this.color_;
    div.style.borderRight = this.weight_ + "px solid " + this.color_;
    //    div.style.backgroundColor = "#FFFFFF";
    div.style.position = "absolute";
    div.innerHTML = tempInnerHTML;

    var imgPointer = document.createElement("img");
    imgPointer.src = imagesUrl + "img_1_1.gif";
    imgPointer.style.position = "absolute";

    //     Our rectangle is flat against the map, so we add our selves to the
    //     MAP_PANE pane, which is at the same z-index as the map itself (i.e.,
    //     below the marker shadows)
    map.getPane(G_MAP_FLOAT_PANE).appendChild(imgMiddleBackground);
    map.getPane(G_MAP_FLOAT_PANE).appendChild(imgDown);
    map.getPane(G_MAP_FLOAT_PANE).appendChild(div);
    map.getPane(G_MAP_FLOAT_PANE).appendChild(divUp);
    map.getPane(G_MAP_FLOAT_PANE).appendChild(imgPointer);

    this.map_ = map;
    this.imgMiddleBackground_ = imgMiddleBackground;
    this.div_ = div;
    this.divUp_ = divUp;
    this.imgDown_ = imgDown;
    this.imgPointer_ = imgPointer;

}

// Remove the main DIV from the map pane
Rectangle.prototype.remove = function() {
    this.imgMiddleBackground_.parentNode.removeChild(this.imgMiddleBackground_);
    this.div_.parentNode.removeChild(this.div_);
    this.divUp_.parentNode.removeChild(this.divUp_);
    this.imgDown_.parentNode.removeChild(this.imgDown_);
    this.imgPointer_.parentNode.removeChild(this.imgPointer_);
}

// Copy our data to a new Rectangle
Rectangle.prototype.copy = function() {
    return new Rectangle(this.topLeftPoint_, this.offsetVar_, this.browserType_, this.weight_, this.color_,
                           this.backgroundColor_, this.opacity_);
}

// Redraw the rectangle based on the current projection and zoom level
Rectangle.prototype.redraw = function(force) {
    // We only need to redraw if the coordinate system has changed
    if (!force) return;

    var browserDiff = 0;
    if (this.browserType_ == 'NotIE') {
        browserDiff = 1;
    }
    // Calculate the DIV coordinates of two opposite corners of our bounds to
    // get the size and position of our rectangle
    var c1 = this.topLeftPoint_;

    this.imgMiddleBackground_.style.left = (c1.x - this.weight_ + 1) + "px";
    this.imgMiddleBackground_.style.top = (c1.y - this.weight_ + 10) + "px";
    
    // Now position our DIV based on the DIV coordinates of our bounds
    this.div_.style.width = "248px";
    //    this.div_.style.height = Math.abs(c2.y - c1.y) + "px";
    this.div_.style.left = (c1.x - this.weight_) + "px";
    this.div_.style.top = (c1.y - this.weight_ + 10 ) + "px";

    //    this.divUp_.style.width = this.div_.style.width;
    //    this.divUp_.style.height = 20 + "px";
    this.divUp_.style.left = (c1.x - this.weight_ - 15) + "px";
    this.divUp_.style.top = (c1.y - this.weight_) + "px";

    //    this.divDown_.style.width = this.div_.style.width;
    //    this.divDown_.style.height = 20 + "px";
    this.imgDown_.style.left = (c1.x - this.weight_ - 15) + "px";
    this.imgDown_.style.top = ((c1.y - this.weight_) + this.offsetVar_ + 10) + "px";

    this.imgPointer_.style.left = (c1.x - this.weight_ - 15) + "px";
    this.imgPointer_.style.top = ((c1.y - this.weight_) + (this.offsetVar_ / 2) + 3) + "px";
    
}

function initializeProbe() {

    var probeElement = document.getElementById('divContentOffset');  
    probeElement.innerHTML = tempInnerHTML;
    var tempOffset;
    if (probeElement.offsetHeight) {
        tempOffset = probeElement.offsetHeight;
    }
    else if (document.defaultView) {
        var defVal = document.defaultView;
        if (defVal.getComputedStyle()) {
            tempOffset = defVal.getComputedStyle(probeElement);
        }
        else {
            tempOffset = 0;
        }
    }
    else {
        tempOffset = 0;
    }

    var bounds = map.getBounds();
    var southWest = bounds.getSouthWest();
    var northEast = bounds.getNorthEast();
    var northEastPixels = map.fromLatLngToDivPixel(northEast);
    var southWestPixels = map.fromLatLngToDivPixel(southWest);
    var tempGPoint1 = map.fromLatLngToDivPixel(tempPoint);
    var topLeftPoint = new GPoint();
    topLeftPoint.x = tempGPoint1.x + 45;
    topLeftPoint.y = tempGPoint1.y - 30 - (tempOffset/2) - 1;

    //reCenter the map, if needed to show the whole info window.
    var pathCheckerVertical = false;
    if ((topLeftPoint.y - 50) < northEastPixels.y) {
        var diff = northEastPixels.y - (topLeftPoint.y - 50);
        var centerLatLng = map.getCenter();
        var centerPixels = map.fromLatLngToDivPixel(centerLatLng);
        centerPixels.y = centerPixels.y - diff;
        centerLatLng = map.fromDivPixelToLatLng(centerPixels);
        map.setCenter(centerLatLng);
        bounds = map.getBounds();
        southWest = bounds.getSouthWest();
        northEast = bounds.getNorthEast();
        northEastPixels = map.fromLatLngToDivPixel(northEast);
        southWestPixels = map.fromLatLngToDivPixel(southWest);
        tempGPoint1 = map.fromLatLngToDivPixel(tempPoint);
        topLeftPoint.x = tempGPoint1.x + 45;
        topLeftPoint.y = tempGPoint1.y - 30 - (tempOffset / 2) - 1;
        pathCheckerVertical = true;
    }
    if (((topLeftPoint.y + 10 + tempOffset + 10) > southWestPixels.y) && (pathCheckerVertical == false)) {
        var diff4 = (topLeftPoint.y + 10 + tempOffset + 10) - southWestPixels.y;
        var centerLatLng4 = map.getCenter();
        var centerPixels4 = map.fromLatLngToDivPixel(centerLatLng4);
        centerPixels4.y = centerPixels4.y + diff4;
        centerLatLng = map.fromDivPixelToLatLng(centerPixels4);
        map.setCenter(centerLatLng);
        bounds = map.getBounds();
        southWest = bounds.getSouthWest();
        northEast = bounds.getNorthEast();
        northEastPixels = map.fromLatLngToDivPixel(northEast);
        southWestPixels = map.fromLatLngToDivPixel(southWest);
        tempGPoint1 = map.fromLatLngToDivPixel(tempPoint);
        topLeftPoint.x = tempGPoint1.x + 45;
        topLeftPoint.y = tempGPoint1.y - 30 - (tempOffset / 2) - 1;
    }
    var pathChecker = false;
    if ((topLeftPoint.x - 76) < southWestPixels.x) {
        var diff2 = southWestPixels.x - (topLeftPoint.x - 76);
        var centerLatLng2 = map.getCenter();
        var centerPixels2 = map.fromLatLngToDivPixel(centerLatLng2);
        centerPixels2.x = centerPixels2.x - diff2;
        centerLatLng2 = map.fromDivPixelToLatLng(centerPixels2);
        map.setCenter(centerLatLng2);
        pathChecker = true;
    }
    if (((topLeftPoint.x + 250) > northEastPixels.x) && (pathChecker == false)) {
        var diff3 = (topLeftPoint.x + 250) - northEastPixels.x;
        var centerLatLng3 = map.getCenter();
        var centerPixels3 = map.fromLatLngToDivPixel(centerLatLng3);
        centerPixels3.x = centerPixels3.x + diff3;
        centerLatLng3 = map.fromDivPixelToLatLng(centerPixels3);
        map.setCenter(centerLatLng3);
    }
    tempGPoint1 = map.fromLatLngToDivPixel(tempPoint);
    topLeftPoint.x = tempGPoint1.x + 45;
    topLeftPoint.y = tempGPoint1.y - 30 - (tempOffset / 2) - 1;

    var browserType = getDivBrouserType().innerHTML;

    var rect = new Rectangle(topLeftPoint, tempOffset, browserType);
    tempRect = rect;
    map.addOverlay(rect);

}

function initializeInfoWindowWithoutCenter() {
    var probeElement = document.getElementById('divContentOffset');  
    probeElement.innerHTML = tempInnerHTML;
    var tempOffset;
    if (probeElement.offsetHeight) {
        tempOffset = probeElement.offsetHeight;
    }
    else if (document.defaultView) {
        var defVal = document.defaultView;
        if (defVal.getComputedStyle()) {
            tempOffset = defVal.getComputedStyle(probeElement);
        }
        else {
            tempOffset = 0;
        }
    }
    else {
        tempOffset = 0;
    }

    var tempGPoint1 = map.fromLatLngToDivPixel(tempPoint);
    var topLeftPoint = new GPoint();
    topLeftPoint.x = tempGPoint1.x + 45;
    topLeftPoint.y = tempGPoint1.y - 30 - (tempOffset / 2) - 1;
    var browserType = getDivBrouserType().innerHTML;

    var rect = new Rectangle(topLeftPoint, tempOffset, browserType);
    tempRect = rect;
    map.addOverlay(rect);
}

function closeInfoWindow() {
    if (tempRect != null) {
        map.removeOverlay(tempRect);
        tempRect = null;
        infoWindowCategory = null;
    }
}

function BeforeSelectedCenterMap() {
    var townsSelectCenter = document.getElementById('selectTownCenter')
    townsSelectCenter.disabled = "disabled";
    cycleCounter = 0;
    SelectedCenterMap();
}

function SelectedCenterMap() {
    disableCtrlsShort();
    var oldZoom = map.getZoom();
    var selCenter = document.getElementById('selectCenter');
    var code = selCenter.options[selCenter.selectedIndex].value;
    var index = getIndex(code);

    gCountrtInd = index;
    var leftBoxPageID = countryLeftBoxPageIDs[index];
    if ((leftBoxPageID != "") && (leftBoxPageID != null)) {
        var iItems;
        iItems = GetIItems(leftBoxPageID, "SetLeftBoxInfo", 0, 0);
        if (iItems != "") {
            SetLeftBoxInfo(iItems, leftBoxPageID);
        }
    }
    else {
        var leftBoxTop = document.getElementById('leftBoxTop');
        var pDivLeftBoxMiddle = document.getElementById('pDivLeftBoxMiddle');
        var pUlLeftBoxMiddle = document.getElementById('pUlLeftBoxMiddle');
        pDivLeftBoxMiddle.innerHTML = "";
        pUlLeftBoxMiddle.innerHTML = "";
        pDivLeftBoxMiddle.style.display = "none";
        pUlLeftBoxMiddle.style.display = "none";
        leftBoxTop.style.display = "none";
    }
    
    var lat = cLats[index];
    var lng = cLngs[index];
    var centerLatLng = new GLatLng(lat, lng);
    countryCode = code;
    var isInfoWindow = false;
    if (tempRect != null) {
        isInfoWindow = true;
    }
    closeInfoWindow();
    map.setCenter(centerLatLng);
    gIsInfoWindow = isInfoWindow;
    gStatus = "SelectedCenterMap";
    //    setCountryZoom();
    countryZoom = cZooms[index];
    if (countryZoom == 1) {
        map.disableDragging();
        gIsDraging = "no";
    }
    map.setZoom(parseInt(countryZoom));
    moveZoomDot(parseInt(countryZoom));
    if (gStatus == "SelectedCenterMap") {
        if (oldZoom != countryZoom) {
            gTownsInfoStatus = "renew";
            palaceMarkers2();
            if (gIsInfoWindow == true) {
                initializeInfoWindowWithoutCenter();
            }
        }
        else {
            var lenAddresses = googleMapAddresses.length;
            gTownsInfoStatus = "renew";
            if (lenAddresses > 0) {
                GetTownsInfoByCountry();
            }
            else {
                enableCtrls();
            }
        }
    }
}

function enableCtrlsShort() {
    var zoom = map.getZoom();
    if (gIsDraging == "no") {
        if (zoom > 1) {
            map.enableDragging();
            gIsDraging = "yes";
        }
    }
    if ((gStatusChanges != "first") && (customMoveControlPresent == "no")) {
        if (zoom > 1) {
            map.addControl(customMoveControl);
            customMoveControlPresent = "yes";
        }
    }
    var selectCenter = document.getElementById('selectCenter');
    selectCenter.disabled = false;
    var selectCategory = document.getElementById('selectTownCenter');
    selectCategory.disabled = false;
    enableCheckBoxes();
    gStatusChanges = "yes";
}

function disableCtrlsShort() {
    var selectCenter = document.getElementById('selectCenter');
    selectCenter.disabled = "disabled";
    var selectCategory = document.getElementById('selectTownCenter');
    selectCategory.disabled = "disabled";
    disableCheckBoxes();
    map.disableDragging();
    gIsDraging = "no";
    if (customMoveControlPresent == "yes") {
        var zoom = map.getZoom();
        if (zoom <= 1) {
            map.removeControl(customMoveControl);
            customMoveControlPresent = "no";
        }
    }
    gStatusChanges = "no";
}

function disableCtrlsShorter() {
    var selectCenter = document.getElementById('selectCenter');
    selectCenter.disabled = "disabled";
    var selectCategory = document.getElementById('selectTownCenter');
    selectCategory.disabled = "disabled";
    disableCheckBoxes();
    if (map.draggingEnabled()) {
        map.disableDragging();
        gIsDraging = "no";
    }
    gStatusChanges = "no";
}

function enableCtrlsShorter() {
    var zoom = map.getZoom();
    if (gIsDraging == "no") {
        if ((zoom > 1) && (!(map.draggingEnabled()))) {
            map.enableDragging();
            gIsDraging = "yes";
        }
    }
    var selectCenter = document.getElementById('selectCenter');
    selectCenter.disabled = false;
    var selectCategory = document.getElementById('selectTownCenter');
    selectCategory.disabled = false;
    enableCheckBoxes();
    gStatusChanges = "yes";
}

function enableCheckBoxes() {
    var len = checkBoxesNumber;
    var i;
    for (i = 0; i < len; i++) {
        var checkBoxId = "categoryCheckBox" + i;
        var chkBox = document.getElementById(checkBoxId);
        chkBox.disabled = false;
    }
}

function disableCheckBoxes() {
    var len = checkBoxesNumber;
    var i;
    for (i = 0; i < len; i++) {
        var checkBoxId = "categoryCheckBox" + i;
        var chkBox = document.getElementById(checkBoxId);
        chkBox.disabled = "disabled";
    }
}

function getIndex(code) {
    var result = null;
    var len = cCodes.length;
    var i = 0;
    var isFinish = false;
    while ((isFinish == false) && (i < len)) {
        if (cCodes[i] == code) {
            result = i;
            isFinish = true;
        }
        i = i + 1;
    }
    return result;
}


    function GetAJAXInfoItems(pageIdent, status, lat, lng) {
        var message = "";
        var methodName = "GetInfoItems";
        var pageURL = "/Templates/Contact/ContactMain.aspx";

        var url = pageURL + "?callback=true&mn=" + methodName;

        var xmlhttp, e;
        try {
            xmlhttp = new XMLHttpRequest();
        }
        catch (e) {
            var ee;
            try {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (ee) {
                message = 'System svigt.';
            }
        }
        if (message == 'System svigt.') {
            return "";
        }

        //  asynchronous with the "true" value for the last parameter.
        xmlhttp.open("POST", url, true);
        xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        var data = 'pageIdent=' + pageIdent;

        xmlhttp.onreadystatechange = function() {
          if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            var infoItems = xmlhttp.responseText;
            IWCashPageID.push(pageIdent);
            IWCashInfo.push(infoItems);
            if (infoItems != "") {
              UseAJAXInfo(infoItems, pageIdent, status, lat, lng);
            }
          }
        }

        xmlhttp.send(data);

        return "";
    }

    function afterInfoWindowService(result) {
//        alert("afterInfoWindowService");
        var infoItems = result;
        IWCashPageID.push(gggPageIDVar);
        IWCashInfo.push(infoItems);
        if (infoItems != "") {
          UseAJAXInfo(infoItems, gggPageIDVar, gggStatus, gggLat, gggLng);
        }
    }

    function UseAJAXInfo(infoItems, pageIDVar, status, lat, lng) {
        var iItems = [];
        iItems = FromInfoItemsToIItems(infoItems);
        if (status == "SetLeftBoxInfo") {
            //        status = null;
            SetLeftBoxInfo(iItems, pageIDVar);
        }
        else if (status == "ShowCustomInfoWindow") {
            //        status = null;
            ShowCustomInfoWindow(iItems, pageIDVar, lat, lng);
        }
    }

    function SetLeftBoxInfo(iItems, pageIDVar) {

        // <!-- greybox_middle -->
        //        <div class="address">
        //          <!-- addres -->
        //          <address>
        //            <p id="pAddress"></p>
        //            <p id="pPhone" class="bkg_padding bkg_phone"></p>
        //            <p id="pFax" class="bkg_padding bkg_paper none"></p>
        //            <p id="pMail" class="none"></p>
        //            <p id="pProductionDescription" class="none"></p>
        //          </address>
        //        </div>
        //        <!--address-->
        //        <ul class="left_Nav">
        //          <li id="liPictureGallery"></li>
        //          <li id="liVideo"></li>
        //        </ul>

        var leftBoxTop = document.getElementById('leftBoxTop');
        var pDivLeftBoxMiddle = document.getElementById('pDivLeftBoxMiddle');
        var pUlLeftBoxMiddle = document.getElementById('pUlLeftBoxMiddle');
        leftBoxTop.style.display = "block";
        pDivLeftBoxMiddle.style.display = "block";
        pUlLeftBoxMiddle.style.display = "block";

        var substance = "";
        substance = substance + "<address>";
        if ((iItems[0] != null) && (iItems[0] != "") && (iItems[0] != 'undefined')) {
            substance = substance + "<p>" + iItems[0] + "</p>";
        }
        if ((iItems[1] != null) && (iItems[1] != "") && (iItems[1] != 'undefined')) {
            substance = substance + "<p class=\"bkg_padding bkg_phone\">" + iItems[1] + "</p>";
        }
        if ((iItems[2] != null) && (iItems[2] != "") && (iItems[2] != 'undefined')) {
            substance = substance + "<p class=\"bkg_padding bkg_paper none\">" + iItems[2] + "</p>";
        }
        if ((iItems[3] != null) && (iItems[3] != "") && (iItems[3] != 'undefined')) {
            substance = substance + "<p class=\"none\">" +
                        "<a name='emailLinkAddress' href=\"mailto:" + iItems[3] + "\" class=\"bkg_Address\">" +
                         iItems[3] + 
                        "</a>" + "</p>";
        }
        //                    alert("iItems[4] " + iItems[4]);
        if ((iItems[4] != "<BR>") && (iItems[4] != "<br />") && (iItems[4] != null) && (iItems[4] != "") && (iItems[4] != 'undefined')) {
            substance = substance + "<br /><p class=\"none\">" + iItems[4] + "</p>";
        }
        
        if (!(
        ((iItems[6] != null) && (iItems[6] != "") && (iItems[6] != 'undefined'))
        ||
        ((iItems[7] != null) && (iItems[7] != "") && (iItems[7] != 'undefined'))
        )) {
            substance = substance + "<br />";
        }
        
        substance = substance + "</address>";
        pDivLeftBoxMiddle.innerHTML = substance;

        substance = "";
        if (
        ((iItems[6] != null) && (iItems[6] != "") && (iItems[6] != 'undefined'))
        ||
        ((iItems[7] != null) && (iItems[7] != "") && (iItems[7] != 'undefined'))
        ) {
            if ((iItems[6] != null) && (iItems[6] != "") && (iItems[6] != 'undefined')) {
                substance = substance + "<li>" + "<a onclick=\"ShowGalleryPopup(" + pageIDVar + ")\" style=\"cursor:pointer;\">" + iItems[6] + "</a>" + "</li>";
            }
            if ((iItems[7] != null) && (iItems[7] != "") && (iItems[7] != 'undefined')) {
                substance = substance + "<li>" + "<a onclick=\"javascript:ShowVideoPopup(" + pageIDVar + ")\" style=\"cursor:pointer;\">" + iItems[7] + "</a>" + "</li>";
            }
        }
        if (substance == "") {
            pUlLeftBoxMiddle.style.display = "none";
        }
        else {
            pUlLeftBoxMiddle.style.display = "";
            pUlLeftBoxMiddle.innerHTML = substance;
          }
          if (gTownsAfterStartInfoWindow == "yes") {
            gTownsAfterStartInfoWindow = "no"
            FindTownsInfo(gLenAddresses);
          }
    }

    function GetIItems(pageIDVar, status, lat, lng) {
        var isFound = false;
        var lenIWCashPageID = IWCashPageID.length;
        var ac = 0;
        var infoItems = "";
        var dInfoItems;
        var dIItems;
        var iItemsContainer;
        var lenIItems;
        while ((!isFound) && (ac < lenIWCashPageID)) {
            if ((IWCashPageID[ac]) == pageIDVar) {
                isFound = true;
                infoItems = IWCashInfo[ac];
            }
            ac = ac + 1;
        }
        if (!isFound) {
            startInfoWindowService(pageIDVar);
            gggStatus = status;
            gggLat = lat;
            gggLng = lng;
            gggPageIDVar = pageIDVar;
            
        }
        if ((isFound) && (infoItems != "")) {
            var iItems = [];
            iItems = FromInfoItemsToIItems(infoItems);
            return iItems;
        }
        return "";
    }

    function startInfoWindowService(pageID) {
//        alert("startInfoWindowService");
        GetServiceInfoItems(pageID);
    }

    function FromInfoItemsToIItems(infoItems) {
        dInfoItems = getDivInfoItems();
        dInfoItems.innerHTML = infoItems;
        dIItems = getDivInfoItems();
        iItemsContainer = dIItems.childNodes;
        lenIItems = iItemsContainer.length;
        var iItems = [];
        if (lenIItems > 0) {
            for (ab = 0; ab < lenIItems; ab++) {
                iItems.push(iItemsContainer[ab].innerHTML);
            }
        }
        return iItems;
    }

    function setMarkersVisibility(categoryNumber) {
//        alert("categoryNumber " + categoryNumber);
        var checkInput = document.getElementById("categoryCheckBox" + categoryNumber);
        var lenCatNums;       
        if (checkInput.checked == true) {
            lenCatNums = categoryNumbers.length;
            for (i = 0; i < lenCatNums; i++) {
                if (categoryNumbers[i] == categoryNumber) {
                    if (isMarkerInStore[i]) {
                        anchorsStore[i].style.visibility = "visible";
                        isMarkerVisible[i] = "yes";
                    }
                }
            }
        }
        else {
            if (infoWindowCategory != null) {
                if (infoWindowCategory == categoryNumber) {
                    closeInfoWindow();
                }
            }
            lenCatNums = categoryNumbers.length;
            for (i = 0; i < lenCatNums; i++) {
                if (categoryNumbers[i] == categoryNumber) {
                    if (isMarkerInStore[i]) {
                        anchorsStore[i].style.visibility = "hidden";
                        isMarkerVisible[i] = "no";
                    }
                }
            }
        }
    }

    function getHeight(element) {
        var tempOffset;
        if (element.offsetHeight) {
            tempOffset = element.offsetHeight;
        }
        else if (document.defaultView) {
            var defVal = document.defaultView;
            if (defVal.getComputedStyle()) {
                tempOffset = defVal.getComputedStyle(element);
            }
            else {
                tempOffset = 0;
            }
        }
        else {
            tempOffset = 0;
        }
        return tempOffset;
    }


    function getSubstance(iItems, heightSubstance, pageIDVar) {
//        alert("pageIDVar " + pageIDVar);
        //                    <div class="map_position">
        //                                       		 <div class="address_map address_map_bkg">
        //                                                <address>
        //                                                        <p>
        //                                                           Akafa<br />

        //                                                           Svenstrup Skolevej 25<br />
        //                                                           9230 Svenstrup J</p><br />
        //                                                           
        //                                                        <p>Telefon:	(+45) 99 39 29 00</p>
        //                                                        <p>Fax:	(+45) 99 39 29 99</p>
        //                                                        <p>Produktion:	Mælkepulver og sterilfløde</p>
        //                                                 </address> 
        //                                            </div>

        //                                            
        //                                            <ul class="left_nav">
        //                                                <li><a href="#" class="bkg_triangle_green">Se billeder</a></li>
        //                                                <li><a href="#" class="bkg_triangle_green">Se video</a></li>
        //                                            </ul>
        //                                       </div>
        var divBrowserType = getDivBrouserType();
        var browserType = divBrowserType.innerHTML;
        
        var substance = "";
        var imageTopCalc = 0;
        substance = substance + "<div class=\"map_position_new\"><div class=\"address_map_new\"><address>" + "<p>";
        if ((iItems[0] != null) && (iItems[0] != "") && (iItems[0] != 'undefined')) {
            substance = substance + "<span style=\"float:left;clear:both;width:210px;\" >" + iItems[0] + "</span>" + "<br />";
        }
        //img.src = icons[0] + "?f=" + icons[aabbaabb + 1] + "&w=180&h=0&r=0&o=&k=True&cr=" + icons[aabbaabb + 2] + "&crcwp=&crchp=&rc=0";
        if ((iItems[5] != null) && (iItems[5] != "") && (iItems[5] != 'undefined')) {
            if (browserType != "IE6") {
                substance = substance + "<img style=\"position:absolute;top:9px;left:216px;" + "\" alt=\"\" src=\"" + dynImgHandlerURL + "?f=" + iItems[5] + "&w=29&h=34&r=0&o=&k=True&cr=" + iItems[10] + "&crcwp=&crchp=&rc=" + iItems[11] + "\"/>";
            }
            else {
                var divImagesURL = getDivImagesURL();
                var imagesURL = divImagesURL.innerHTML;
                substance = substance + "<span style=\"position:absolute;top:9px;left:216px;\" >";
                substance = substance + "<img style=\"width:29px;height:34px;border-width:0px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'ImageHandler.ashx?f=" + iItems[5] + "&w=29&h=34&r=0&o=&k=True&cr=" + iItems[10] + "&crcwp=&crchp=&rc=" + iItems[11] + "\', sizingMethod=\'(1)\');\"" + " alt=\"\" src=\"" + imagesURL + "blank.gif\"" + " />";
                substance = substance + "</span>";
            }

        }
        if (browserType != "IE6") {
            substance = substance + "<span class=\"clear\"></span>";
        }
        if ((iItems[1] != null) && (iItems[1] != "") && (iItems[1] != 'undefined')) {
          substance = substance + "<span class=\"address_map_new_markerInfoWindowText\" style=\"float:left;clear:both;margin-top:10px;\" >" + $t("contactMainMapInformationWindow/telephone") + iItems[1] + "</span>" + "<br />";
        }
        if ((iItems[2] != null) && (iItems[2] != "") && (iItems[2] != 'undefined')) {
          substance = substance + "<span class=\"address_map_new_markerInfoWindowText\" style=\"float:left;clear:both;display:inline;\">" + $t("contactMainMapInformationWindow/fax") + iItems[2] + "</span>" + "<br />";
        }
        if ((iItems[3] != null) && (iItems[3] != "") && (iItems[3] != 'undefined')) {
          substance = substance + "<span class=\"address_map_new_markerInfoWindowText\" style=\"float:left;clear:both;\">" +
                        $t("contactMainMapInformationWindow/email") + "<a href=\"mailto:" + iItems[3] + "\">" +
                         iItems[3] +
                        "</a>" + "</span>";
        }
        substance = substance + "</p>";
        if ((iItems[4] != "<BR>") && (iItems[4] != "<br />") && (iItems[4] != null) && (iItems[4] != "") && (iItems[4] != 'undefined')) {
//            substance = substance + "<br style=\"clear:both;\" /><br /><p><span style=\"clear:both;\">" + iItems[4] + "</span>" + "</p>";
            substance = substance + "<br style=\"clear:both;\" />";
            if (browserType != "IE6") {
                substance = substance + "<br />";
            }
            substance = substance + "<p>" + iItems[4] + "</p>";
        }
        substance = substance + "</address></div>";

        if (
    (iItems[8] != null) && (iItems[8] != "") && (iItems[8] != 'undefined')
    ||
    (iItems[9] != null) && (iItems[9] != "") && (iItems[9] != 'undefined')
    ) {
            //            if ((iItems[4] != "<BR>") && (iItems[4] != "<br />") && (iItems[4] != null) && (iItems[4] != "") && (iItems[4] != 'undefined')) {
            substance = substance + "<br style=\"clear:both;\" />";
            //            }
            if (!((iItems[4] != "<BR>") && (iItems[4] != "<br />") && (iItems[4] != null) && (iItems[4] != "") && (iItems[4] != 'undefined'))) {
                substance = substance + "<br />";
            }
            substance = substance + "<ul style=\"clear:both;\" class=\"left_nav\">";
            if ((iItems[8] != null) && (iItems[8] != "") && (iItems[8] != 'undefined')) {
                substance = substance + "<li style=\"list-style-type:none;margin-left:-2px;width:230px;\"><a onclick=\"ShowGalleryPopup(" + pageIDVar + ")\"  style=\"cursor:pointer;\" class=\"bkg_triangle_green\">" + iItems[8] + "</a></li>";
            }
            if ((iItems[9] != null) && (iItems[9] != "") && (iItems[9] != 'undefined')) {
                substance = substance + "<li style=\"list-style-type:none;margin-left:-2px;width:230px;\"><a onclick=\"javascript:ShowVideoPopup(" + pageIDVar + ")\" style=\"cursor:pointer;\" class=\"bkg_triangle_green\">" + iItems[9] + "</a></li>";
            }
            substance = substance + "</ul>";
        }

        substance = substance + "</div>";
//        substance = substance + "pageId " + pageIDVar + " iItems4" + iItems[4] + "iItems4";
        return substance;
    }

    //Custom Overlay

    function CustomOverlay(point, element, shiftLeft, shiftTop) {
        this.point_ = point;
        this.element_ = element;
        this.shiftTop_ = 0;
        this.shiftLeft_ = 0;

        if (typeof (shiftTop) != 'undefined') {
            this.shiftTop_ = shiftTop;
        }

        if (typeof (shiftLeft) != 'undefined') {
            this.shiftLeft_ = shiftLeft;
        }

        this.index = 0;
    }
    CustomOverlay.prototype = new GOverlay();

    // Creates the DIV representing this overlay
    CustomOverlay.prototype.initialize = function(map) {
        //    var div = document.createElement("div");
        //    div.style.position = "absolute";
        //    div.innerHTML = this.html_;

        // Our rectangle is flat against the map, so we add our selves to the
        // MAP_PANE pane, which is at the same z-index as the map itself (i.e.,
        // below the marker shadows)
        map.getPane(G_MAP_MARKER_PANE).appendChild(this.element_);

        this.map_ = map;
        //    this.div_ = div;
    }

    // Remove the main DIV from the map pane
    CustomOverlay.prototype.remove = function() {
        this.element_.parentNode.removeChild(this.element_);
    }

    // Copy our data to a new object
    CustomOverlay.prototype.copy = function() {
        return new CustomOverlay(this.point_, this.element_);
    }

    // Redraw the overlay based on the current projection and zoom level
    CustomOverlay.prototype.redraw = function(force) {
        // We only need to redraw if the coordinate system has changed
        if (!force) return;

        var pointPixels = this.map_.fromLatLngToDivPixel(this.point_);

        this.element_.style.left = (pointPixels.x - this.shiftLeft_) + "px";
        this.element_.style.top = (pointPixels.y - this.shiftTop_) + "px";
    }

    CustomOverlay.prototype.setShiftValues = function(x, y) {
        if (typeof (x) != 'undefined') {
            this.shiftLeft_ = x;
        }

        if (typeof (y) != 'undefined') {
            this.shiftTop_ = y;
        }
    }

    //Towns Info

    function setTownsInfo(townsInfo) {
        //        alert("setTownsInfo");

        townsSelectCenterTempInit();

        var len = townsInfo.length;

        var townsSelectCenter = document.getElementById('selectTownCenter');

        if (len > 0) {
            var i;

            for (i = 0; i < len; i++) {
                var townInfo = townsInfo[i];
                var addr = townInfo.mAddress;
                var valueVar = null;
                if ((addr != "") && (addr != null) && (addr != 'undefined')) {
                //No code needed here.
                }
                else {
                    var lat = townInfo.mLat;
                    var lng = townInfo.mLng;
                    var zoom = townInfo.mZoom;
                    var cityContactItemPageID = townInfo.mCityContactItemPageId;
                    var infoWindowLat = townInfo.mInfoWindowLat;
                    var infoWindowLng = townInfo.mInfoWindowLng;
                    gTempTownsLats.push(lat);
                    gTempTownsLngs.push(lng);
                    gTempTownsZooms.push(zoom);
                    gTempTownsContactItemPageIDs.push(cityContactItemPageID);
                    gTempTownsInfoWindowLats.push(infoWindowLat);
                    gTempTownsInfoWindowLngs.push(infoWindowLng);
                }

                var opt = document.createElement('option');
                opt.text = townInfo.mDisplayName;
                opt.value = parseInt(i) + 1;
                //append option at the end
                try {
                    // standards compliant; doesn't work in IE
                    townsSelectCenter.add(opt, null);
                }
                catch (ex) {
                    // IE only
                    townsSelectCenter.add(opt);
                }
            }
        }

        townsSelectCenter.selectedIndex = 0;

        if (gTownsInfoStatus == "renew") {
            enableCtrls();
            gTownsInfoStatus = "do not renew";
        }

        townsSelectCenter.disabled = false;
//        alert("setTownsInfoEnd");
    }

    function finishTownsInfo() {
        townsSelectCenterTempInit();
    
        var townsSelectCenter = document.getElementById('selectTownCenter');

        townsSelectCenter.selectedIndex = 0;
        if (gTownsInfoStatus == "renew") {
            enableCtrls();
            gTownsInfoStatus = "do not renew";
        }
        townsSelectCenter.disabled = false;
    }

    function townsSelectCenterTempInit() {
        var townsSelectCenter = document.getElementById('selectTownCenter');

        var len2 = townsSelectCenter.options.length;
        if (len2 > 0) {
            var j;
            for (j = (len2 - 1); j >= 0; j--) {
                townsSelectCenter.remove(j);
            }
        }

        gTempTownsLats = null;
        gTempTownsLats = [];
        gTempTownsLngs = null;
        gTempTownsLngs = [];
        gTempTownsZooms = null;
        gTempTownsZooms = [];
        gTempTownsContactItemPageIDs = null;
        gTempTownsContactItemPageIDs = [];
        gTempTownsInfoWindowLats = null;
        gTempTownsInfoWindowLats = [];
        gTempTownsInfoWindowLngs = null;
        gTempTownsInfoWindowLngs = [];

        //Country lat, lng and zoom.
        var tLL = map.getCenter();
        var coLat = tLL.lat();
        var coLng = tLL.lng();
        var coZoom = map.getZoom();
        gTempTownsLats.push(coLat);
        gTempTownsLngs.push(coLng);
        gTempTownsZooms.push(coZoom);
        var nullVar = null;
        gTempTownsContactItemPageIDs.push(nullVar);
        gTempTownsInfoWindowLats.push(nullVar);
        gTempTownsInfoWindowLngs.push(nullVar);

        var optFirst = document.createElement('option');
        optFirst.text = chooseTown;
        optFirst.value = "nothing";
        try {
            // standards compliant; doesn't work in IE
            townsSelectCenter.add(optFirst, null);
        }
        catch (ex) {
            // IE only
            townsSelectCenter.add(optFirst);
        }
    }

    function setTownCenter() {
        disableCtrlsShort();
        var oldZoom = map.getZoom();
        var townsSelectCenter = document.getElementById('selectTownCenter');
        townsSelectCenter.disabled = "disabled";
        var index = townsSelectCenter.selectedIndex;
        var ind = 0;
        if (index != 0) {
            ind = townsSelectCenter.options[index].value;
        }

        if (tempRect != null) {
            map.removeOverlay(tempRect);
            tempRect = null;
            infoWindowCategory = null;
        }

        var leftBoxPageID = null;
        if (ind == 0) {
            leftBoxPageID = countryLeftBoxPageIDs[gCountrtInd];
        }
        else {
            leftBoxPageID = gTempTownsContactItemPageIDs[ind];
        }

        if ((leftBoxPageID != "") && (leftBoxPageID != null)) {
            var iItems;
            iItems = GetIItems(leftBoxPageID, "SetLeftBoxInfo", 0, 0);
            if (iItems != "") {
                SetLeftBoxInfo(iItems, leftBoxPageID);
            }
        }
        else {
            var leftBoxTop = document.getElementById('leftBoxTop');
            var pDivLeftBoxMiddle = document.getElementById('pDivLeftBoxMiddle');
            var pUlLeftBoxMiddle = document.getElementById('pUlLeftBoxMiddle');
            pDivLeftBoxMiddle.innerHTML = "";
            pUlLeftBoxMiddle.innerHTML = "";
            pDivLeftBoxMiddle.style.display = "none";
            pUlLeftBoxMiddle.style.display = "none";
            leftBoxTop.style.display = "none";
        }

        var lat = gTempTownsLats[ind];
        var lng = gTempTownsLngs[ind];
        var zoom = gTempTownsZooms[ind];
        var addrPoint = new GLatLng(lat, lng);
        
        map.setCenter(addrPoint);
        if (zoom == 1) {
            map.disableDragging();
            gIsDraging = "no";
        }
        map.setZoom(parseInt(zoom));
        moveZoomDot(parseInt(zoom));

        if (ind != 0) {
            if ((leftBoxPageID != "") && (leftBoxPageID != null)) {
                var pageIndex = getIndexFromPageID(leftBoxPageID);
                var isVis = isMarkerVisible[pageIndex];
                if (isVis == "yes") {
                    DisplayInfoWindow(leftBoxPageID, gTempTownsInfoWindowLats[ind], gTempTownsInfoWindowLngs[ind], 0);
                }
            }
        }
        
        if ((zoom != 1) && (gIsDraging == "no")) {
            map.enableDragging();
            gIsDraging = "yes";
        }

        //        removeEmptyOption(townsSelectCenter);
        if (zoom != oldZoom) {
            palaceMarkers2();
        }
        else {
            enableCtrlsShort();
        }
        townsSelectCenter.disabled = false;
    }

    function getIndexFromPageID(pageID) {
        var len = pageIDs.length;
        var i = 0;
        var result = 0;
        var isFinish = false;
        while ((isFinish == false) && (i < len)) {
            if (pageIDs[i] == pageID) {
                result = i;
                isFinish = true;
            }
            i = i + 1;
        }
        return result;
    }

    function removeEmptyOption(selectCenter) {
        var len = selectCenter.options.length;
        if (len > 0) {
            var lastOpt = selectCenter.options[len - 1];
            if (lastOpt.value == "nothing") {
                selectCenter.remove(selectCenter.length - 1);
            }
        }
    }
    
    
