var myDirectory = "http://" + document.domain;

var map = null;
var dir = null;
var dir2 = null;
var panel = null;
var geoXml = null;
var myIcon = null;
var geocoder = null;
var routeNodes = [];
var myLocations = [];
var normalProj = null;
var directionsTo = "";
var routeMarker = null;
var dir2Loading = false;
var directionsFrom = "";
var mouseLocation = null;
var avoidHighways = true;
var markerDragged = false;
var mapLanguage = "en_US";
var travelMode = G_TRAVEL_MODE_DRIVING;

function loadTrafficMap()
{
	if (GBrowserIsCompatible())
	{
		google.setOnLoadCallback(initialize);
	}
}

function initialize() 
{
	//Set Map Center
	map = new google.maps.Map2(document.getElementById("map_canvas"));
	map.setCenter(new google.maps.LatLng(myLatitude, myLongitude), 7);

	//Link Driving Directions to Map and Panel
	panel = document.getElementById("route");
	dir = new GDirections(map, panel);
	
	//Link Driving Directions to Map
	dir2 = new GDirections(map, null);

	//Add Route Overlay Listeners
	GEvent.addListener(dir, "addoverlay", onDirectionsOverlay);
	
	//Add Error Listeners
	GEvent.addListener(dir, "error", onDirError1);
	GEvent.addListener(dir2, "error", onDirError2);
	
	//Add Route Load Event Listeners
	GEvent.addListener(dir, "load", onRouteLoad);
	GEvent.addListener(dir2, "load", onRouteLoad2);

	//Set Map Type
	setMapType("G_PHYSICAL_MAP");
		
	//Add Google Earth Map Type
	map.addMapType(G_SATELLITE_3D_MAP);	
	
	//Create Geocoder for Locations
	geocoder = new GClientGeocoder();
	
	//Setup Route Marker
	myIcon = new GIcon();
	myIcon.image = myDirectory + '/img/gif/node.gif';
	myIcon.shadow = '';
	myIcon.iconSize = new GSize(10,10);
	myIcon.shadowSize = new GSize(0,0);
	myIcon.iconAnchor = new GPoint(5,5); 
	myIcon.infoWindowAnchor = new GPoint(5,5);
	myIcon.dragCrossImage = myDirectory + '/img/gif/empty.gif';
	myIcon.dragCrossSize = GSize(1, 1); 
	myIcon.maxHeight = 1; 

	routeMarker = new GMarker(map.getCenter(), 
	{
		icon:myIcon, 
		draggable:true, 
		bouncy:false, 
		title:"Drag to Change Route",
		zIndexProcess:function(marker,b) {return 1;}
	});	

	//Setup Route Marker Event Listeners
	GEvent.addListener(routeMarker, "dragstart", routeMarkerOnDragStart);		
	//GEvent.addListener(routeMarker, "drag", routeMarkerOnDrag);	
	GEvent.addListener(routeMarker, "dragend", routeMarkerOnDragEnd);

	map.addOverlay(routeMarker);
	routeMarker.show();
	routeMarker.hide();
	
	//Display Marker When Close to Route
	GEvent.addListener(map, "mousemove", getProximity);	
	
	//Recalculate Coordinates on Map Zoom
	GEvent.addListener(map, "zoomend", onMapZoomEnd);
}

function onDirError1()
{
	onDirError(dir.getStatus().code);
}

function onDirError2()
{
	onDirError(dir2.getStatus().code);
}

