var ort = 'Argonnenstrasse 1, 88250 Weingarten';
//var markerTextTemplate = '<div class="googleMapsContent">{DESCRIPTION}</div>';
var markerTextTemplate = '{DESCRIPTION}';
var markerTextElement = null;
var markerTitle = 'Motec Cycles Jerg';
var markerText = '<div style="height:20px;width:250px;"><strong>Motec Jerg Cycles</strong></div><div style="margin-top:10px;height:20px;">Argonnenstrasse 1/1</div><div style="height:20px;">88250 Weingarten</div>';
var locationMaps = 'Argonnenstrasse 1, 88250 Weingarten';
var map = null;
var latlng;
var zoom = 13;
var element = 'gMaps';
var markers = new Array();
var firstGoogleMaps = true;
var firstChange = true;

var infoglobal = null;


/**
 * Karte laden und anzeigen, wenn möglich
 */
function ladeMap(){
	//Initialisiert Google Maps
	sucheKoordinaten();
}

function setMarkerInformation(html, locationMaps, title){
	if(locationMaps)	ort = formatiereDiv(locationMaps);
	else				ort = '';
	
	if(html)			markerText = formatiereDiv(html);
	else				markerText = '';
	
	if(title)			markerTitle = formatiereDiv(title);
	else				markerTitle = '';
}

/**
 * Zeigt die Map an
 */
function zeigeMapAn(){
	if(firstGoogleMaps){
		var myOptions = {
		  zoom: zoom,
		  center: latlng,
		  mapTypeId: google.maps.MapTypeId.ROADMAP
		};
		
		//Karte hinzufügen
		map = new google.maps.Map(document.getElementById(element), myOptions);
		
		firstGoogleMaps = false;
		
		newMarker();
	}
}

/**
 * Sucht die Koordinaten des jeweiligen Orts
 */
function sucheKoordinaten(callback){
	//Google-Maps-Klasse zum suchen von Längen- und Breitengrade wird erstellt.
	var geocoder = new google.maps.Geocoder();
	
	geocoder.geocode({'address':ort}, function(data, status){
		//Mindestens ein Datensatz muss vorhanden sein
		if(status == google.maps.GeocoderStatus.OK){
			//Daten müssen gesetzt sein
			if(data && data.length > 0 && data[0].geometry && data[0].geometry.location){
				latlng = data[0].geometry.location;
				
				if(firstGoogleMaps)		zeigeMapAn();
				else{
					if(callback)		callback();
				}
			}
			else if(map != null)	deleteAllOverlays();
		}
		else if(map != null)	deleteAllOverlays();
	});
}

function newMarker(html, locationMaps, title){
	if(html || locationMaps || title)
		setMarkerInformation(html, locationMaps, title);
	
	//Wenn die Map schon initialisiert ist
	if(map != null){
		//Koordinaten suche und in Callback die Overlays hinzufügen
		sucheKoordinaten(function(){
			//Der Change wird hier wieder zum ersten mal ausgeführt
			firstChange = true;
			
			//Erst alle anderen Marker löschen
			deleteAllOverlays();
			
			//Position der Karte ändern
			map.setCenter(latlng);
			map.setZoom(zoom);
			
			//Marker erzeugen...
			var marker = new google.maps.Marker({
			      position: latlng,
			      title: markerTitle
			  });
			
			//Anzeigefenster bei Klick auf Marker
			var infowindow = new google.maps.InfoWindow({
				//markerText
			    content: (markerTextElement != null ? (markerTextTemplate.replace(/{DESCRIPTION}/g, $(markerTextElement).html())) : 
			    										(markerTextTemplate.replace(/{DESCRIPTION}/g, markerText)))
			});
			google.maps.event.addListener(infowindow, 'domready',function(){
				
				$('.googleMapsContent').parent().removeClass('overflowHidden').addClass('overflowHidden');
			});
			//Event zum Marker hinzufügen
			google.maps.event.addListener(marker, 'click', function() {
				infowindow.close();
				infowindow.open(map,marker);
			});
			marker.setMap(map);
			
			//Marker zum Array hinzufügen
			markers.push(marker);
			infowindow.open(map,marker);
		});
	}
}

/**
 * Alle Markers löschen und Array zurücksetzen.
 */
function deleteAllOverlays(){
	if(markers && markers.length > 0){
		for(var i in markers){
			markers[i].setMap(null);
		}
		delete(markers);
		markers = new Array();
	}
}
