﻿var eventArgument;
var objGooglePosition;
var fishEyeLeftIndex = 0;
var fishEyeRightIndex = 0;
var fishEyeItemCount = 0;
var AllMapMarkers = new Array();

var MapBounds = null;
var southWest = null;
var northEast = null;
var divMap = null;
var divFishEye = null;
var divFishEyeContainer = null;

var divLeftArrow = null;
var divRightArrow = null;
var divLeftArrowOff = null;
var divRightArrowOff = null;
var currentRegionID = null;

var zoomBasedOnSparam = null;
var latCenter = null;
var longCenter = null;

var GooglePositionInfo = new Object();

function IsPictureInFishEye(SelectedMarker) {
    var allFishEyeElements = divFishEyeContainer.innerHTML.toLowerCase();

    if (allFishEyeElements.indexOf(SelectedMarker.FishEyeImage.toString().replace(/'/g, "\"")) > 0)
        return true;
    else
        return false;
}

function UpdateGoogleLocationInfo() {
    eventArgument = 'SetGooglePositionInfo';
    CallServer(eventArgument + "|" + GetJsonOfGooglePositionInfo(), '');
}

function GetJsonOfGooglePositionInfo() {
    var bounds = map.getBounds();

    map.setZoom(map.getBoundsZoomLevel(bounds));
    GooglePositionInfo.ZoomLevel = map.getZoom();
    GooglePositionInfo.CenterLat = map.getCenter().lat();
    GooglePositionInfo.CenterLng = map.getCenter().lng();
    GooglePositionInfo.SouthWestLat = bounds.getSouthWest().lat();
    GooglePositionInfo.SouthWestLng = bounds.getSouthWest().lng();
    GooglePositionInfo.NorthEastLat = bounds.getNorthEast().lat();
    GooglePositionInfo.NorthEastLng = bounds.getNorthEast().lng();

    var objectSerialized = Sys.Serialization.JavaScriptSerializer.serialize(GooglePositionInfo).toString();

    return objectSerialized;
}

function GetGooglePositionAndZoomLevel() {
    eventArgument = 'GetGooglePositionAndZoomLevel';
    CallServer(eventArgument, '');
}

function GetFishItemsHtml() {
    page = 0;
    var elements = BuildFishEyeElements();

    divFishEyeContainer.innerHTML = elements;

    SetupFishEye();
    //FishEyePaging();      
}

function GenerateFishItemHtmlPaging(action) {
    eventArgument = 'GenerateFishItemHtmlPaging';

    CallServer(eventArgument + ":" + fishEyeLeftIndex + ":" + fishEyeRightIndex + ":" + action, '');
}

function ReceiveServerData(arg) {
    switch (eventArgument) {
        case 'GetGooglePositionAndZoomLevel':
            {
                //alert(objGooglePosition.zoomLevel);
                objGooglePosition = Sys.Serialization.JavaScriptSerializer.deserialize(arg);
                StartingZoomLevel = objGooglePosition.zoomLevel;
                RegionalCenterLatitude = objGooglePosition.latitude;
                RegionalCenterLongitude = objGooglePosition.longitude;
                break;
            }
        case 'GetFishItemsHtml':
            {
                if (arg.toString().length == 0)
                    return;

                objFishEyeItem = Sys.Serialization.JavaScriptSerializer.deserialize(arg);

                if (objFishEyeItem.Items.length > 1)
                    divFishEyeContainer.innerHTML = objFishEyeItem.Items;

                SetupFishEye();
                FishEyePaging();
                break;
            }
        case 'GenerateFishItemHtmlPaging':
            {
                if (arg.toString().length == 0)
                    return;

                objFishEyeItem = Sys.Serialization.JavaScriptSerializer.deserialize(arg);
                if (objFishEyeItem.Items.length > 1)
                    divFishEyeContainer.innerHTML = objFishEyeItem.Items;

                SetupFishEye();
                FishEyePaging();
                break;
            }
    }

    eventArgument = '';
}

var ieBrowser = /undefined/.test(typeof (addEventListener));
var map = null;
var objFishEyeItem = null;

var MarkerMngr = null;

var selectedRegionRowId;
var selectedProvinceId;

var newRedIcon = new GIcon();
newRedIcon.image = '/sharedimages/GoogleMaps/ListingGroup_3.png';
newRedIcon.shadow = '/sharedimages/GoogleMaps/ListingGroup_3_shad.png';
newRedIcon.iconSize = new GSize(62, 62);
newRedIcon.shadowSize = new GSize(62, 62);
newRedIcon.iconAnchor = new GPoint(6, 20);
newRedIcon.infoWindowAnchor = new GPoint(10, 10);

var multiListingIcon = new GIcon();
multiListingIcon.image = '/sharedimages/GoogleMaps/multi_blue.png';
multiListingIcon.shadow = '/sharedimages/GoogleMaps/listing_shadow.png';
multiListingIcon.iconSize = new GSize(39, 39);
multiListingIcon.shadowSize = new GSize(39, 39);
multiListingIcon.iconAnchor = new GPoint(6, 20);
multiListingIcon.infoWindowAnchor = new GPoint(20, 15);

var propertyIconSold = new GIcon();
propertyIconSold.image = '/sharedimages/GoogleMaps/listing_red.png';
propertyIconSold.shadow = '/sharedimages/GoogleMaps/listing_shadow.png';
propertyIconSold.iconSize = new GSize(39, 39);
propertyIconSold.shadowSize = new GSize(39, 39);
propertyIconSold.iconAnchor = new GPoint(6, 20);
propertyIconSold.infoWindowAnchor = new GPoint(20, 15);

var propertyIconNotSold = new GIcon();
propertyIconNotSold.image = '/sharedimages/GoogleMaps/listing_blue.png';
propertyIconNotSold.shadow = '/sharedimages/GoogleMaps/listing_shadow.png';
propertyIconNotSold.iconSize = new GSize(39, 39);
propertyIconNotSold.shadowSize = new GSize(39, 39);
propertyIconNotSold.iconAnchor = new GPoint(6, 20);
propertyIconNotSold.infoWindowAnchor = new GPoint(20, 15);

var Fav_propertyIconSold = new GIcon();
Fav_propertyIconSold.image = '/sharedimages/GoogleMaps/listing_red_check.png';
Fav_propertyIconSold.shadow = '/sharedimages/GoogleMaps/listing_shadow.png';
Fav_propertyIconSold.iconSize = new GSize(39, 39);
Fav_propertyIconSold.shadowSize = new GSize(39, 39);
Fav_propertyIconSold.iconAnchor = new GPoint(6, 20);
Fav_propertyIconSold.infoWindowAnchor = new GPoint(20, 15);

var Fav_propertyIconNotSold = new GIcon();
Fav_propertyIconNotSold.image = '/sharedimages/GoogleMaps/listing_blue_check.png';
Fav_propertyIconNotSold.shadow = '/sharedimages/GoogleMaps/listing_shadow.png';
Fav_propertyIconNotSold.iconSize = new GSize(39, 39);
Fav_propertyIconNotSold.shadowSize = new GSize(39, 39);
Fav_propertyIconNotSold.iconAnchor = new GPoint(6, 20);
Fav_propertyIconNotSold.infoWindowAnchor = new GPoint(20, 15);

var MarkersRemoved = false

function MapZoomEnd() {

    ClearMarkers();

    LoadMore();
}

function MapDragEnd() {

    LoadMore();
}

function LoadMore() {
    setTimeout(function() {
        return function() {
            var gLa = map.getCenter();
            UpdateGoogleLocationInfo();
            LoadRegions({ RegionID: selectedRegionId, AlreadyLoaded: true });
        }
    } (), 30)
}

function ClearMarkers() {
    for (var i = 0; i < AllListeners.length; i++) {
        GEvent.removeListener(AllListeners[i])
    }

    AllListeners = new Array();
    MarkerMngr.clearMarkers();
    MarkerMngr.refresh();

    Array.clear(AllMapMarkers);
}

function GetVisibleMarkers() {
    var arrayResult = new Array();
    var MapBound = map.getBounds();
    var mapSwLat = MapBound.getSouthWest().lat();
    var mapSwLng = MapBound.getSouthWest().lng();
    var mapNeLat = MapBound.getNorthEast().lat();
    var mapNeLng = MapBound.getNorthEast().lng();

    for (var i = 0; i < AllMapMarkers.length; i++) {
        var markerLat = AllMapMarkers[i].getLatLng().lat();
        var markerLng = AllMapMarkers[i].getLatLng().lng();

        if (markerLat > mapSwLat && markerLat < mapNeLat && markerLng > mapSwLng && markerLng < mapNeLng)
            Array.add(arrayResult, AllMapMarkers[i]);
    }

    return arrayResult;
}

var page = 0;

function BuildFishEyeElements() {
    var start = 0
    var end = 0;

    var sbResult = new Sys.StringBuilder('');
    var MarkersVisible = new Array();
    MarkersVisible = GetVisibleMarkers();

    MarkersVisible.reverse();

    if (page == 0) {
        start = 0;
        end = MaxFishEyeItem;
    }
    else {
        start = page * MaxFishEyeItem;
        end = start + MaxFishEyeItem;
    }

    for (var i = start; i < end; i++) {
        if (i > MarkersVisible.length - 1)
            break;

        sbResult.append(String.format("<a class='dock-item2' href='javascript:(FullEyeHTMLEvents[{0}].PropertyListingInfoPopUp())'><span></span>{1}</a>", MarkersVisible[i].ItemIndex, MarkersVisible[i].FishEyeImage.toString()));
    }


    FishEyePaging(MarkersVisible);

    return sbResult;
}

function AddEyeToCurrentFishEye(MarkersVisible) {
    var start = 0
    var end = 0;

    var sbResult = new Sys.StringBuilder('');

    if (page == 0) {
        start = 0;
        end = MaxFishEyeItem;
    }
    else {
        start = (page - 1) * MaxFishEyeItem;
        end = start + MaxFishEyeItem;
    }

    for (var i = start; i < end; i++) {
        if (i > MarkersVisible.length - 1)
            break;

        sbResult.append(String.format("<a class='dock-item2' href='javascript:(FullEyeHTMLEvents[{0}].PropertyListingInfoPopUp())'><span></span>{1}</a>", MarkersVisible[i].ItemIndex, MarkersVisible[i].FishEyeImage.toString()));
    }


    divFishEyeContainer.innerHTML = sbResult.toString();
    SetupFishEye();
}

function ReloadFishEye() {
    divFishEyeContainer.innerHTML = BuildFishEyeElements();
    SetupFishEye();
}

function FishEyePreviously() {
    page -= 2;
    ReloadFishEye();
}

function FishEyeNext() {
    ReloadFishEye();
}


function FishEyePaging(MarkersVisible) {
    var pages = MarkersVisible.length / MaxFishEyeItem;
    if (pages < 1) {
        divLeftArrow.style.display = 'none';
        divRightArrow.style.display = 'none';

        if (MarkersVisible.length > 0) {
            divLeftArrowOff.style.display = 'block';
            divRightArrowOff.style.display = 'block';
        }
        else {
            divLeftArrowOff.style.display = 'none';
            divRightArrowOff.style.display = 'none';
        }
        return;
    }

    page += 1;

    if (page > 1) {
        divLeftArrow.style.display = 'block';
        divLeftArrowOff.style.display = 'none';
    }
    else {
        divLeftArrow.style.display = 'none';
        divLeftArrowOff.style.display = 'block';
    }

    if (pages > page) {
        divRightArrow.style.display = 'block';
        divRightArrowOff.style.display = 'none';
    }
    else {
        divRightArrow.style.display = 'none';
        divRightArrowOff.style.display = 'block';
    }
}

function load2() {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("WorldMap"));
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        var center = new GLatLng(RegionalCenterLatitude, RegionalCenterLongitude)
        map.setCenter(center, StartingZoomLevel);
        map.disableScrollWheelZoom();

        GEvent.addListener(map, "zoomend", MapZoomEnd);
        GEvent.addListener(map, "dragend", MapDragEnd);
        GEvent.addListener(map, 'extinfowindowclose', enableMouseMovements);

        GMarker.prototype.PropertyListingInfo = null;
        GMarker.prototype.ItemIndex = null;
        GMarker.prototype.ListingKey = null;
        GMarker.prototype.FavouritesIcon = null;
        GMarker.prototype.NotFavouritesIcon = null;
        GMarker.prototype.ListingKeys = null;
        GMarker.prototype.FishEyeImage = null;
        GMarker.prototype.PropertyListingInfoPopUp =
      function() {
          this.openExtInfoWindow(map, "custom_info_window_bubble", divWrapper(this),
          {
              beakOffset: 3,
              paddingX: 60,
              paddingY: 30
          });
          disableMouseMovements();
          MarkerMngr.refresh();
      }
    }
    if (map != null) {
        map.clearOverlays();
        MarkerMngr = new MarkerManager(map);
    }
}

function disableMouseMovements() {
    map.disableDoubleClickZoom();
}

function enableMouseMovements() {
    map.enableDoubleClickZoom();
}

function divWrapper(marker) {

    if (!IsPictureInFishEye(marker))
        AddThisImageToCurrentFishEye(marker.ListingKeys);

    var cnt = marker.ListingKeys.length;
    var height = cnt > 2 ? '286px' : 'auto';
    var bubbleContents = AjaxMethods.GetGoogleBubbleContents(marker.ListingKeys).value;
    MarkerMngr.refresh();
    return "<div style='overflow-y:scroll;overflow-x:hidden;height:" + height + ";'>" + bubbleContents + "</div>";
}

function AddThisImageToCurrentFishEye(ListingKeys) {
    var MarkersVisible = new Array();
    MarkersVisible = GetVisibleMarkers();
    MarkersVisible.reverse();

    var newPosition = ((page - 1) * MaxFishEyeItem);
    for (var i = 0; i < MarkersVisible.length; i++) {
        if (i > MarkersVisible.length)
            break;

        if (MarkersVisible[i].ListingKeys == ListingKeys) {
            var tempItem = MarkersVisible[i];
            Array.removeAt(MarkersVisible, i);
            Array.insert(MarkersVisible, newPosition, tempItem);
            break;
        }
    }

    AddEyeToCurrentFishEye(MarkersVisible);
}

load = function() { }


function pageSetGoogleHeight() {

    var topNavHeight = 0;
    if (document.getElementById("Header").innerHTML != "") {
        var topNavHeight = document.getElementById("Header").offsetHeight;
    }

    var bannerHeight = topNavHeight + document.getElementById("TopNav").offsetHeight + document.getElementById("listing_title").offsetHeight + document.getElementById("listing_quicksearch").offsetHeight + 25;
    var qsBarWidth = document.getElementById("listing_quicksearch").offsetWidth;
    document.getElementById('WorldMap').style.width = qsBarWidth;
    document.getElementById('MapAndfishEye').style.width = qsBarWidth;

    var googleMaxHeight = 600;
    var googleMinHeight = 400;
    var windowH = 768; //default value;
    var mapH = googleMinHeight;
    var fishEyeHeight = 78;

    var bannerHeight = bannerHeight + fishEyeHeight;

    //var innerH = 0, bodyH = 0, elemH = 0;
    if (typeof window.innerHeight != "undefined") {
        windowH = window.innerHeight; //innerH = window.innerHeight;
    } else if (typeof document.body.clientHeight != "undefined") {
        windowH = document.body.clientHeight; //bodyH = document.body.clientHeight;
    } else if (typeof document.documentElement.clientHeight != "undefined") {
        windowH = document.documentElement.clientHeight; //elemH = document.documentElement.clientHeight;
    }

    //alert(mapH + "," + fishEyeHeight + "," + bannerHeight);	  
    if (windowH - bannerHeight)
        mapH = ((windowH - bannerHeight) > googleMaxHeight) ? googleMaxHeight : (windowH - bannerHeight);

    if (mapH < googleMinHeight) 
            mapH = googleMinHeight;
    
    document.getElementById('WorldMap').style.height = mapH;
    document.getElementById('MapAndfishEye').style.height = mapH + fishEyeHeight;
    document.getElementById('divMapContainer').style.height = mapH + fishEyeHeight; //a gap to invclude the fish eye  
    //document.getElementById('MapAndfishEye').style.top = (bannerHeight-fishEyeHeight) + "px";
}

function SetDomPosition() {
    var browser = DetectBrowserVersion(); //we need to work here no time for now;

    var mapSize = map.getSize();

    divFishEye.style.top = divMap.offsetHeight + divMap.offsetTop;
    divFishEye.style.left = divMap.offsetLeft;

    if (browser == 'FF') {
        divLeftArrow.style.top = divMap.offsetHeight + divMap.offsetTop + 8;
        divLeftArrow.style.left = divMap.offsetLeft;
        divRightArrow.style.top = divMap.offsetHeight + divMap.offsetTop + 8;
        divRightArrow.style.left = divMap.offsetLeft + mapSize.width - 12;
    }
    else {
        divLeftArrow.style.top = divMap.offsetHeight + divMap.offsetTop + 4;
        divLeftArrow.style.left = divMap.offsetLeft;
        divRightArrow.style.top = divMap.offsetHeight + divMap.offsetTop + 4;
        divRightArrow.style.left = divMap.offsetLeft + mapSize.width - 10;
    }

    divRightArrowOff.style.top = divRightArrow.style.top;
    divRightArrowOff.style.left = divRightArrow.style.left;

    divLeftArrowOff.style.top = divLeftArrow.style.top;
    divLeftArrowOff.style.left = divLeftArrow.style.left;
}

function pageLoad() {
    InitDom();
    pageSetGoogleHeight();
    load2();
    SetDomPosition();
    setTimeout(pageTimedLoad, 100);
}

function pageUnLoad() {
    GUnload();
}

function InitDom() {
    divMap = document.getElementById('WorldMap');
    divFishEye = document.getElementById('dock2');
    divFishEyeContainer = document.getElementById('dock-container2');

    divLeftArrow = document.getElementById('leftArrow');
    divRightArrow = document.getElementById('rightArrow');

    divLeftArrowOff = document.getElementById('leftArrowOff');
    divRightArrowOff = document.getElementById('rightArrowOff');
}

function DetectBrowserVersion() {
    var browser = 'IE';
    if (window.screen && window.screen.pixelDepth) /// this will be true only if is firefox or netscape
    {
        browser = 'FF';
    }

    return browser;
}


var Regions = null;
var AllListeners = new Array();
var FullEyeHTMLEvents = new Array();
var propertyAmount = 0;
var isGeneralZoomLevel = false;

function LoadRegions(FullOBJ) {
    if (SearchAgain) {
        ClearMarkers();
    }
    latCenter = null;
    longCenter = null;
    zoomBasedOnSparam = null;
    var SizeT = "" + 5;
    var MaxSizeCNT = "" + 100;
    var UseFullName = "(LatitudeStart,LatitudeEnd,LatitudeCenter,LongitudeStart,LongitudeEnd,LongitudeCenter,MatrixNum) "; //document.getElementById('UseFullName');
    MapBounds = map.getBounds();
    southWest = MapBounds.getSouthWest();
    northEast = MapBounds.getNorthEast();
    var Currentzoomlevel = map.getZoom()
    var zoomlevel = Currentzoomlevel
    var sqMeters = "0";
    var resetMarkers = '';

    var jsonGooglePositionInfo = GetJsonOfGooglePositionInfo();
    AllVals = AjaxMethods.GetRegions('' + FullOBJ.RegionID, jsonGooglePositionInfo, SizeT, MaxSizeCNT, UseFullName, SearchAgain);
    //debugger;
    // why?
    /*if (zoomlevel<15)
    zoomlevel+=3;
    else
    zoomlevel = 17;  
    */
    Regions = AllVals.value;

    var FullEyeHTML = new Array();

    if (!/undefined/i.test(typeof (Regions)) && Regions != null && !/undefined/i.test(typeof (Regions["length"])) && Regions.length != null) {

        var newMarkers = new Array();

        for (var x = 0; x < Regions.length; x++) {

            if (Regions[x][0] == "zoomBasedOnSparam") {
                zoomBasedOnSparam = Regions[x][1];
                continue;
            }
            if (Regions[x][0] == "latCenter") {
                latCenter = Regions[x][1];
                continue;
            }
            if (Regions[x][0] == "longCenter") {
                longCenter = Regions[x][1];
                continue;
            }
            if (Regions[x][0] == "PropertyAmount") {
                propertyAmount = Regions[x][1];
                continue;
            }
            if (zoomlevel > 3 && FullOBJ.AlreadyLoaded && Regions[x][1].getValue("added") != null)
                continue;

            if (zoomlevel > 3) {
                var BufLat = parseFloat(Regions[x][1].getValue("LatitudeCenter"))
            }
            else {
                var BufLat = 0;
            }
            if (BufLat < -90 || BufLat > 90)
                continue;

            if (zoomlevel > 3) {
                var BufLong = parseFloat(Regions[x][1].getValue("LongitudeCenter"))
            }
            else {
                var BufLong = 0;
            }
            if (BufLong < -90 || BufLong > 90)
                continue;

            if (zoomlevel > 3) {
                var isListingItem = /^ListingKey_/i.test(Regions[x][1].getValue("MatrixNum"));
            }
            else {
                var isListingItem = false;
            }
            var ListingCo_ords2 = new GLatLng(BufLat, BufLong);
            var marker2 = null;
            var fishEyeImage = '';

            if (isListingItem) {

                var markerExists = false;
                for (var g = 0; !markerExists && g < newMarkers.length; g++) {
                    if (newMarkers[g].getLatLng().equals(ListingCo_ords2)) {
                        markerExists = true;
                        newMarkers[g].ListingKeys[newMarkers[g].ListingKeys.length] = Regions[x][1].getValue("ListingKey");
                        FullEyeHTMLEvents[FullEyeHTMLEvents.length] = newMarkers[g];

                        fishEyeImage = Regions[x][1].getValue("FishEyeImage");
                    }
                }


                if (markerExists)
                    continue;

                var latlngfound = false;
                for (var x2 = x + 1; x2 < Regions.length && !latlngfound; x2++) {

                    if (Regions[x2][0] == "zoomBasedOnSparam")
                        continue;
                    if (Regions[x2][0] == "latCenter")
                        continue;
                    if (Regions[x2][0] == "longCenter")
                        continue;
                    if (Regions[x2][0] == "PropertyAmount")
                        continue;

                    if (Regions[x2][1].getValue("LatitudeCenter") == Regions[x][1].getValue("LatitudeCenter") && Regions[x2][1].getValue("LongitudeCenter") == Regions[x][1].getValue("LongitudeCenter")) {
                        latlngfound = true;
                        marker2 = new LabeledMarker(ListingCo_ords2, { "icon": multiListingIcon,
                            "clickable": true,
                            "labelOffset": new GSize(5, 10)
                        });
                    }
                }
                if (!latlngfound) {
                    var isFav = /1/i.test(Regions[x][1].getValue("isFav"));
                    if (isFav) {
                        marker2 = new LabeledMarker(ListingCo_ords2, { "icon": (/1/.test(Regions[x][1].getValue("isSold")) ? Fav_propertyIconSold : Fav_propertyIconNotSold),
                            "clickable": true,
                            "labelOffset": new GSize(5, 10)
                        });
                    } else {
                        marker2 = new LabeledMarker(ListingCo_ords2, { "icon": (/1/.test(Regions[x][1].getValue("isSold")) ? propertyIconSold : propertyIconNotSold),
                            "clickable": true,
                            "labelOffset": new GSize(5, 10)
                        });
                    }
                    marker2.FavouritesIcon = /1/.test(Regions[x][1].getValue("isSold")) ? Fav_propertyIconSold.image : Fav_propertyIconNotSold.image;
                    marker2.NotFavouritesIcon = /1/.test(Regions[x][1].getValue("isSold")) ? propertyIconSold.image : propertyIconNotSold.image;
                }
                marker2.ListingKey = Regions[x][1].getValue("ListingKey");
                marker2.ListingKeys = new Array();
                marker2.ListingKeys[0] = Regions[x][1].getValue("ListingKey");

                AllListeners[AllListeners.length] = GEvent.addListener(marker2, "click", marker2.PropertyListingInfoPopUp);
                marker2.ItemIndex = FullEyeHTMLEvents.length;
                FullEyeHTMLEvents[FullEyeHTMLEvents.length] = marker2;

                fishEyeImage = Regions[x][1].getValue("FishEyeImage");

            } else if (zoomlevel > 3 && parseInt(Regions[x][1].getValue("InternetListingCount")) < 6) {
                continue;
            }
            else {
                if (parseInt(Regions[x][1].getValue("InternetListingCount")) > 6) {
                    isGeneralZoomLevel = true;
                }
                if (zoomlevel > 3) {
                    marker2 = new LabeledMarker(ListingCo_ords2,
                                      { "icon": newRedIcon,
                                          "clickable": true,
                                          "labelText": "<span style = 'font-size:10px'>" + Regions[x][1].getValue("LabelText") + "</span>",
                                          "labelOffset": new GSize(17, -4)
                                      }
                                    );
                }

                if (zoomlevel > 3) {
                    AllListeners[AllListeners.length] = GEvent.addListener(marker2, "click",
              function() {
                  map.closeExtInfoWindow();
                  map.setCenter(this.getLatLng(), zoomlevel);
              }
            );
                }
            }
            if (zoomlevel > 3) {
                marker2.FishEyeImage = fishEyeImage;
                newMarkers[newMarkers.length] = marker2;
            }

            if (isListingItem)
                AddMarkersToGlobalArrayOfMarkers(marker2);
        }
        //debugger;
        MarkerMngr.addMarkers(newMarkers, (Currentzoomlevel < 18 ? Currentzoomlevel : 17), (Currentzoomlevel < 18 ? Currentzoomlevel : 17))
        MarkerMngr.refresh();


        if (SearchAgain && Regions.length > 0 && newMarkers.length > 0) {
            FitMapCenterAndZoom(newMarkers);
        }


        DisplayPropertyAmount();

        GetFishItemsHtml();

        SearchAgain = false;
    }
    ZoomInBasedOnSparam();
}

function ZoomInBasedOnSparam() {
    if (GBrowserIsCompatible() && zoomBasedOnSparam != null) {
        if (latCenter != null && longCenter != null) {
            var center = new GLatLng(latCenter, longCenter);
            map.setCenter(center, zoomBasedOnSparam);
        }
        else
            map.setCenter(map.getCenter(), zoomBasedOnSparam);
    }
}

function AddMarkersToGlobalArrayOfMarkers(Mrk) {
    if (AllMapMarkers.length == 0) {
        Array.add(AllMapMarkers, Mrk);
        return;
    }
    for (var i = 0; i < AllMapMarkers.length; i++) {
        if (AllMapMarkers[i].ListingKey == Mrk.ListingKey)
            return;
    }

    Array.add(AllMapMarkers, Mrk);

    return;
}

function FitMapCenterAndZoom(newMarkers) {
    var bounds = new GLatLngBounds();
    for (var i = 0; i < newMarkers.length; i++) {
        bounds.extend(newMarkers[i].getPoint());
    }
    var zoomLevel = map.getZoom();
    //if (isGeneralZoomLevel) zoomLevel = 10;  // Why?
    map.setZoom(zoomLevel);
    map.setCenter(bounds.getCenter());

    UpdateGoogleLocationInfo();
}

function FavClicked(Params) {
    for (var x = 0; x < FullEyeHTMLEvents.length; x++) {
        if (FullEyeHTMLEvents[x].ListingKey == Params.ListingKey) {
            FullEyeHTMLEvents[x].setImage(Params.Checked ? FullEyeHTMLEvents[x].FavouritesIcon : FullEyeHTMLEvents[x].NotFavouritesIcon)
            break;
        }
    }
}

function DisplayPropertyAmount() {
    if (propertyAmount > 0) {
        document.getElementById("PropertyAmount").innerHTML = "<b>Property Amount: </b>" + propertyAmount.toString();
        document.getElementById("PropertyAmount").style.display = 'block';
    }
    else
        document.getElementById("PropertyAmount").style.display = 'none';
}