function onDirError(code)
{
	var errorStr = '<p class="txt4 error">Error Occured: Code ' + code + '</p>';
	errorStr += '<p class="txt4 error bottomItem">';
	
	if (code == 200)
	{
		errorStr += "No errors were found retrieving the directions";
	}
	else if (code == 400)
	{
		errorStr += "The directions request was not successfully parsed. This could be because the ";
		errorStr += "request contained more than the maximum number of waypoints allowed.";
	}
	else if (code == 500)
	{
		errorStr += "A geocoding, directions or maximum zoom level request could not be ";
		errorStr += "successfully processed, yet the exact reason for the failure is not known.";
	}
	else if (code == 601)
	{
		errorStr += "The HTTP q parameter was either missing or had no value. For geocoding requests, ";
		errorStr += "this means that an empty address was specified as input. For directions requests, ";
		errorStr += "this means that no query was specified in the input.";
	}	
	else if (code == 602)
	{
		errorStr += "No corresponding geographic location could be found for the specified address. This may be ";
		errorStr += "due to the fact that the address is relatively new, or it may be incorrect.";
	}	
	else if (code == 603)
	{
		errorStr += "The geocode for the given address or the route for the given directions ";
		errorStr += "query cannot be returned due to legal or contractual reasons.";
	}		
	else if (code == 604)
	{
		errorStr += "The GDirections object could not compute directions between the location points. ";
		errorStr += "This is usually because there is no route available between the two points, ";
		errorStr += "or because we do not have data for routing in that region.<br /><br />If you recently ";
		errorStr += "tried to customize your route by dragging a marker, try redragging the marker ";
		errorStr += "to update the route and get rid of this error.";
	}	
	else if (code == 610)
	{
		errorStr += "The given key is either invalid or does not match the domain for which it was given.";
	}
	else if (code == 620)
	{
		errorStr += "The given key has gone over the requests limit in the 24 hour period or has ";
		errorStr += "submitted too many requests in too short a period of time. If you're sending multiple requests in ";
		errorStr += "parallel or in a tight loop, use a timer or pause in your code to make sure you don't send the ";
		errorStr += "requests too quickly.";
	}
	
	errorStr += '</p>';
	
	document.getElementById('error_info').innerHTML = errorStr;
	
	var myErrorDiv = document.getElementById("error_info");
	var routeDiv = document.getElementById('route');
	var sideAdsDiv = document.getElementById('SIDE_ADS');
	var destDiv = document.getElementById('PITSTOPS');
	var sideAdsDivOne = document.getElementById('GOOGLE_SIDE_AD1');
	
	myErrorDiv.style.display = 'block';
	routeDiv.style.display = 'none';	
	sideAdsDiv.style.display = 'none';
	destDiv.style.display = 'none';
	sideAdsDivOne.style.display = 'none';
}

function onMapZoomEnd()
{
	routeNodes = [];
}

function routeMarkerOnDragStart()
{
	markerDragged = true;	
}

function routeMarkerOnDrag()
{
	if (dir2Loading == false)
	{
		routeMarker.show();

		if (routeMarker.MyIndex < myLocations.length) 
		{
			dir2Loading = true;

			var waypoints = [];
			waypoints[0] = myLocations[routeMarker.MyIndex].getLatLng();
			waypoints[1] = routeMarker.getLatLng();
			waypoints[2] = myLocations[routeMarker.MyIndex+1].getLatLng();
				
			dir2.loadFromWaypoints(waypoints,
			{
				travelMode:travelMode, 
				avoidHighways:avoidHighways,
				getPolyline:true,
				getSteps:true,
				locale:mapLanguage,
				preserveViewport: true
			});
		}
	}
}

function routeMarkerOnDragEnd(point)
{		
	if (markerDragged == true)
	{
		markerDragged = false;
		routeMarker.hide();
		
		var newMarker = new GMarker(point, 
		{
			icon:myIcon, 
			draggable:true, 
			bouncy:false, 
			title:"Pit Stop",
			zIndexProcess:function(marker,b) {return 1;}
		});	
		
		GEvent.addListener(newMarker, "dragend", routeMarkerOnDragEnd);
		
		var markerIndex = routeMarker.MyIndex+1;
		myLocations.splice(markerIndex, 0, newMarker);
		map.addOverlay(myLocations[markerIndex]);	
	}

	var points = [];
	
	for (var i=0; i<myLocations.length; i++)
	{
		points[i] = myLocations[i].getLatLng();
	}

	dir.clear();
	dir2.clear();
			
	dir.loadFromWaypoints(points,
	{
		travelMode:travelMode, 
		avoidHighways:avoidHighways,
		getPolyline:true,
		getSteps:true,
		locale:mapLanguage,
		preserveViewport: true
	});
}

