/*******************************************************************************
                 kidneycancersupportnetwork.co.uk map generator
                                javascript file
*******************************************************************************/
function makeXMLRequest() {
	// perform the request and call procResponse when ready
	//work around IE's problems
	if( (window.XMLHttpRequest) && !(window.ActiveXObject) ) {
		try {
			conn = new XMLHttpRequest();
		    } catch (e) { 
		    	conn = false;   
		    }
	} else if (window.ActiveXObject) {
		try {
			conn = new ActiveXObject('Microsoft.XMLHTTP');
		    } catch (e) { 
		    	conn = false;   
		    }
	} else {
		conn = false;
	}
	if( !(conn) ) {
		throw new Error ("XMLHttpRequest is not supported. Please update your browser");
	}
	conn.open("GET","map_xml.php");
	conn.onreadystatechange = procResponse;
	conn.send(null);
}
function procResponse() {
	//v.basic check on response and call parser function
	if (conn.readyState == 4 && conn.status == 200 && conn.responseXML != null) {
		// server has supplied data, process it
		parseResponse(conn.responseXML);
	} else if (this.readyState == 4) {
		throw new Error( "XML data page map_xml.php not found or incorrect response" );
	}
}
function makeMarker(long,lat,message) {
	var point = new GLatLng(long,lat);
	var marker = new GMarker(point);
	GEvent.addListener(marker,"click", function() { map.openInfoWindow(point, message); });
	return marker;
}
function parseResponse(responseXML) {
	//parse response XML and use maps API to place on map
	var coordinates=new Array()
	var elements = responseXML.getElementsByTagName("user");
	for( var i=0; i < elements.length; i++) {	
		var lattag = elements[i].getElementsByTagName("lat")[0];
		var longtag = elements[i].getElementsByTagName("long")[0];
		var messagetag = elements[i].getElementsByTagName("bubbletext")[0];
		var lat = lattag.firstChild.nodeValue;
		var long = longtag.firstChild.nodeValue;
		var message = messagetag.childNodes[0].nodeValue;
		coordinates.push(makeMarker(long,lat,message));
	}
	//this actually adds the markers, zoom levels can be changed here
	mgr.addMarkers(coordinates,0);
	mgr.refresh();
}
function load() {
	//Fire other onload hanlers from custom KCSN page
	if(window.MM_preloadImages) {
	MM_preloadImages('Images/James-Whale-Logo_Web.jpg','Images/KCR_Logo.jpg');
	}
	if (GBrowserIsCompatible()) {
		// create google maps object in element "gmap"
		map = new GMap2(document.getElementById("gmap"));
		//setup basic options
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		//centre on british isles
		map.setCenter(new GLatLng(54.5766944, -3.5574935), 6);
		//retrieve markers by XMLHttpRequest and place on map using addMarkers
		mgr = new MarkerManager(map);
		makeXMLRequest();
	}
}


//Define event handlers
window.onload=load;
window.onbeforeunload=GUnload;
