var map = null;
var geocoder = null;

function load() {
	//prueft, ob der Browser Google Maps darstellen kann
	if (GBrowserIsCompatible()) {
		// Erzeugen eines neuen GMap-Objektes und Zuweisung der Map an das <div>-Tag mit der id "map"
		map = new GMap2(document.getElementById("map"));
		// Erstellung eines Punktes mit den angegebenen Koordinaten (erst Latitude, dnn Longitude)
		var point = new GLatLng(49.4578, 11.0762);
		// Zentrieren der Karte am angegebenen Punkt und Zuweisung der Zoomstufe
		map.setCenter(point, 16);
		// Hinzufuegen der Zoom- und Navigationskontrolle
		map.addControl(new GSmallMapControl());
		// Hinzufuegen der Auswahl des Kartentyps
		map.addControl(new GMapTypeControl());
		// Hinzufuegen eines MiniUebersichtsBrowsers
		map.addControl(new GOverviewMapControl());
		// Kartentyp setzen
		map.setMapType(G_HYBRID_MAP);
		// Infotext aufbereiten
		var infoText = "In dieser wundersch&ouml;nen Stadt wohnen wir.<br /> Hier seht ihr die N&uuml;rnberger Burg.";
		// Aufruf einer Hilfsmethode
		var marker = addPoint(point, infoText);
		// Darstellung des Markers auf der Karte
		map.addOverlay(marker);
		// InfoFenster gleich oeffnen
		marker.openInfoWindowHtml(infoText);
		// Ermittlung der Koordinaten des Kartenmittelpunkts
		var centerMap = map.getCenter();
		// GeoCoder instanzieren
		geocoder = new GClientGeocoder();
	}
}

function addPoint(point, content)
{
	// Erzeugung eines neuen Markers durch Instantiierung eines Marker-Objektes
	var marker = new GMarker(point);
	// Hinzufuegen eines Event-Listeners zu marker
	// Der abzufangende Event ist 'click'
	// Dritter Parameter ist die auszufuehrende Funktion
	GEvent.addListener(marker, "click", 
	function()
	{
		// Wenn ein Marker vorhanden ist...
		if (marker)
		{
			marker.openInfoWindowHtml(content);
		}
	});

	GEvent.addListener(marker, "dblclick", 
	function()
	{
		// Wenn ein Marker vorhanden ist...
		if (marker)
		{
			map.removeOverlay(marker);
			map.closeInfoWindow();
		}
	});
	return marker;
}

function showAddress(address)
{
	if(geocoder)
	{
		geocoder.getLatLng(
			address,
			function(point)
			{
				if (!point)
				{
					alert(address + " nicht gefunden!");
				}
				else
				{
					map.setCenter(point, 16);
					var marker = addPoint(point, address);
					map.addOverlay(marker);
					marker.openInfoWindowHtml(address);
				}
			}
		);
	}
}