//<![CDATA[

var map;

function routeLoaded() {
 map.addOverlay(this.getPolyline());
}

function createMarker(latLng, html) {
 var m = new GMarker(latLng);
 GEvent.addListener(m, "click",
                    function() {
                    m.openInfoWindowHtml(html);
                    }
                    );
   
 return m;
}
 
function mapRoute(coords)
  {
  var opts = {
    "locale": "fr_CA",
    "getPolyline": true
  };

  var dir = new GDirections();
  GEvent.addListener(dir, "load", routeLoaded);
  dir.loadFromWaypoints(coords, opts);
  }


function showMarkers(coords, html) {

 var bounds = new GLatLngBounds();
 
 for (var i = 0; i < coords.length; i++)
   {
   m = createMarker(coords[i], html[i]);
   map.addOverlay(m);
   bounds.extend(m.getPoint());
   }
 map.setZoom(map.getBoundsZoomLevel(bounds));
 map.setCenter(bounds.getCenter());
}

function getChildByName(parent, name)
  {
  for (var i = 0; i < parent.childNodes.length; i++)
    {
    var c = parent.childNodes[i];
    if (c.nodeName == name)
      return c;
    }

  return null;
  }

function xmlLoaded(data, code) {

 var xml = GXml.parse(data);
 var list = xml.documentElement.getElementsByTagName("waypoint");

 var wpCoords = new Array();
 var wpHtml = new Array();
   
 for (var i = 0; i < list.length; i++) {
 var c = getChildByName(list[i], "coords");
      
 wpCoords[i] = new GLatLng(parseFloat(c.getAttribute("lat")),
                           parseFloat(c.getAttribute("lng")));
 wpHtml[i] = "<b>" + getChildByName(list[i], "name").firstChild.nodeValue + "</b><br>" + getChildByName(list[i], "date").firstChild.nodeValue;
 }
   
 mapRoute(wpCoords);
 showMarkers(wpCoords, wpHtml);
}

function loadDynamicMap() {
 if (GBrowserIsCompatible()) {

 map = new GMap2(document.getElementById("map"));
 map.addControl(new GSmallMapControl());
 map.addControl(new GMapTypeControl());
 map.setCenter(new GLatLng(0, 0), 0);

 GDownloadUrl("waypoints.xml", xmlLoaded);
 }
}

function loadStaticMap() {
 if (GBrowserIsCompatible()) {

 map = new GMap2(document.getElementById("map"));
 map.setCenter(new GLatLng(0, 0), 0);

 GDownloadUrl("waypoints.xml", xmlLoaded);
 }
}

//]]>
