var mapObj = null;
var mgrObj = null;
var geocoder = null;
var markers = [];

google.load("maps", "2");
google.setOnLoadCallback(initialize);


function initialize() { 
  var mapDiv = document.getElementById("map");
  if (mapDiv) {
    geocoder = new GClientGeocoder();
    
    mapObj = new GMap2(mapDiv);
    mapObj.addControl(new GLargeMapControl3D());
    mapObj.addControl(new GMapTypeControl());
    
    window.setTimeout(SetupMarkers, 0);
  }
}


function SetupMarkers() {
  var mapDiv = document.getElementById("map");
  if (mapDiv.getAttribute("title")) {
    showSingleAddress(mapDiv.getAttribute("title"),mapDiv.getAttribute("guid"));
  } else {
    showMultipleAddresses();
  }
};


function showSingleAddress(address,guid) {
  geocoder.getLatLng(
    address,
    function(point) {
      if (!point) {
        document.getElementById("map").style.display = "none"; // not found
      } else {
        mapObj.setCenter(point, 15);
        
        var marker = new GMarker(point);
        mapObj.addOverlay(marker);
        
        var info = "<small>"+address+"</small><br>";
        if (guid!="") { info += "<img src=\"http://www.witte-verheul.nl/design/PropertyImage.aspx?guid="+encodeURIComponent(guid)+"&w=160&h=120\">"; }
        
        marker.openInfoWindowHtml(info);
      }
    }
  );
}


function showSingleCoordinate(longitude,latitude,marketType,status,propertyId,address,guid,useManager) {
  var point = new GLatLng(latitude,longitude);
  
  var marker = new GMarker(point);
  if (useManager) {
    markers.push(marker);
  } else {
    mapObj.addOverlay(marker);
  }

  var info = "<small>"+address+"</small><br>";
  if (guid!="") { info += "<img src=\"http://www.witte-verheul.nl/design/PropertyImage.aspx?guid="+encodeURIComponent(guid)+"&w=160&h=120\">"; }
  
  GEvent.addListener(marker,"mouseover", function() {
    marker.openInfoWindowHtml(info);
  });

  GEvent.addListener(marker,"click", function() {
    var baseURL = "/content.asp?";
    
    switch(marketType) {
      case "res" :
        switch(status) {
          case "FOR_SALE" : baseURL += "m=M3&S=P1"; break;
          case "FOR_RENT" : baseURL += "m=M3&S=P2"; break;
        }
        break;
        
      case "bog" :
        switch(status) {
          case "FOR_SALE" : baseURL += "m=M4&S=P3"; break;
          case "FOR_RENT" : baseURL += "m=M4&S=P4"; break;
        }
        break;
    }
    
    location.href = baseURL+"&l=NL&property="+encodeURIComponent(propertyId);
  });
}


function InitializeMarkerManager() {
  mgrObj = new MarkerManager(mapObj);
  mgrObj.addMarkers(markers, 1);
  mgrObj.refresh();
}

