var gdir;
var map;
var gcoder;
var ourAddress = { latlng: new GLatLng(51.911157, 4.587175) };

function initMap() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map_canvas") );

		setBasicView();

		map.addControl(new GSmallZoomControl() );
		map.addControl(new GMapTypeControl() );
		gdir = new GDirections(map, document.getElementById("directions") );

		GEvent.addListener(gdir, "error", handleErrors);

		gcoder = new GClientGeocoder();
	}
}

function setBasicView() {
	showLoader();

	if (Object.isElement($("error") ) ) {
		$("error").remove();
	}
	
	map.clearOverlays();
	map.setCenter(new GLatLng(51.911157, 4.587175), 13);

	var marker = new GMarker(ourAddress.latlng);
	map.addOverlay(marker);
	map.setMapType(G_SATELLITE_MAP);

	if (gdir) {
		gdir.clear();
	}
	hideLoader();
}

function setDirections(fromAddress) {
	var fromAddress = fromAddress || "A16, netherlands";

	showLoader();
	gcoder.setBaseCountryCode('NL');
	gcoder.getLatLng(fromAddress, addDirectionsToMap);
}

function showLoader() {
	$("loader").show();
}

function hideLoader(toggle) {
	if (toggle != true) {
		setTimeout("hideLoader(true)", 1000);
	}
	else {
		$("loader").hide();
	}
}

function addDirectionsToMap(point) {
// 	setBasicView();
	if (!point) {
		$("printroute").hide();
		$("directions").innerHTML += "<div id='error'><br/> De locatie " + document.directions.from.value + " kan niet gevonden worden, probeer het nog eens op een andere manier.</div>";
		hideLoader();
	}
	else {
		$("printroute").show();
		window.fromLocation = point;
		gdir.loadFromWaypoints([point, ourAddress.latlng], {locale: "nl_NL"});
		hideLoader();
	}
}

function handleErrors() {
	var message = "";
	if (gdir.getStatus().code != 200) {
		map.clearOverlays();
		message = "Vanaf uw locatie " + document.directions.from.value + " kan geen route naar ons kantoor worden berekend.";
		var marker = new GMarker(window.fromLocation);
		map.addOverlay(marker);
		marker.openInfoWindowHtml(document.directions.from.value);
		map.setCenter(window.fromLocation, 8);
	}
	$("directions").innerHTML += "<div id='error'><br/>" + message + "</div>";
}
