
var loadedRouteGMap_;
var rteGMapDiv_;
var rteGMap_;


function rd_loadRouteGMap() {
	//var map;
  if (GBrowserIsCompatible()) {
    rteGMap_ = new GMap2(document.getElementById("rd_routegmap"));
		rteGMap_.addControl(new GLargeMapControl());
		rteGMap_.addControl(new GMapTypeControl());
    rteGMap_.setCenter(new GLatLng(33.755, -84.39), 13);
  }
	loadedRouteGMap_ = true;
	//return map;
}


function rd_showRouteMap(fullid) {
	//var map = document.getElementById("tripMapArea"); 
	//map.innerHTML=links;
	
	//prompt("", links);
	//loadTripGMap();
	
	var http_request = false;

	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
	
	// initialize fields
	var fields = "fullid="+fullid;
	//prompt("", fields);	
		
	http_request.onreadystatechange = function() { rd_alertRouteGMapOverlayContents(http_request); };
	http_request.open('POST', 'rd_gmap.php', true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.send(fields);
}

function rd_alertRouteGMapOverlayContents(http_request) {

	if(!loadedRouteGMap_) rd_loadRouteGMap();
	else rteGMap_.clearOverlays();
	
	var map = rteGMap_;
	//alert("response");
	var baseIcon = new GIcon();
	baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
  baseIcon.iconSize = new GSize(20, 34);
  baseIcon.shadowSize = new GSize(37, 34);
  baseIcon.iconAnchor = new GPoint(9, 34);
  baseIcon.infoWindowAnchor = new GPoint(9, 2);
  baseIcon.infoShadowAnchor = new GPoint(18, 25);

	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			var xmlDoc = http_request.responseXML;
			var topNode = xmlDoc.documentElement;
			if(topNode.nodeName == "rteoverlay") {
				var minx = 180, miny = 180, maxx = -180, maxy = -180;
				//var segments = [];
  			for(var i1 = 0; i1 < topNode.childNodes.length; i1++) {
  				var sNode = topNode.childNodes.item(i1);
  				if(sNode.nodeName == "segment") {
						var points = [];
      			for(var i2 = 0; i2 < sNode.childNodes.length; i2++) {
      				var pNode = sNode.childNodes.item(i2);
      				if(pNode.nodeName == "point") {
    						var x = pNode.getAttribute("x");
    						var y = pNode.getAttribute("y");
								if(x < minx) minx = x;
								if(y < miny) miny = y;
								if(x > maxx) maxx = x;
								if(y > maxy) maxy = y;
								points.push(new GLatLng(y,x));
    					}
      			}
						
						var color = "blue";
						//alert("seglen="+points.length);
						map.addOverlay(new GPolyline(points, color,6, .75));
						//segments.push(points);			
					}
  				if(sNode.nodeName == "timepts") {
						//var points = [];
      			var tptIndex = 0;
						for(var i2 = 0; i2 < sNode.childNodes.length; i2++) {
      				var tNode = sNode.childNodes.item(i2);
      				if(tNode.nodeName == "timept") {
    						var x = tNode.getAttribute("x");
    						var y = tNode.getAttribute("y");
								tptIndex++;
								//alert(x+" "+y);						
								var html = tNode.childNodes[0].nodeValue;	
								var icon = new GIcon(baseIcon);
								icon.image = "http://gmaps-samples.googlecode.com/svn/trunk/markers/blue/marker"+tptIndex+".png";
								var marker = rd_createTimePtMarker(new GLatLng(y,x), html, icon);
								map.addOverlay(marker);
							}
						}
					}
  			}	

							 
				var sw = new GLatLng(miny,maxx);
				//alert(sw);		
				var ne = new GLatLng(maxy,minx);
				//alert(ne);		
				var bounds = new GLatLngBounds(sw, ne);
				map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));		
			}
		} else {
			alert('There was a problem with the nearby locs request.');
		}
	}
}

function rd_createTimePtMarker(point, html, icon) {
  var marker = new GMarker(point, { icon: icon }); //, { draggable: draggable }) : new GMarker(point, { icon: icon, draggable: draggable });
  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(html);
  });
  return marker;
}