

/* ---------------------------------------------------------------------- */
/* ROUTES --------------------------------------------------------------- */
/* ---------------------------------------------------------------------- */
var rideRouteList = new RideRouteList();
var inputs; 
var imgFalse = '/img/checkbox_empty.gif'; 
var imgTrue = '/img/checkbox_checked.gif'; 


function removeRideRoute(array, rideRouteIDGUID) 
{
	var i = 0;

	while (i < array.length) 
	{
		if (array[i].RideRouteIDGUID == rideRouteIDGUID) 
		{
			array.splice(i, 1);
		} 
		else 
		{
			i++;
		}
	}
	return array;
}


function findRideRoute(array, rideRouteIDGUID) 
{
	var i = 0;
	var rideRoute;
	
	while (i < array.length) 
	{
		if (array[i].RideRouteIDGUID == rideRouteIDGUID) 
		{
			rideRoute = array[i];
		} 
		
		i++;
	}
	return rideRoute;
}


function RideRoute(rideRouteIDGUID, lat, lon, rideIDGUID, active) 
{
	this.RideRouteIDGUID = rideRouteIDGUID;
	this.Lat = lat;
	this.Lon = lon;
	this.RideIDGUID = rideIDGUID;
	this.Active = active;
}


function RideRouteList()
{
	this.List = [];
	this.Index = 0;
	
	this.AddItem = function(rideRouteIDGUID, lat, lon, rideIDGUID, active)
	{
		this.List[this.Index++] = new RideRoute(rideRouteIDGUID, lat, lon, rideIDGUID, active);
	}
	
	this.RemoveRideRoute = function(rideRouteIDGUID)
    {
		this.List = removeRideRoute(this.List, rideRouteIDGUID);
	}
	
	this.GetRideRoute = function(rideRouteIDGUID)
	{
		return findRideRoute(this.List, rideRouteIDGUID) 
	}
	
	this.SetActiveFlag = function(rideRouteIDGUID, activeFlag)
	{
		this.GetRideRoute(rideRouteIDGUID).Active = activeFlag;
	}
}


function setUpChecks()
{
	if(document.getElementById("routeListHolder") == null)
	{
		return;
	}

	var images = document.getElementById("routeListHolder").getElementsByTagName("img");
	
	for(var i = 0; i < images.length; i++)
	{
		if(rideRouteList.GetRideRoute(images[i].id).Active == '1')
		{
			images[i].src=imgTrue;
		}
		else
		{
			images[i].src=imgFalse;
		}
	}
}


function getFileName(s)
{
	return s.substring(s.lastIndexOf('/') + 1, s.length);
}


function ShowOrHide(anchorLink)
{
	var rideRouteIDGUID = anchorLink.getElementsByTagName("img")[0].id;
		
	if(getFileName(anchorLink.getElementsByTagName("img")[0].src)==getFileName(imgTrue))
	{
		// they are unchecking
		anchorLink.getElementsByTagName("img")[0].src=imgFalse;
		rideRouteList.SetActiveFlag(rideRouteIDGUID, '0');
	}
	else
	{
		// they are checking
		anchorLink.getElementsByTagName("img")[0].src=imgTrue;
		rideRouteList.SetActiveFlag(rideRouteIDGUID, '1');
	}

	displayMap(rideRouteList);
}


function displayMap(rideRouteList)
{
	load2(rideRouteList);
}


function init()
{  
	setUpChecks();
	displayMap(rideRouteList);
} 

window.onload = init;

/* ---------------------------------------------------------------------- */
/* --------------------------------------------------------------- ROUTES */
/* ---------------------------------------------------------------------- */



var map;
var geoxml; 
		
function load2(rideRouteList) 
{

	if(rideRouteList.List[0].RideRouteIDGUID == '00000000-0000-0000-0000-000000000000')
	{
		// no route
		map = new GMap2(document.getElementById("map"));
		map.setCenter(new GLatLng(rideRouteList.List[0].Lat, rideRouteList.List[0].Lon), 11);  
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addMapType(G_PHYSICAL_MAP); 
		map.setMapType(G_PHYSICAL_MAP);
		
		// Create our "tiny" marker icon
		var icon = new GIcon();
		icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
		icon.iconSize = new GSize(20, 34);
		icon.shadowSize = new GSize(22, 20);
		icon.iconAnchor = new GPoint(6, 20);
		icon.infoWindowAnchor = new GPoint(5, 1);
		
		function createMarker(point, html)
		{  
           	var icon2 = new GIcon(icon);  
			icon2.image = "http://www.whereweride.com/img/MapIcon/iconb1.png";
			markerOptions = { icon:icon2 };
			var marker = new GMarker(point, markerOptions);  
			
			GEvent.addListener(marker, "click", function() 
			{    
				marker.openInfoWindowHtml(html);
			});  
			
			return marker;
		}
		
		var point = new GLatLng(rideRouteList.List[0].Lat, rideRouteList.List[0].Lon);
		var htmlForMarker = '<p class="mapmarker">Latitide: ' + rideRouteList.List[0].Lat + '<br />Longitude: ' + rideRouteList.List[0].Lon + '<br /><br /><a href="/RideTool/AddRideDetails.aspx?rideid=' + rideRouteList.List[0].RideIDGUID + '">Draw a route for this ride</a></p>';
		var marker = createMarker(point, htmlForMarker);
		map.addOverlay(marker);
	}
	else
	{
		var geoCallback = function()
		{
			geoxml.gotoDefaultViewport(map);
		}

		if (GBrowserIsCompatible()) 
		{
			map = new GMap2(document.getElementById("map"));
			map.setCenter(new GLatLng(rideRouteList.List[0].Lat, rideRouteList.List[0].Lon), 11);  
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
			map.addMapType(G_PHYSICAL_MAP);
			map.setMapType(G_PHYSICAL_MAP);
			
			for(var i=0; i<rideRouteList.List.length; i++)
			{
				if(rideRouteList.List[i].Active == '1')
				{
					geoxml = new GGeoXml("http://www.whereweride.com/ride/ridekml.aspx?rideRouteID=" + rideRouteList.List[i].RideRouteIDGUID + "&number=" + i, geoCallback);
					map.addOverlay(geoxml);
				}
			}
		}
	}
}
		