function showTraffic()
{
	var showTraffic = document.getElementById('SHOW_TRAFFIC')
	
	if (showTraffic.value == "YES")
	{
		var trafficOptions = {incidents:true};
		trafficInfo = new GTrafficOverlay(trafficOptions);
		map.addOverlay(trafficInfo);		
	}
	else
	{
		map.removeOverlay(trafficInfo);
	}
}

function updateTravelMode()
{
	travelMode = document.getElementById('TRAVEL_MODE').value;
	
	if (travelMode == "G_TRAVEL_MODE_WALKING")
	{
		travelMode = G_TRAVEL_MODE_WALKING;	
	}
	else if (travelMode == "G_TRAVEL_MODE_DRIVING")
	{
		travelMode = G_TRAVEL_MODE_DRIVING;	
	}
	
	if (myLocations.length > 1)
	{
		var waypoints = [];
		
		for (i=0; i<myLocations.length; i++)
		{
			waypoints[i] = myLocations[i].getLatLng();
		}

		dir.loadFromWaypoints(waypoints,
		{
			travelMode:travelMode, 
			avoidHighways:avoidHighways,
			getPolyline:true,
			getSteps:true,
			locale:mapLanguage,
			preserveViewport: true
		});	
	}	
}

function updateHighways()
{
	avoidHighways = document.getElementById('AVOID_HIGHWAYS').value;
	
	if (avoidHighways == "YES")
	{
		avoidHighways = true;	
	}
	else if (avoidHighways == "NO")
	{
		avoidHighways = false;	
	}
	
	if (myLocations.length > 1)
	{
		var waypoints = [];
		
		for (i=0; i<myLocations.length; i++)
		{
			waypoints[i] = myLocations[i].getLatLng();
		}

		dir.loadFromWaypoints(waypoints,
		{
			travelMode:travelMode, 
			avoidHighways:avoidHighways,
			getPolyline:true,
			getSteps:true,
			locale:mapLanguage,
			preserveViewport: true
		});	
	}
}

function getDirections2()
{
	setTimeout("getDirections()", 1000);
}

function getDirections()
{		
	dir.clear();
	dir2.clear();

	var destDiv = document.getElementById('PITSTOPS');
	destDiv.style.display = 'none';

	var tempLocationFrom = document.getElementById('LOCATION_FROM');

	if (geocoder && tempLocationFrom.value != "") 
	{
		geocoder.getLatLng(tempLocationFrom.value, function(point)
		{
			if (!point) 
			{
				alert("The starting location was not found.");
			} 
			else 
			{
				directionsFrom = point;

				var tempLocationTo = document.getElementById('LOCATION_TO');
			
				if (geocoder && tempLocationTo.value != "") 
				{
					geocoder.getLatLng(tempLocationTo.value, function(point)
					{
						if (!point) 
						{
							alert("The destination location was not found.");
						} 
						else 
						{
							directionsTo = point;

							dir.load("from: " + directionsFrom + " to: " + directionsTo, 
							{
								travelMode:travelMode, 
								avoidHighways:avoidHighways,
								getPolyline:true,
								getSteps:true,
								locale:mapLanguage
							});
						}
					});
				}
			}
		});
	}
}

