// JavaScript Document
//<![CDATA[

if (GBrowserIsCompatible()) {
  // this variable will collect the html which will eventualkly be placed in the side_bar
  var side_bar_html = "";

  // arrays to hold copies of the markers used by the side_bar
  // because the function closure trick doesnt work there
  var gmarkers = [];
  var i = 0;


  // A function to create the marker and set up the event window
  function createMarker(point,name,html,pin) {
	//
	// BASE ICON
	var baseIcon = new GIcon();
	if(pin == 'GR_conservation' || pin == 'GR_business' || pin == 'GR_benefit' || pin == 'GR_destination' || pin == 'GR_destination2')
	{
		baseIcon.iconSize = new GSize(38, 43);
		baseIcon.iconAnchor = new GPoint(19, 38);
		baseIcon.infoWindowAnchor = new GPoint(19, 38);
	}
	else
	{
		//baseIcon.iconSize = new GSize(56, 62);
		//baseIcon.iconAnchor = new GPoint(28, 55);
		//baseIcon.infoWindowAnchor = new GPoint(28, 55);
		baseIcon.iconSize = new GSize(44, 50);
		baseIcon.iconAnchor = new GPoint(22, 45);
		baseIcon.infoWindowAnchor = new GPoint(22, 45);
	}
	var icon = new GIcon(baseIcon);
	icon.image = gm_path_to_root+"media/pins/"+pin+".png";
	//alert();
	
	var marker = new GMarker(point, icon);
	GEvent.addListener(marker, "click", function() {
	  marker.openInfoWindowHtml(html);
	});
	// save the info we need to use later for the side_bar
	gmarkers[i] = marker;
	// add a line to the side_bar html
	var pos=name.indexOf("Winner")
	
	if(pos==0)
	{
		if(side_bar_html != ""){side_bar_html += '<br>';}
		side_bar_html += '<strong><a href="javascript:myclick(' + i + ')">' + name + '</a></strong><br>';
	}else
	{
		side_bar_html += '<a href="javascript:myclick(' + i + ')">' + name + '</a><br>';
	}
	i++;
	return marker;
  }


  // This function picks up the click and opens the corresponding info window
  function myclick(i) {
	GEvent.trigger(gmarkers[i], "click");
  }


  // create the map
  var map = new GMap2(document.getElementById("map"));
  map.addControl(new GLargeMapControl());
  map.addControl(new GMapTypeControl());
  
  
  //
  //
  // SET THE CENTER AND ZOOM
  //
  //
  //map.setCenter(new GLatLng( 43.907787,-79.359741), 6);
  map.setCenter(new GLatLng( gm_lat,gm_lan), gm_zoom);


  //
  //
  // Read the data from the .xml file
  //
  //
  /**/var request = GXmlHttp.create();
  request.open("GET", gm_path_to_root+"scripts/xml/Gmaps/"+gm_file_name, true);
  request.onreadystatechange = function() {
	if (request.readyState == 4) {
	  var xmlDoc = GXml.parse(request.responseText);
	  // obtain the array of markers and loop through it
	  if(!xmlDoc.parseError)
	   //if(xmlDoc.getElementsByTagName("marker"))
	  {
		  var markers = xmlDoc.documentElement.getElementsByTagName("marker");
		  //var markers = xmlDoc.getElementsByTagName("marker");
		  //alert(markers.length);
		  for (var i = 0; i < markers.length; i++) {
			// obtain the attribues of each marker
			var lat = parseFloat(markers[i].getAttribute("lat"));
			var lng = parseFloat(markers[i].getAttribute("lng"));
			var point = new GLatLng(lat,lng);
			
			//var html = markers[i].getAttribute("html");
			var html = markers[i].firstChild.nodeValue;
			//alert(html);
			var label = markers[i].getAttribute("label");
			var pin = markers[i].getAttribute("pin");
			
			// create the marker
			var marker = createMarker(point,label,"<br/>"+html,pin);
			map.addOverlay(marker);
		  }
	  	}
		else
		{
			var Err = xmlDoc.parseError;
			if(Err.errorCode == 0)
			{
				// try ie 6
				function loadXML(xmlFile)
					{
						 xmlDoc.async="false";
						 xmlDoc.onreadystatechange=verify;
						 xmlDoc.load(xmlFile);
						 xmlObj=xmlDoc.documentElement;
					}
					
				function verify()
				{
					 // 0 Object is not initialized
					 // 1 Loading object is loading data
					 // 2 Loaded object has loaded data
					 // 3 Data from object can be worked with
					 // 4 Object completely initialized
					 if (xmlDoc.readyState != 4)
					 {
					   return false;
					 }
				}
					
				loadXML(gm_path_to_root+"scripts/xml/Gmaps/"+gm_file_name);
				//alert(">"+xmlObj.childNodes.length);
				var markers = xmlObj.childNodes.length;
					  //alert(markers.length);
				for (var i = 0; i < markers; i++) {
					// obtain the attribues of each marker
					var lat = xmlObj.childNodes[i].getAttribute("lat");
					var lng = xmlObj.childNodes[i].getAttribute("lng");
					var point = new GLatLng(lat,lng);
					
					//var html = markers[i].getAttribute("html");
					var html = xmlObj.childNodes[i].firstChild.nodeValue;
					//alert(html);
					var label = xmlObj.childNodes[i].getAttribute("label");
					var pin = xmlObj.childNodes[i].getAttribute("pin");
					
					// create the marker
					var marker = createMarker(point,label,"<br/>"+html,pin);
					map.addOverlay(marker);
				}
			}
			else
			{
				alert('ErrorCode:\t'+ Err.errorCode+'\r\nReason:\t'+Err.reason);
			}
		}
	  // put the assembled side_bar_html contents into the side_bar div
	  //document.getElementById("side_bar").innerHTML = side_bar_html;
	}
  }
  request.send(null);
  
  
  /*
  	var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	function loadXML(xmlFile)
	{
		 xmlDoc.async="false";
		 xmlDoc.onreadystatechange=verify;
		 xmlDoc.load(xmlFile);
		 xmlObj=xmlDoc.documentElement;
	}
	
	function verify()
	{
		 // 0 Object is not initialized
		 // 1 Loading object is loading data
		 // 2 Loaded object has loaded data
		 // 3 Data from object can be worked with
		 // 4 Object completely initialized
		 if (xmlDoc.readyState != 4)
		 {
		   return false;
		 }
	}
	
	loadXML(gm_path_to_root+"scripts/xml/Gmaps/"+gm_file_name);
	//alert(">"+xmlObj.childNodes.length);
	var markers = xmlObj.childNodes.length;
		  //alert(markers.length);
	for (var i = 0; i < markers; i++) {
		// obtain the attribues of each marker
		var lat = xmlObj.childNodes[i].getAttribute("lat");
		var lng = xmlObj.childNodes[i].getAttribute("lng");
		var point = new GLatLng(lat,lng);
		
		//var html = markers[i].getAttribute("html");
		var html = xmlObj.childNodes[i].firstChild.nodeValue;
		//alert(html);
		var label = xmlObj.childNodes[i].getAttribute("label");
		var pin = xmlObj.childNodes[i].getAttribute("pin");
		
		// create the marker
		var marker = createMarker(point,label,html,pin);
		map.addOverlay(marker);
	}/*
	// put the assembled side_bar_html contents into the side_bar div
	 document.getElementById("side_bar").innerHTML = side_bar_html;*/
}

else {
  alert("Sorry, the Google Maps API is not compatible with this browser");
}

//]]>
