var latlng = false;

//****************
//***Configuration
//****************
var name = "";
var strasse = "Am Alten Binnenhafen";
var hausnummer = "10";
var plz = "26721";
var ort = "Emden";
var details = "Tel.: +49-4921-9405-0<br>Fax.: +49-4921-940533";
var latlng = new Array(53.362948,7.204973);
var marker = false;

function init_document()
{
	
	if (pics.length > 0)
	{
		timeout = setTimeout("fade('pic', "+pics+");", stopTime);
	}
	enableDropdownMenuForIE();

	name = php_name;

	if (document.getElementById("map"))
	{
		googlemap = new smallGoogleMap("map");
	}
}

function smallGoogleMap(id)
{
	document.getElementById("route_dest_name").innerHTML = name;
	document.getElementById("route_dest_strasse").innerHTML = strasse + " " + hausnummer;
	document.getElementById("route_dest_plz").innerHTML = plz;
	document.getElementById("route_dest_ort").innerHTML = ort;

	if (!GBrowserIsCompatible()) return false;
	var gcoder = new GClientGeocoder();
	var geocoder = null;
	var ary_marker = [];
	var map;
	var gdir;
    var addressMarker;

	function addPOI(point, firm, str, hnr, plz, ort, moveToPoint)
	{
		marker = new GMarker(point);
		GEvent.addListener(marker, "click", 
		function()
		{
			html = name+"<br>"+strasse+" "+hausnummer+"<br>"+plz+" "+ort+"<br>"+details;
			marker.openInfoWindowHtml(html);
		});
		ary_marker.push(marker);
		map.addOverlay(marker);
		if (moveToPoint)
		{
			map.setCenter(point, 14);
		}
	}

	function addPOIbyAdress(firm, str, hnr, plz, ort, moveToPoint)
	{
		var address = str + " " + hnr + " " + plz + " " + ort;
		gcoder.getLatLng(address, 
		function(point) 
		{
			if (!point)
			{
				alert(address + " not found");
			}
			else
			{
				addPOI(point, firm, str, hnr, plz, ort, moveToPoint);
			}
		});	
	}
	
	var toAddress = strasse + " " + plz + " " + ort;
	if (latlng)
	{
		var toAddress = latlng[0] + "," + latlng[1];
	}
	
	this.setDirections = function(fromAddress, locale)
	{
		query = "from: " + fromAddress + " to: " + toAddress;
		gdir.load(query, { "locale": locale });
	}

	function onGDirectionsLoad()
	{ 
		map.removeOverlay(marker);
	}

	function handleErrors()
	{
		if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
		{
			document.getElementById("strasse").style.backgroundColor = "FFCCCC";
			document.getElementById("plz").style.backgroundColor = "FFCCCC";
			document.getElementById("ort").style.backgroundColor = "FFCCCC";
			alert("Startadresse nicht gefunden");
		}
		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_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("Unbekannter Fehler aufgetreten.");
	   
	}

	function init()
	{
		map = new GMap2(document.getElementById(id));
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(37.4419, -122.1419), 13);
		if (latlng)
		{
			addPOI(new GLatLng(latlng[0], latlng[1]), name, strasse, hausnummer, plz, ort, true)
		}
		else
		{
			addPOIbyAdress(name, strasse, hausnummer, plz, ort, true);
		}
		gdir = new GDirections(map, document.getElementById("directions"));
		GEvent.addListener(gdir, "load", onGDirectionsLoad);
        GEvent.addListener(gdir, "error", handleErrors);
	}
	init();
}

var googlemap;

function setDirections(fromAddress, locale)
{
	check = true;
	if (document.getElementById("plz").value.length == 0) check = false;
	if (document.getElementById("ort").value.length == 0) check = false;
	
	if (check)
	{
		document.getElementById("plz").style.backgroundColor = "FFFFFF";
		document.getElementById("ort").style.backgroundColor = "FFFFFF";
		googlemap.setDirections(fromAddress, locale);
	}
	else
	{
		document.getElementById("plz").style.backgroundColor = "FFCCCC";
		document.getElementById("ort").style.backgroundColor = "FFCCCC";
		alert("Bitte geben sie PLZ und Ort der Startadresse an");
	}
}

function unload_document()
{
	if (googlemap)
	{
		GUnload()
	}
}

window.onload = init_document;
window.onunload = unload_document;


