var map;
var gdir;
var geocoder = null;
var addressMarker;

function initialize() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map_canvas"));
		map.setCenter(new GLatLng(40, -95.0), 3);
		gdir = new GDirections(map, document.getElementById("directions"));
		GEvent.addListener(gdir, "load", onGDirectionsLoad);
		GEvent.addListener(gdir, "error", handleErrors);
		map.addControl(new GSmallMapControl());
		var mapControl = new GMapTypeControl();
		map.addControl(mapControl);
	}
}

function setDirections(fromAddress, toAddress) {
	document.getElementById("ErrorMsgBox").innerHTML = '';
	document.getElementById("ErrorMsgBox").style.display = 'none';
	gdir.load("from: " + fromAddress + " to: " + toAddress);
	if(document.getElementById("directions").style.display = 'none')
	{
		document.getElementById("directions").style.display = 'block';
	}

}


function handleErrors(){
	if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
	{
		document.getElementById("ErrorMsgBox").style.display = 'block';
		document.getElementById("ErrorMsgBox").innerHTML += "One or both of your entered addresses could not be found. Please check them and try again or provide more information.<br>";//\nError code: " + gdir.getStatus().code;
	}
	else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
	{
		document.getElementById("ErrorMsgBox").style.display = 'block';
		document.getElementById("ErrorMsgBox").innerHTML += "Please enter at least city &amp; state OR a valid zip code.<br>";//\n Error code: " + gdir.getStatus().code;
	}
	else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
	{
		document.getElementById("ErrorMsgBox").style.display = 'block';
		document.getElementById("ErrorMsgBox").innerHTML += "Please enter at least city &amp; state OR a valid zip code.<br>";//\n Error code: " + gdir.getStatus().code;
	}

	//  else if (gdir.getStatus().code == G_UNAVAILABLE_ADDRESS)  <!--- Doc bug... this is either not defined, or Doc is wrong --->
	//  alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir.getStatus().code);

	else if (gdir.getStatus().code == G_GEO_BAD_KEY)
	{
		document.getElementById("ErrorMsgBox").style.display = 'block';
		document.getElementById("ErrorMsgBox").innerHTML += "Please enter at least city &amp; state OR a valid zip code.<br>";// \n Error code: " + gdir.getStatus().code;
	}
	else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
	{
		document.getElementById("ErrorMsgBox").style.display = 'block';
		document.getElementById("ErrorMsgBox").innerHTML += "Please enter at least city &amp; state OR a valid zip code.<br>";//\n Error code: " + gdir.getStatus().code;
	}
   else alert("An unknown error occurred.");
   
   if (document.getElementById("ErrorMsgBox").style.display == 'block') {
		document.getElementById("dirForm").style.display = 'block';
	}
}

function onGDirectionsLoad(){ 
//		document.getElementById("info").innerHTML = document.location.href;
if (document.getElementById("directions").style.display == 'block') {
	document.getElementById("printLink").style.display = 'block';
}
	  // Use this function to access information about the latest load()
	  // results.

	  // e.g.
	  // document.getElementById("getStatus").innerHTML = gdir.getStatus().code;
	  // and yada yada yada...
}