// Modify this to set the initial zoom level
var zoomlevel = 6;


// *****************************************************
// *****************************************************
// Internal function to create a marker with pop-up text
//
function createMarker(point, name) {
  var marker = new GMarker(point);
  GEvent.addListener(marker, "mouseover", function() {
    marker.openInfoWindowHtml(name);
  });
  map.addOverlay(marker);
  return marker;
}

// Create map object
//
var map = new GMap(document.getElementById("map"));
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.setMapType(G_SATELLITE_MAP);


//	Load and parse GPX file
//	Builds .gpx filename based on html file
//
var request = GXmlHttp.create();
var URL = "/satellite/white_pines.gpx";
request.open("GET", URL, true);

request.onreadystatechange = function() {
  if (request.readyState == 4) {
		var gpxDoc = request.responseXML;
		if( !gpxDoc ) {
			alert("Could not load GPX document " + URL);
		} else if( !gpxDoc.documentElement ) {
			alert("Document " + URL + "\nwas not recognized by the XML loader");
		} else if( gpxDoc.documentElement.childNodes.length < 3 ) {
			alert("The XML loader could not parse document " + URL);
		} else {
			//
			//	Parse document <bounds>.  Open map.  Guess at zoom level.
			//
			minlat 		= 0;
			minlon 		= 0;
			maxlat 		= 0;
			maxlon 		= 0;
			bounds = gpxDoc.documentElement.getElementsByTagName("bounds");
			if( bounds && bounds.length )
				{
				minlat = parseFloat(bounds[0].getAttribute("minlat"));
				minlon = parseFloat(bounds[0].getAttribute("minlon"));
				maxlat = parseFloat(bounds[0].getAttribute("maxlat"));
				maxlon = parseFloat(bounds[0].getAttribute("maxlon"));
				}
			zoomlat		= minlat+(maxlat-minlat)/2;
			zoomlon		= minlon+(maxlon-minlon)/2;
			map.centerAndZoom(new GPoint(zoomlon,zoomlat),zoomlevel);
			bounds = [];

			//	Parse waypoints in <wpt></wpt> tags
			//
			var wpt;
			wpt = gpxDoc.documentElement.getElementsByTagName("wpt")
			if( wpt ) {
				for (var i = 0; i < wpt.length; i++) {

					point = new GPoint(parseFloat(wpt[i].getAttribute("lon")),
									   parseFloat(wpt[i].getAttribute("lat")));

					// Extract <name></name> tag
					tname  = "";
					element = wpt[i].getElementsByTagName("name");
					if( element.length ) {
						tname   = element[0].firstChild.nodeValue;
						}

					createMarker(point, tname)
					}
				}
			wpt = [];
			} // gpxDoc
		} // readyState
    } // function
request.send(null);
