// 07/31/2008 - gsc - modify for Phoenix and owl database
// 08/02/2008 - gsc - change item names, add email
// 07/29/2010 - gsc - add cursor change 

var centerLatitude = 33.448058;
var centerLongitude = -112.073636;
var startZoom = 10;

var map;

function init() {
	map = new GMap2(document.getElementById("map"));
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.setCenter(new GLatLng(centerLatitude, centerLongitude), startZoom);
	map.setMapType(G_HYBRID_MAP);
	
	//Note: this call to retrieve markers is required for Listing 3-8
	retrieveMarkers();

	GEvent.addListener(map, "click", function(overlay, latlng) {
		//only perform the click if the window is closed and the click was directly on the map.
		if(!overlay) {
			//create an HTML DOM form element
			var inputForm = document.createElement("form");
			inputForm.setAttribute("action","");
			inputForm.onsubmit = function() {storeMarker(); return false;};

			//retrieve the longitude and lattitude of the click point
			var lng = latlng.lng();
			var lat = latlng.lat();

			inputForm.innerHTML = '<fieldset style="width:250px;">'
			+ '<legend>Burrowing Owl Location</legend>'
			+ '<label for="New_Site_Name">New Site Name</label>' // second New Site Name is displayed
			+ '<input type="text" id="New_Site_Name" style="width:100%;"/>'
			+ '<label for="Observation_Date">Observation Date (mm/dd/yyyy)</label>'
			+ '<input type="text" id="Observation_Date" style="width:100%;"/>'
			+ '<label for="Email">Email</label>'
			+ '<input type="text" id="Email" style="width:100%;"/>'
			+ '<input type="submit" value="Save"/>'
			+ '<input type="hidden" id="longitude" value="' + lng + '"/>'
			+ '<input type="hidden" id="latitude" value="' + lat + '"/>'
			+ '</fieldset>';

			map.openInfoWindow (latlng,inputForm);
		}
	});

}

window.onload = init;

function storeMarker(){
	var lng = document.getElementById("longitude").value;
	var lat = document.getElementById("latitude").value;

	var getVars =  "?New_Site_Name=" + document.getElementById("New_Site_Name").value
	+ "&Observation_Date=" + document.getElementById("Observation_Date").value 
	+ "&Email=" + document.getElementById("Email").value 
																			   
	+ "&lng=" + lng
	+ "&lat=" + lat ;

	var request = GXmlHttp.create();

	//open the request to storeMakres.php on your server
	request.open('GET', 'storeMarker.php' + getVars, true);
	document.body.style.cursor = "wait"; // new code 07/29/2010
	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			//the request in complete
			document.body.style.cursor = "default"; // new code 07/29/2010
			var xmlDoc = request.responseXML;

			//retrieve the root document element (response)
			var responseNode = xmlDoc.documentElement;

			//retrieve the type attribute of the node
			var type = responseNode.getAttribute("type");

			//retrieve the content of the responseNode
			var content = responseNode.firstChild.nodeValue;

			//check to see if it was an error or success
			if(type!='success') {
				alert(content);
			} else {
				//Create a new marker and add it's info window.
				var latlng = new GLatLng(parseFloat(lat),parseFloat(lng));

				var marker = createMarker(latlng, content);

				map.addOverlay(marker);
				map.closeInfoWindow();
			}
		}
	}
	request.send(null);
	return false;
}

function createMarker(latlng, html) {
	var marker = new GMarker(latlng);
	GEvent.addListener(marker, 'click', function() {
		var markerHTML = html;
		marker.openInfoWindowHtml(markerHTML);
	});
	return marker;
}

function retrieveMarkers() {
	var request = GXmlHttp.create();

	//tell the request where to retrieve data from.
	request.open('GET', 'retrieveMarkers.php', true);

	//tell the request what to do when the state changes.
	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			var xmlDoc = request.responseXML;

			var markers = xmlDoc.documentElement.getElementsByTagName("marker");
			for (var i = 0; i < markers.length; i++) {
				var lng = markers[i].getAttribute("lng");
				var lat = markers[i].getAttribute("lat");
				//check for lng and lat so MSIE does not error
				//on parseFloat of a null value
				if(lng && lat) {
					var latlng = new GLatLng(parseFloat(lat),parseFloat(lng));

					var html = '<div><b>Site Name</b> ' // here is the display text for data.xml data from server, not from new
					+ markers[i].getAttribute("New_Site_Name")// here is the variable name
					+ '</div><div><b>Observation Date</b> '
					+ markers[i].getAttribute("Observation_Date")
					//+ '</div><div><b>Email</b> '
					//+ markers[i].getAttribute("Email")
					+ '</div>';

					var marker = createMarker(latlng, html);
					map.addOverlay(marker);
				}
			} //for
		} //if
	} //function

	request.send(null);
}


// 08/03/08 - gsc - function for moving the map

function movemap(xlatitude,ylongitude) {

	map.setCenter(new GLatLng(parseFloat(xlatitude), parseFloat(ylongitude), 12));


//var tmp_latlng = new GLatLng(parseFloat(xlatitude), parseFloat(ylongitude)); // now tmp_latlng ready for setCenter
	//map.setCenter(tmp_latlng, startZoom); // move it

}



