var drawnRoute;
var drawnRoutearray = [];


function makeRouteList()
{
	var request = GXmlHttp.create();
	request.open("GET", "../../shared/public_feed.xml", true);
	request.onreadystatechange = function() 
	{
		// only if req shows "loaded"
		if (request.readyState == 4 && request.status == 200)
		{
			var xmlDoc = GXml.parse(request.responseText);
			var routes = xmlDoc.documentElement.getElementsByTagName("route");
	
			for (var i = 0; i < routes.length; i++)
			{
				var routeName = routes[i].getElementsByTagName("name")[0].childNodes[0].nodeValue;
				var routeId = routes[i].getElementsByTagName("id")[0].childNodes[0].nodeValue;
				var busroutecolor = routes[i].getElementsByTagName("busroutecolor")[0].childNodes[0].nodeValue;

				
				liNode = document.createElement("li");
				
				liNode.removeAttribute("style");
				liNode.setAttribute("style","background-color: #"+busroutecolor+";");
				liNode.style.cssText = "background-color:#"+busroutecolor+";"
				
				var aNode = document.createElement("a");
				textNode = document.createTextNode(routeName);
				aNode.setAttribute("href", "#");
				//aNode.setAttribute("onclick", "drawRoute(\"" + routeName + "\")");
				aNode.route = routeName;
				aNode.routeid = routeId;
				aNode.onclick = function()
				{
					//drawRoute(this.route);
					drawRouteById(this.route, this.routeid);
				}
				
				aNode.appendChild(textNode);
				liNode.appendChild(aNode);
				document.getElementById("routeList").appendChild(liNode);
				
			}
		}
	}
	request.send(null);
}

// draws a route on the map given its name
function drawRoute(routeName)
{	
	if(routeName != "Northwood" && routeName != "Bursley-Baits" && routeName != "Bursley Express")
	{
		//map.setCenter(new GLatLng(42.27880, -83.72328), 14);
	}
	else
	{
		//map.setCenter(new GLatLng(42.27880, -83.72328), 14);
	}
	getRouteStops(routeName);
	// strip out blanks and replace with the space character before passing to PHP
	var formattedName = new String(routeName);
	formattedName.replace(" ","%20");

	var request = GXmlHttp.create();
	request.open("GET", "../../shared/" + formattedName +".xml" , true);


	request.onreadystatechange = function() 
	{
	
		if (request.readyState == 4 && request.status == 200) 
		{ 
			var xmlDoc = GXml.parse(request.responseText);

			routedata = xmlDoc.documentElement.getElementsByTagName("item");
			if(routedata.length > 0)
			{
				var points = [];
				// iterate over the list of points and add to the array
				for (var i = 0; i < routedata.length; i++) 
				{
					points.push(new GPoint(parseFloat(routedata[i].getElementsByTagName("longitude")[0].childNodes[0].nodeValue),
					parseFloat(routedata[i].getElementsByTagName("latitude")[0].childNodes[0].nodeValue)));
				}
				
				// get the route settings from the php/xml 
				var routeSettings = xmlDoc.documentElement.getElementsByTagName("route_info"); 

				var color = routeSettings[0].getElementsByTagName("color")[0].childNodes[0].nodeValue;
				var linewidth = parseInt(routeSettings[0].getElementsByTagName("line_width")[0].childNodes[0].nodeValue);
				var transparency = parseFloat(routeSettings[0].getElementsByTagName("transparency")[0].childNodes[0].nodeValue);
				
				transparency = transparency/100;
				
				// add the line
				if(drawnRoute)
					map.removeOverlay(drawnRoute);
				drawnRoute = new GPolyline(points,"#" + color, linewidth, transparency);
				map.addOverlay(drawnRoute);
			}
		}
	}
	request.send(null);
}

// draws a route on the map given its name
function drawRouteById(routeName, routeId)
{	
/*	if(routeName != "Northwood" && routeName != "Bursley-Baits" && routeName != "Bursley Express")
	{
		map.setCenter(new GLatLng(42.27880, -83.72328), 14);
	}
	else
	{
		map.setCenter(new GLatLng(42.27880, -83.72328), 14);
	}*/
	getRouteStops(routeName);
	// strip out blanks and replace with the space character before passing to PHP
	var formattedName = new String(routeName);
	formattedName.replace(" ","%20");

	var request = GXmlHttp.create();
	//request.open("GET", "../shared/" + formattedName +".xml" , true);
	request.open("GET", "../../shared/map_trace_route_" + routeId +".xml" , true);
	//alert('yup');
	request.onreadystatechange = function() 
	{
	
		if (request.readyState == 4 && request.status == 200) 
		{ 
			var xmlDoc = GXml.parse(request.responseText);

			routedata = xmlDoc.documentElement.getElementsByTagName("item");
			if(routedata.length > 0)
			{
				var pointsarray = [];
				var points = [];
				var pointcounter = 0;
				// iterate over the list of points and add to the array
				//alert(routedata.length);
				for (var i = 0; i < routedata.length; i++) 
				{
					points.push(new GPoint(parseFloat(routedata[i].getElementsByTagName("longitude")[0].childNodes[0].nodeValue),
					parseFloat(routedata[i].getElementsByTagName("latitude")[0].childNodes[0].nodeValue)));
					pointcounter = pointcounter+1;
					if(pointcounter > 100)
					{
						pointsarray.push(points);
						points = [];
						points.push(new GPoint(parseFloat(routedata[i].getElementsByTagName("longitude")[0].childNodes[0].nodeValue),
						parseFloat(routedata[i].getElementsByTagName("latitude")[0].childNodes[0].nodeValue)));
						pointcounter = 0;
					}
				}
				if(pointcounter > 1 &&  pointcounter <= 100)
				{
					pointsarray.push(points);
					points = [];
					pointcounter = 0;
				}
				// get the route settings from the php/xml 
				var routeSettings = xmlDoc.documentElement.getElementsByTagName("route_info"); 
				
				var color = routeSettings[0].getElementsByTagName("color")[0].childNodes[0].nodeValue;
				var linewidth = parseInt(routeSettings[0].getElementsByTagName("line_width")[0].childNodes[0].nodeValue);
				var transparency = parseFloat(routeSettings[0].getElementsByTagName("transparency")[0].childNodes[0].nodeValue);
				
				transparency = transparency/100;
				
				// add the line
				if(drawnRoutearray)
				{
					for (var i = 0; i < drawnRoutearray.length; i++)  
					{
						map.removeOverlay(drawnRoutearray[i]);
					}
					drawnRoutearray = [];
				}
				for (var i = 0; i < pointsarray.length; i++)  
				{
					drawnRoute = new GPolyline(pointsarray[i],"#" + color, linewidth, transparency);
					drawnRoutearray.push(drawnRoute);
					map.addOverlay(drawnRoute); // this is where the freeze up happens for traces greater than 450 points
				}
			}
		}
	}
	request.send(null);
}
