var options = null;
var map = null;
var source = null;
var destination = null;

function GetMap()
{	
	try
	{
		document.getElementById("myMap").innerHTML = "Map is loading...";
		
		source = document.getElementById("lblSourceAddress").value + " " +
				document.getElementById("lblSourceCity").value + " " +
				document.getElementById("lblSourceState").value + " " +
				document.getElementById("lblSourceZip").value;
					 
		destination = document.getElementById("lblDestAddress").value + " " +
					document.getElementById("lblDestCity").value + " " +
		 			document.getElementById("lblDestState").value + " " +
					document.getElementById("lblDestZip").value;
					
		document.getElementById("fromAddress").innerHTML = "<strong>Coming From: </strong>" + source;
		document.getElementById("toAddress").innerHTML = "<strong>Going To: </strong>" + destination;

		map = new VEMap('myMap');
							
		map.LoadMap(null,4,VEMapStyle.Road,false,VEMapMode.Mode2D,false,1);
		
		options = new VERouteOptions;
		var locations = new Array(source, destination);
	
		options.DrawRoute = true;

		options.RouteCallback = showDrivingDirections;
		
		options.DistanceUnit = VERouteDistanceUnit.Mile;

		options.ShowDisambiguation = true;
	
		map.GetDirections(locations, options);
	}
		
	catch (err)
	{
		alert(err.description);
	}					
}

function showDrivingDirections(route)
{
	var legs = route.RouteLegs;
	var steps="";
	var leg = null;
		
	steps += "<table class=DirectionsTable cellspacing=0 cellpadding=4 bordercolor=#E3E1B9 border=2>";
	steps += "<th class=DirectionsHeader align=left>Driving Directions</th>"
	steps += "<th class=DirectionsHeader align=left>Distance</th>"
		
	for(var i = 0; i<legs.length; i++)
	{
		leg = legs[i];
		
		for(var j = 0; j < leg.Itinerary.Items.length; j++)
		{
			
			if (leg.Itinerary.Items[j].Distance == null)
			{
				steps+="<tr class=InfoRow><td>" + (j+1) + ": " + leg.Itinerary.Items[j] + "</td><td></td></tr>";
			}
			else
			{
				steps+="<tr class=DirectionRow><td>" + (j+1) + ": " + leg.Itinerary.Items[j].Text + "</td>";
				steps+="<td>" + leg.Itinerary.Items[j].Distance.toFixed(1) + " " + options.DistanceUnit + "s</td></tr>";
			}
		}	
	}
	steps += "</table>";
	steps += "<table class=TotalTable>";
	steps += "<tr class=TotalLine><td align=left>Time = ";
	
	var hours = 0;
	var minutes = 0;
	
	if (route.Time >= 3600)
	{
		hours = route.Time/3600;
		if (hours.toFixed(0) <= 1)
		{
			steps += hours.toFixed(0) + " Hour ";
		}
		else
		{
			steps += hours.toFixed(0) + " Hours ";
		}
	}
	if (route.Time >= 60)
	{
		minutes = (route.Time - (hours.toFixed(0)*3600))/60;
	}
	if (minutes.toFixed(0) > 0)
	{
		steps += minutes.toFixed(0);
		if (minutes <= 1)
		{
			steps += " Minute";
		}
		else
		{
			steps += " Minutes";
		}
	}
	steps +=  "</td>";
	
	steps += "<td align=right>Distance = " + route.Distance.toFixed(1) + " " + options.DistanceUnit;
	
	if (route.Distance.toFixed(1) > 1)
	{
		steps += "s";
	}

	steps += "</td></tr>"

	document.getElementById("lblDirections").innerHTML = steps;    
}		

function UnloadMap()
{
	if (map != null)
	{
		map.Dispose();
		map = null;
	}
}