// A function to create the marker and set up the event window

function createMarker(latlng,html,mIcon) {
	var markerOptions = { icon:mIcon };
	var marker = new GMarker(latlng,markerOptions);
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
  	});
  return marker;
}

$(function() { 
	if (GBrowserIsCompatible()) {

		// create the map
		var map = new GMap2(document.getElementById("google_map"));
		// Add controls and initialise the map
		map.addControl(new GSmallMapControl());
		map.setCenter(new GLatLng(55.56592203025787, -2.054443359375), 8);
		map.enableDoubleClickZoom();
		new GKeyboardHandler(map);
		// Read the data from xml
		var request = GXmlHttp.create();
		request.open("GET", "/maps/home", true);
		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				var xmlDoc = request.responseXML;
				// obtain the array of markers and loop through it
				var markers = xmlDoc.documentElement.getElementsByTagName("marker");
          		// Set up icon style
				var tinyIcon = new GIcon(G_DEFAULT_ICON);
				tinyIcon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
				tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
				tinyIcon.iconSize = new GSize(12, 20);
				tinyIcon.shadowSize = new GSize(22, 20);
				tinyIcon.iconAnchor = new GPoint(6, 20);
				tinyIcon.infoWindowAnchor = new GPoint(5, 1);
	          	for (var i = 0; i < markers.length; i++) {
		            // Extract lat/longs
		            var lat = parseFloat(markers[i].getAttribute("lat"));
		            var lng = parseFloat(markers[i].getAttribute("lng"));
		            // Create the marker
		 			map.addOverlay(
						createMarker(
							new GLatLng(lat,lng),
							markers[i].getAttribute("html"),
							tinyIcon
						)
					);          
				}
/* DEBUG
				GEvent.addListener(map, "click", function() {
					console.log(map.getCenter());
					console.log(map.getZoom());
				});
*/
	        }
      }
      if (window.recenter_map) recenter_map(map);
      request.send(null);
    }
});