function onDirectionsOverlay()
{
	var latLngs = [];
	var icons = [];
	var titles = [];
			
	for (var i=0; i<myLocations.length; i++)
	{
		map.removeOverlay(myLocations[i]);
	}
	
	myLocations = [];
	routeNodes = [];
	
	for (var i=0; i<dir.getNumGeocodes(); i++)
	{
		var originalMarker = dir.getMarker(i);
		latLngs[i] = originalMarker.getLatLng();
		icons[i] = originalMarker.getIcon();
		titles[i] = dir.getGeocode(i).address;
		myLocations[i] = new GMarker(latLngs[i],{icon:icons[i], draggable:true, title:titles[i]})
		myLocations[i].MyIndex = i;

		//Add New Marker to Map
		map.addOverlay(myLocations[i]);	

		//Add Drag Event to New Marker
		GEvent.addListener(myLocations[i], "dragend", routeMarkerOnDragEnd);
		
		//Copy Click Event From Old Marker
		copyClick(myLocations[i],originalMarker);
		
		//Delete Old Marker
		map.removeOverlay(originalMarker);
	}

	function copyClick(newMarker,oldMarker)
	{
		GEvent.addListener(newMarker, 'click', function()
		{
				GEvent.trigger(oldMarker,'click');
		})
	}
}

function onRouteLoad()
{		
	var routeDiv = document.getElementById('route');
	routeDiv.style.display = 'block';	

	var myErrorDiv = document.getElementById("error_info");
	myErrorDiv.style.display = 'none';

    updateDestinationDiv();

	setTimeout("loadSideAds()", 1000);
	
	normalProj = G_NORMAL_MAP.getProjection();

	var myRoute = dir.getRoute(0);
	var latList = null;
	var lngList = null;
	
	for (i=0; i<myRoute.getNumSteps(); i++)
	{
		var routeStep = myRoute.getStep(i);
		var LatLng = routeStep.getLatLng();
		
		if (latList == null)
		{
			latList = LatLng.lat();
		}
		else
		{
			latList = latList + "," + LatLng.lat();
		}

		if (lngList == null)
		{
			lngList = LatLng.lng();
		}
		else
		{
			lngList = lngList + "," + LatLng.lng();
		}
	}
	
	var kmlURL = myDirectory + "/kml/drivingBizList.cfm?latList="+latList+"&lngList="+lngList;

	GDownloadUrl(kmlURL, kmlLoaded);
}

function onRouteLoad2()
{
	dir2Loading = false;
}

function kmlLoaded(data, responseCode)
{
	var xmlDoc = GXml.parse(data); 

	var markers = xmlDoc.documentElement.getElementsByTagName("marker");

	for(i=0; i<markers.length; i++)
	{		
		var lat = null;
		var lng = null;
		var maxContent = null;
		var minContent = null;
		var label = null;
	
		for (j=0; j<markers[i].childNodes.length; j++)
		{
			if (markers[i].childNodes[j].tagName == "lat")
			{
				lat = parseFloat(markers[i].childNodes[j].firstChild.data);
			}
			else if (markers[i].childNodes[j].tagName == "lng")
			{
				lng = parseFloat(markers[i].childNodes[j].firstChild.data);
			}
			else if (markers[i].childNodes[j].tagName == "maxContent")
			{
				maxContent = markers[i].childNodes[j].firstChild.data;
			}
			else if (markers[i].childNodes[j].tagName == "minContent")
			{
				minContent = markers[i].childNodes[j].firstChild.data;
			}			
			else if (markers[i].childNodes[j].tagName == "desc")
			{
				label = markers[i].childNodes[j].firstChild.data;
			}
		}
		
		var point = new GLatLng(lat,lng);		
		var marker = createMarker(point,label,maxContent,minContent);
		map.addOverlay(marker);
	}		
}

function createMarker(point,name,maxContent,minContent) 
{
	var marker = new GMarker(point);

	var contentNode = document.createElement('div');
	contentNode.innerHTML = maxContent;
	
	var titleNode = document.createElement('div');
	titleNode.innerHTML = name;

	GEvent.addListener(marker, "click", function() 
	{		
		marker.openInfoWindowHtml(minContent, 
		{
			maxContent: contentNode,
			maxTitle: titleNode
		}) 
	})

	return marker;
}

