﻿function loadPoints(map, coordinatesString, geocoder, currentPage, saveClicks) {
    map.clearOverlays();
    setVisibility(true);
  var query = localUrl + currentPage + coordinatesString + "&mode=map";
   // if (sortorder) query += sortorder;
  GDownloadUrl(query, function (data, responseCode) {
    var xml = GXml.parse(data);
    if (data != '') {
      var markers = xml.documentElement.getElementsByTagName("GoogleMarker");
      var selectedCounter = 2;
      var firstVisible = -1;
      var maximumNumberOfOffices = 200;

      if (markers.length < 200) maximumNumberOfOffices = markers.length;
      for (var i = 0; i < maximumNumberOfOffices; i++) {
        var showSelected = markers[i].getAttribute("ShowOnMap");
        if (showSelected == "true" && firstVisible == -1) {
          firstVisible = i;
        } else {
          var latlongpoint = new GLatLng(markers[i].getAttribute("Lat"), markers[i].getAttribute("Lng"));
          var url = markers[i].getAttribute("Url");
          var id = markers[i].getAttribute("Id");
          var t = showAddress(map, geocoder, latlongpoint, 0, showSelected, selectedCounter, url, id);
          if (showSelected == "true")
            selectedCounter++;
        }
      }
      //add first point to map as a last one (keeps sorting order and display the most important)
      var latlongpoint = new GLatLng(markers[firstVisible].getAttribute("Lat"), markers[firstVisible].getAttribute("Lng"));
      var showSelected = markers[firstVisible].getAttribute("ShowOnMap");
      var url = markers[firstVisible].getAttribute("Url");
      var id = markers[firstVisible].getAttribute("Id");
      var t = showAddress(map, geocoder, latlongpoint, 1, showSelected, 1, url, id);
      setVisibility(true);
      //save io clicks
      if (!saveClicks || saveClicks == true) {
        saveTop10(markers, currentPage);
      }
    }
    else {
      setVisibility(false);
      map.setCenter(new google.maps.LatLng(52.0, 5.2), 6);
      mapCentre = map.getBounds().getCenter();
      mapZoom = map.getZoom();
    }
  }
                    );                             //end GDownloadUrl

    return true;
}

//add marker to map
function showAddress(map, geocoder, latlongpoint, last, showSelected, itemnumber, url,id) {

    var marker;
    if (showSelected == "true") {
        var labeledIcon = new GIcon(G_DEFAULT_ICON);
        labeledIcon.image = "/css/images/thema/hypotheek/markers/" + itemnumber + ".png";
        labeledIcon.shadowSize = new GSize(0, 0);
        labeledIcon.iconSize = new GSize(20, 30);
        markerOptions = { icon: labeledIcon, zIndexProcess: getMarkerZIndex };
        //creates new marker ans sets importance (which marker should be on top)
        marker = new GMarker(latlongpoint, markerOptions);
        marker.importance = 3;
       
    }
    else {
        var blueIcon = new GIcon(G_DEFAULT_ICON);
        blueIcon.image = "/css/images/thema/hypotheek/smallofficeicon.png";
        blueIcon.shadowSize = new GSize(0, 0);
        blueIcon.iconAnchor = new GPoint(4, 4);
        var tempZoom = map.getZoom();

       blueIcon.iconSize = new GSize(8, 8); 

       
      
        // Set up our GMarkerOptions object
        markerOptions = { icon: blueIcon };
       
        marker = new GMarker(latlongpoint, markerOptions);
        marker.importance = 1;
    }

    GEvent.addListener(marker, "click", function() {

    window.location = url;
    Independer.Finance.Hypotheek.CodeLib.ServiceProxy.LogOfficeScriptClick(lijst, 'G', itemnumber, id);

    });


    map.addOverlay(marker);
    //keep current zoom if exists if not get default
    //do the same with map centre
    var resetZoom = document.getElementById(resetZoomId).value;
    if (last == 1) {
        if (isNaN(map.getZoom()) || resetZoom == "true") {
            var currentZoom;
            switch (afstandDropDown) {
            case 5:
                currentZoom = 12;
                break;
            case 10:
                currentZoom = 11;
                break;
            case 15:
                currentZoom = 10;
                break;
            case 30:
                currentZoom = 9;
                break;
            default:
                currentZoom = 10;
                break;
        };
          
           if (mapZoom != 0  &&  resetZoom == "")
                currentZoom = mapZoom;

            if (mapCentre != 0) {

                map.setCenter(mapCentre, currentZoom);
            }
            else {
                map.setCenter(latlongpoint, currentZoom);
            }
            document.getElementById(resetZoomId).value = "";
        }
        else {
            map.setCenter(map.getBounds().getCenter(), map.getZoom());
            mapCentre = map.getBounds().getCenter();
            mapZoom = map.getZoom();

        }     
        

    }


}
//sets z-index of marker
function getMarkerZIndex(marker, b) {
    return  GOverlay.getZIndex(marker.getPoint().lat()) + marker.importance*1000000;

}



//save io click top 10
function saveTop10(data, currentPage) {
  var myArray = new Array();
  if (isNaN(currentPage)) {
    currentPage = 0
  }
  var maximumNumberOfOffices = 10;
  if (data.length < 10) maximumNumberOfOffices = data.length;
  var start = currentPage * maximumNumberOfOffices;
  var end = start + maximumNumberOfOffices;
  var cnt = 0;
  for (var i = start; i < end; i++) {

      try {
          //Firefox and rest
        myArray[cnt] = XMLSerializer().serializeToString(data[i]);
      }
      catch (e) {
          //IE 6 ???
        if (myArray[cnt] = data[i].xml != null)
          myArray[cnt] = data[i].xml;
      }
      cnt++;
  }
  Independer.Finance.Hypotheek.CodeLib.ServiceProxy.LogTop10(myArray);
}
