﻿function GLoad()
{
   if (GBrowserIsCompatible())
   {
      var gmapContainer = document.getElementById("gmapContainer");
      var infoWindowContent = document.getElementById("infoWindowContent");
      var infoWindowHeader = document.getElementById("infoWindowHeader");
      var infoWindowLinkButton = document.getElementById("infoWindowLinkButton");

      var infoWindowAddress = document.getElementById('infoWindowAddress');
      infoWindowAddress.value = getCookie("infoWindowAddress"); 

      gMap = new GMap2(gmapContainer);
      gMap.infoWindowContent = infoWindowContent;
      gMap.infoWindowHeader = infoWindowHeader;
      gMap.infoWindowAddress = infoWindowAddress;

      infoWindowLinkButton.onclick = function(){ return gMap.openRouteWindow(); };

      gMap.addControl(new GLargeMapControl());
      gMap.addControl(new GMapTypeControl());

      var mapCenter = new GLatLng(52.0780, 5.0340);
      gMap.setCenter(mapCenter, 15, G_HYBRID_TYPE);

      GDownloadUrl("Markers.xml", function(data, responseCode)
         {
            if(responseCode == 200) { 
               var xml = GXml.parse(data);
               var markers = xml.documentElement.getElementsByTagName("marker");
               var marker;
               for (var i = 0; i < markers.length; i++)
               {
                  var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                          parseFloat(markers[i].getAttribute("lng")));

                  marker = gMap.addMarker(point, markers[i].getAttribute("name"));
               }

               marker.openRouteInfoWindow();
            }
         });

   }
}

GMap2.prototype.addMarker = function(point, name)
{
   var marker = new GMarker(point, {title: name});
   marker.name = name; 
   marker.map = this;

   GEvent.addListener(marker, "click", function()
      {
         this.openRouteInfoWindow();
      });

   this.addOverlay(marker);

   return marker;
}

GMap2.prototype.openRouteWindow = function()
{
   var saddress = this.infoWindowAddress.value.trim();

   if(saddress.length > 0)
   {
      setCookie("infoWindowAddress", saddress, 365);
      saddress += ", Nederland";

      var GLocation = "http://maps.google.com/maps?saddr=" +
                      escape(saddress) +
                      "&daddr=" +
                      this.getInfoWindow().getPoint().toUrlValue();

      window.open(GLocation,"GMap");
   }
   else
   {
      this.infoWindowAddress.value = '';
      this.infoWindowAddress.focus();
   }

   return false;
}

GMarker.prototype.openRouteInfoWindow = function()
{
   this.map.infoWindowHeader.replaceChild(document.createTextNode(this.name),
                                        this.map.infoWindowHeader.childNodes[0]);

   this.openInfoWindow(this.map.infoWindowContent);
}

addLoadHandler(GLoad)
addUnloadHandler = GUnload;