function loadSideAds()
{
	var routeDiv = document.getElementById('route');
	var destDiv = document.getElementById('PITSTOPS');
	var sideAdDiv = document.getElementById('SIDE_ADS');
	var sideAdsDivOne = document.getElementById('GOOGLE_SIDE_AD1');
	
	var routeHeight = routeDiv.offsetHeight;
	var destHeight = destDiv.offsetHeight;
		
	var maxAds = Math.floor((routeHeight-destHeight) / 120);
	
	if (maxAds > 2)
	{
		maxAds = maxAds;	
	}
	
	if (maxAds != 0)
	{
		xmlHttp=GetXmlHttpObject()
	   
		if (xmlHttp==null)
		{
		   return;
		}

		url = myDirectory + "/ADS/showSideAds.cfm?maxAds="+maxAds+"&sid="+Math.random();
		xmlHttp.open("GET",url,false) ;
		xmlHttp.send(null);	
	
		if (xmlHttp.responseText != '')
		{			
		    sideAdDiv.innerHTML= xmlHttp.responseText;
		    sideAdDiv.style.display = 'block';
		}

		var ADSpace = routeHeight - destHeight - sideAdDiv.offsetHeight;

		if (ADSpace > 630)
		{
			sideAdsDivOne.style.display = 'block';
		}
		else
		{
			sideAdsDivOne.style.display = 'none';
		}		
	}
}

function GetXmlHttpObject(handler)
{
   var objXMLHttp=null
   
   if (window.XMLHttpRequest)
   {
       objXMLHttp=new XMLHttpRequest()
   }
   else if (window.ActiveXObject)
   {
       objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
   }
   
   return objXMLHttp
}

function setMapType(myMapType)
{
	if (myMapType == "G_SATELLITE_3D_MAP")
	{
	  map.setMapType(G_SATELLITE_3D_MAP);
	}
	else if (myMapType == "G_NORMAL_MAP")
	{
	  map.setMapType(G_NORMAL_MAP);
	  map.setUIToDefault();
	}
	else if (myMapType == "G_SATELLITE_MAP")
	{
	  map.setMapType(G_SATELLITE_MAP);
	  map.setUIToDefault();
	}				
	else if (myMapType == "G_HYBRID_MAP")
	{
	  map.setMapType(G_HYBRID_MAP);
	  map.setUIToDefault();
	}	
	else if (myMapType == "G_PHYSICAL_MAP")
	{
	  map.setMapType(G_PHYSICAL_MAP);
	  map.setUIToDefault();
	}								
} 

