var Map = {
	gmarkers : Array(),
	to_htmls : Array(),
	from_htmls : Array(),
	markerCount : 0,
	showMap: function() {
		if (GBrowserIsCompatible()) {
			var maptoshow = $('map');
			maptoshow.setStyles({
				'width': 520,
				'height': 380
			});
			var map = new GMap2(maptoshow);
			var mapControl = new GMapTypeControl();
			map.addControl(mapControl);
			map.addControl(new GSmallMapControl());
			var geocoder = new GClientGeocoder(new GGeocodeCache());
		
			var reasons=[];
			reasons[G_GEO_SUCCESS]            = "Erfolg";
			reasons[G_GEO_MISSING_ADDRESS]    = "Fehlende Adresse: Es wurde keine Adresse angegeben.";
			reasons[G_GEO_UNKNOWN_ADDRESS]    = "Unbekannte Adresse: Für die angegebene Adresse konnte kein geografischer Standort gefunden werden.";
			reasons[G_GEO_UNAVAILABLE_ADDRESS]= "Die Adresse steht nicht zur Verfügung: Aus rechtlichen oder vertraglichen Gründen kann die angegebene Adresse nicht angezeigt werden.";
			reasons[G_GEO_BAD_KEY]            = "Falscher Schlüssel: Der API-Schlüssel ist entweder ungültig oder stimmt nicht mit der Domain überein, für die er erstellt wurde.";
			reasons[G_GEO_TOO_MANY_QUERIES]   = "Zu viele Anfragen: Die tägliche Quote an Adressanfragen für diese Internetseite wurde überschritten.";
			reasons[G_GEO_SERVER_ERROR]       = "Server Fehler: Die Adressanfrage konnte nicht erfolgreich verarbeitet werden.";

			address = 'Sonnenallee 14-30, 06766 Bitterfeld-Wolfen';
			geocoder.getLatLng(address, function(point) {
				map.checkResize();
				if (point) {
					map.setCenter(point, 12);
					var html = '';
					html = html + '<b>Sovello AG</b><br />';
					html = html + 'Sonnenallee 14-30<br />';
					html = html + '06766 Bitterfeld-Wolfen';
					var marker = Map.createMarker(point, address, html);
					map.addOverlay(marker);
				}
				else {
					map.setCenter(new GLatLng(51.138001, 11.041504), 4);
					var result = geocoder.getCache().get(address);
					if (result) {
						var reason = "Fehlercode: " + result.Status.code;
						if (reasons[result.Status.code]) {
							reason = reasons[result.Status.code];
						}
						alert("Die Adresse \"" + address + "\" konnte nicht gefunden werden. " + reason)
					}
				}
			});
		}
		else {
			alert('Google Maps does not support your Browser.');
		}
	},
	createMarker: function(point, address, html) {
		var marker = new GMarker(point);

		Map.to_htmls[Map.markerCount] = '<div class="directions" style="width: 240px; height: 120px;">' + html + '<br /><br /><b>Route berechnen:</b> Hierher - <a href="javascript:Map.fromhere(' + Map.markerCount + ')">Von hier</a>' +
		'<br /><span class="address_head">Startadresse</span><br /><form action="http://maps.google.com/maps" method="get" target="_blank">' +
		'<input type="text" size="20" maxlength="120" name="saddr" id="saddr" value="" />' +
		'<input value="Los!" type="submit">' +
		'<input type="hidden" name="daddr" value="' + address + '"/></form></div>';
		Map.from_htmls[Map.markerCount] = '<div class="directions" style="width: 240px; height: 120px;">' + html + '<br /><br /><b>Route berechnen:</b> <a href="javascript:Map.tohere(' + Map.markerCount + ')">Hierher</a> - Von hier' +
		'<br /><span class="address_head">Zieladresse:</span><br /><form action="http://maps.google.com/maps" method="get"" target="_blank">' +
		'<input type="text" size="20" maxlength="120" name="daddr" id="daddr" value="" />' +
		'<input value="Los!" type="submit">' +
		'<input type="hidden" name="saddr" value="' + address +	'"/></form></div>';
		html = '<div class="directions" style="width: 240px; height: 80px;">' + html + '<br /><br />Route berechnen: <a href="javascript:Map.tohere(' + Map.markerCount + ')">Hierher</a> - <a href="javascript:Map.fromhere(' + Map.markerCount + ')">Von hier</a></div>';

		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml(html, {maxWidth: 240});
		});
		Map.gmarkers[Map.markerCount] = marker;
		Map.markerCount++;
		return marker;
	},
	tohere: function(marker_index) {
		Map.gmarkers[marker_index].openInfoWindowHtml(Map.to_htmls[marker_index], {maxWidth: 240});
	},
	fromhere: function(marker_index) {
		Map.gmarkers[marker_index].openInfoWindowHtml(Map.from_htmls[marker_index], {maxWidth: 240});
	}
};
window.addEvent('domready', Map.showMap);


