/* gmap2.js
 * Last Modified on 05/13/09 by www.bailbondco.com and www.clopez27.com
 * File provides the script needed for the GMaps Object to work on site.
 */


// Checks to see if the browser is capable of showing Map object. 
// If so, then the Map object loads. Is CDATA.

//<![CDATA[

var map;
var gdir;
var geocoder = null;
// var addressMarker;


function gMapLoad() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		
		gdir = new GDirections(map, document.getElementById("directions"));
		GEvent.addListener(gdir, "load", onGDirectionsLoad);
		GEvent.addListener(gdir, "error", handleErrors);
		setDirections("Kingman, AZ", "207 N. 4th St., Kingman, AZ 86401");
	}
}

// setDirections()
// Takes two parameters, "fromAddress" and "toAddress", and passes them to gdir.load(). Used whenever map is loaded.
//
// A possible-but-optional parameter is "locale"; used when one wants to specify what language the directions should
// show up as when the map is first loaded. After that, "locale" is overwritten by the value of the hidden input 
// parameter also called "locale" (provided on the page where map is displayed).
//
// Usage with "locale" --> gdir.load("from: " + fromAddress + " to: " + toAddress,	{ "locale": locale });
function setDirections(fromAddress, toAddress) {
	gdir.load("from: " + fromAddress + " to: " + toAddress);
}


function handleErrors(){
	if (gdir.getStatus().code == G_GEO_MISSING_QUERY) {
		alert("NO entry provided." + gdir.getStatus().code);
		setDirections("Kingman, AZ", "207 N. 4th St., Kingman, AZ 86401");
	} else if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS) {
		alert("No corresponding geographic location could be found for one of the specified addresses. "
					+ "This may be due to the fact that the address is relatively new, or it may be incorrect. "
					+ "Please try typing your address again. "
					+ "\nError code: " + gdir.getStatus().code);
	}	else if (gdir.getStatus().code == G_GEO_SERVER_ERROR) {
		alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known. "
					+ "\n Error code: " + gdir.getStatus().code);
	} else if (gdir.getStatus().code == G_GEO_MISSING_QUERY) {
		alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. "
					+ "For directions requests, this means that no query was specified in the input."
					+ "\n Error code: " + gdir.getStatus().code);
	} else if (gdir.getStatus().code == G_GEO_UNAVAILABLE_ADDRESS) {
		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) {
		alert("The given key is either invalid or does not match the domain for which it was given. "
					+ "\n Error code: " + gdir.getStatus().code);
	} else if (gdir.getStatus().code == G_GEO_BAD_REQUEST) {
		alert("A directions request could not be successfully parsed. "
					+ "\n Error code: " + gdir.getStatus().code);
	} else {
		alert("An unknown error occurred.");
	}
}

function onGDirectionsLoad(){ 
	// Use this function to access information about the latest load()
	// results.
	
	// e.g.
	// document.getElementById("getStatus").innerHTML = gdir.getStatus().code;
}


//]]>


// Loads function without actually placing the command in the HTML 'body' tag.
// If command is placed in 'body' tag, then other javascript code might not work properly.
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

addLoadEvent(gMapLoad); // run gMapLoad onload