function getProximity(mouseLatLng) 
{
	if (dir != null && dir.getStatus().code == 200)
	{
		var myPolyline = dir.getPolyline();
		var zoom = map.getZoom();
		
		if (myPolyline != null && routeNodes.length == 0)
		{
			var last_point = null;
			
			for (var i=0; i<myPolyline.getVertexCount(); i++) 
			{
				var point = normalProj.fromLatLngToPixel(myPolyline.getVertex(i), zoom);
										
				if (last_point == null || last_point.x != point.x || last_point.y != point.y)
				{
					routeNodes.push(point.x);
					routeNodes.push(point.y);
					routeNodes.push(i);
					last_point = point;
				}
			}
		}
		
		if (!mouseLatLng || routeNodes.length <= 1 || markerDragged == true)
		{
			return;
		}	

		var mousePx = normalProj.fromLatLngToPixel(mouseLatLng, zoom);
		var mouseX = mousePx.x;
		var mouseY = mousePx.y;

		var x = routeNodes[0];
		var y = routeNodes[1];
		var minX = x;
		var minY = y;
		var minDist = 99999;
		
		var nearVertex = -1;

		for (var n=3; n<routeNodes.length; n+=3) 
		{
			var x0 = x;
			var y0 = y;
			x = routeNodes[n];
			y = routeNodes[n+1];
			
			if ((x<mouseX-50 && x0<mouseX-50) || (x>mouseX+50 && x0>mouseX+50)) 
			{
				continue;
			}
			
			if ((y<mouseY-50 && y0< mouseY-50) || (y>mouseY+50 && y0>mouseY+50)) 
			{
				continue;
			}
			
			var dx = x-x0; 
			var dy = y-y0;
			var d = dx*dx + dy*dy;		
	
			var u = ((mouseX-x) * dx + (mouseY-y) * dy) / d;
			var x2 = x + (u*dx);
			var y2 = y + (u*dy);
			
			var dist = (mouseX-x2)*(mouseX-x2) + (mouseY-y2)*(mouseY-y2);
	
			if (minDist > dist) 
			{
				var d1 = (mouseX-x0)*(mouseX-x0) + (mouseY-y0)*(mouseY-y0);
				var d2 = (mouseX-x)*(mouseX-x) + (mouseY-y)*(mouseY-y)
	
				if ((d1-dist) + (d2-dist) > d) 
				{
					if (d1 < d2) 
					{
						dist = d1; 
						x2 = x0;
						y2 = y0;
					}
					else 
					{
						dist = d2; 
						x2 = x;
						y2 = y;
					}				
				}
			}
	
			if (minDist > dist) 
			{
				minDist = dist;
				minX = x2;
				minY = y2;
				nearVertex = routeNodes[n+2];
			}
		}	
		
		if (minDist > 250) 
		{
			routeMarker.hide();
		}	
		else 
		{	
			for (n = myLocations.length; --n >= 0;) 
			{
				var markerPx = normalProj.fromLatLngToPixel(myLocations[n].getLatLng(), zoom);
				
				dx = markerPx.x - minX;
				dy = markerPx.y - minY;
				
				if (dx*dx + dy*dy < 25) 
				{
					routeMarker.hide();
					return;
				}	
			}
			
			routeMarker.MyIndex = 0;
			
			if (myLocations.length > 24)
			{
				routeMarker.hide();
				return;
			}
			else if (dir.getNumRoutes() > 1)
			{				
				for (p=0; p<dir.getNumRoutes(); p++)
				{
					var polyRoute = dir.getRoute(p);
					
					var firstRouteStep = polyRoute.getStep(0);
					var firstRouteIndex = firstRouteStep.getPolylineIndex();
					
					var lastRouteStep = polyRoute.getStep(polyRoute.getNumSteps()-1);
					var lastRouteIndex = lastRouteStep.getPolylineIndex();

					if (nearVertex > firstRouteIndex && nearVertex < lastRouteIndex)
					{
						routeMarker.MyIndex = p;
						break;
					}
				}
			}
						
			routeMarker.setLatLng(normalProj.fromPixelToLatLng(new GPoint(minX, minY), zoom));
			routeMarker.show();
		}			
	}
}

function updateDestinationDiv()
{
	var destDiv = document.getElementById('PITSTOPS');
	
	try
	{
		destDiv.style.display = 'block';
		
		var destContent = '<h3 class="hdr2">Driving Destinations</h3>';
		destContent += '<p class="destTxt">You can drag a destinations to change the order of your stops.</p>';
	
		for (p=0; p<dir.getNumGeocodes(); p++)
		{
			var myGeoCode = dir.getGeocode(p);		
			destContent += '<div class="DETOUR" id="ID_'+p+'">';
			destContent += '<table cellpadding="0" cellspacing="0" class="PITSTOP_TABLE" width="200"><tr>';
			destContent += '<td class="PITSTOP_ADDR">'+myGeoCode.address+'</td>';
			destContent += '<td>&nbsp;</td>';
			destContent += '<td class="PITSTOP_ICON"><img src="'+myDirectory+'/img/png/no.png" onclick="deleteDestination('+p+')" ';
			destContent += 'alt="Delete Destination" title="Delete Destination" height="16" width="16" />';
			destContent += '</td></tr></table></div>';
		}
		
		destDiv.innerHTML = destContent;
		Sortable.create('PITSTOPS',{tag:'div', containment: 'PITSTOPS', only:'DETOUR', onUpdate:onDestDivChange}); 
	}
	catch(err)
	{
		destDiv.style.display = 'none';
	}	
}

function onDestDivChange(sortable)
{
	var destDiv = document.getElementById('PITSTOPS');
	
	try
	{
		var divs = destDiv.getElementsByTagName('div');
		var divIDs = [];
		
		for (var i = 0; i < divs.length; i++)
		{                      
			divIDs[i] = divs[i].id.substring(3);
		}
		
		var waypoints = [];
		
		for (i=0; i<divIDs.length; i++)
		{
			divID = divIDs[i];
			waypoints[i] = myLocations[divID].getLatLng();
		}
				
		dir.clear();		
				
		dir.loadFromWaypoints(waypoints,
		{
			travelMode:travelMode, 
			avoidHighways:avoidHighways,
			getPolyline:true,
			getSteps:true,
			locale:mapLanguage,
			preserveViewport: true
		});	
	}
	catch(err)
	{
		destDiv.style.display = 'none';
	}
}

function deleteDestination(markerID)
{
	dir.clear();
	
	if (myLocations.length > 2)
	{
		var waypoints = [];
		var waypointID = 0;
		
		for (i=0; i<myLocations.length; i++)
		{
			if (i != markerID)
			{
				waypoints[waypointID] = myLocations[i].getLatLng();
				waypointID += 1;
			}
		}

		dir.loadFromWaypoints(waypoints,
		{
			travelMode:travelMode, 
			avoidHighways:avoidHighways,
			getPolyline:true,
			getSteps:true,
			locale:mapLanguage,
			preserveViewport: true
		});	
	}
	else
	{
		var myErrorDiv = document.getElementById("error_info");
		var routeDiv = document.getElementById('route');
		var sideAdsDiv = document.getElementById('SIDE_ADS');
		var sideAdsDivOne = document.getElementById('GOOGLE_SIDE_AD1');
		var destDiv = document.getElementById('PITSTOPS');
		var destFrom = document.getElementById('LOCATION_FROM');
		var destTo = document.getElementById('LOCATION_TO');
		
		myErrorDiv.style.display = 'none';
		routeDiv.style.display = 'none';	
		sideAdsDiv.style.display = 'none';	
		sideAdsDivOne.style.display = 'none';	
		destDiv.style.display = 'none';
		destFrom.value = '';
		destTo.value = '';
		
		for (i=0; i<myLocations.length; i++)
		{
			map.removeOverlay(myLocations[i]);
		}
		
		map.clearOverlays();
		
		initialize();
	}
}

function exportToPDF()
{
	var latList = "";
	var lngList = "";

	for (var i=0; i<myLocations.length; i++)
	{
		if (latList != "")
		{
			latList = latList + "," + myLocations[i].getLatLng().lat();
		}
		else
		{
			latList = myLocations[i].getLatLng().lat();		 
		}
		
		if (lngList != "")
		{
			lngList = lngList + "," + myLocations[i].getLatLng().lng();
		}
		else
		{
			lngList = myLocations[i].getLatLng().lng();		 
		}
	}	
	
	var myURL = myDirectory + '/green-living/driving-directions.cfm?createPDF=1&mapLanguage=' + mapLanguage + "&latList=";
	myURL += latList + "&lngList=" + lngList + "&travelMode=" + travelMode + "&avoidHighways=" + avoidHighways;
	
	window.location = myURL;
}

function exportToFlashPaper()
{
	var latList = "";
	var lngList = "";

	for (var i=0; i<myLocations.length; i++)
	{
		if (latList != "")
		{
			latList = latList + "," + myLocations[i].getLatLng().lat();
		}
		else
		{
			latList = myLocations[i].getLatLng().lat();		 
		}
		
		if (lngList != "")
		{
			lngList = lngList + "," + myLocations[i].getLatLng().lng();
		}
		else
		{
			lngList = myLocations[i].getLatLng().lng();		 
		}
	}	
	
	var myURL = myDirectory + '/green-living/driving-directions.cfm?createPDF=0&mapLanguage=' + mapLanguage + "&latList=";
	myURL += latList + "&lngList=" + lngList + "&travelMode=" + travelMode + "&avoidHighways=" + avoidHighways;
	
	window.location = myURL;	
}
