// Google Maps *****************************************

var Standorte = new Array();
var Markers = new Array();
var geocoder;
var map;
var bounds = new google.maps.LatLngBounds();
			
var mcOptions = {gridSize: 50, maxZoom: 15, zoomOnClick: false};						

var infowindow = null;
var clusterInfowindow = null;


jQuery(document).ready(function(){
	if(jQuery("#accordion_Ortsliste").length > 0) {	
	jQuery('#accordion_Ortsliste ul li.last').each(function(index) {
		Standorte[index] = new Object();
		Standorte[index][0] = jQuery(this).find("a").attr("title");
		Standorte[index][1] = jQuery(this).find("a").attr("href");
		Standorte[index][2] = jQuery(this).find(".lat").html();
		Standorte[index][3] = jQuery(this).find(".lng").html();
		Standorte[index][4] = jQuery(this).find(".detail").html();
		Standorte[index][5] = index;		
	});
	initialize();
	//codeAddress();
	jQuery(".centermap").click(function() {
		fitMaptoMarker(jQuery(this).parent().find(".lat").html(),jQuery(this).parent().find(".lng").html());
		return false;
	});	
		
	}	
	
});	

function initialize() {
	geocoder = new google.maps.Geocoder();
	var latlng = new google.maps.LatLng(53.7967533, 12.1729877);
	var myOptions = {
	  zoom: 7,
	  center: latlng,
	  mapTypeId: google.maps.MapTypeId.ROADMAP,
	  mapTypeControl: true,
	  streetViewControl: false,
      	  mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DEFAULT}
	}
	map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);		
	setMarkers(map, Standorte)		
	
	google.maps.event.addListener(map, 'zoom_changed', function() {
		if(clusterInfowindow!=null)clusterInfowindow.close();
	});		
	
}

function setMarkers(map, locations) {
//  var shadow = new google.maps.MarkerImage('/_conf/system/images/mapsmarker_shadow.png',
  /*var shadow = new google.maps.MarkerImage('http://www.agentur-mvweb.de/lab/html/diak/_conf/system/images/mapsmarker_shadow.png',
      new google.maps.Size(40, 28),
      new google.maps.Point(0,0),
      new google.maps.Point(0, 28));*/
  var shape = {
      coord: [1, 1, 1, 20, 28, 20, 28 , 1],
      type: 'poly'
  };
  for (var i = 0; i < locations.length; i++) {
		//
		(function() {
		//Ort
		var standort = locations[i];
		// Geo
		var myLatLng = new google.maps.LatLng(standort[2], standort[3]);
		// Marker Symbol
//		var image = new google.maps.MarkerImage('/_conf/system/getMarker.png?mT='+ (i+1),
		var image = new google.maps.MarkerImage('/_conf/system/js/mapsmarker.png',
			new google.maps.Size(40, 28),
			new google.maps.Point(0, 0),
			new google.maps.Point(0, 28));
		// Marker
		var marker = new google.maps.Marker({
			position: myLatLng,
			map: map,
			//shadow: shadow,
			icon: image,
			shape: shape,
			title: standort[0],
			zIndex: standort[5]
		});

		// Infowindow
		var contentString = '<strong>'+standort[0]+'</strong><br/>'+standort[4];
		if(standort[1]!="")contentString+='<br/><a target="_top" href="'+standort[1]+'">weitere Informationen</a>';
		var thisInfowindow = new google.maps.InfoWindow({
			content: contentString
		});			

		google.maps.event.addListener(marker, 'click', function() { 	
			if(infowindow!=null)infowindow.close();
			if(clusterInfowindow!=null)clusterInfowindow.close();
			infowindow = thisInfowindow;
			infowindow.open(map,marker);
		});
			
		//Ausschnitt
		bounds.extend(myLatLng);
		map.fitBounds(bounds);
		//
		Markers.push(marker);
		})();
		//
			
  }   
  var markerCluster = new MarkerClusterer(map, Markers, mcOptions);
  
  // MarkerClusterer-Clickevent! 
	google.maps.event.addListener(markerCluster, 'clusterclick',function(cluster) {
		var clickedMarkers = cluster.getMarkers();
		var outstring = "<strong>Hier finden Sie:</strong><br/>";

		for(var c=0;c<clickedMarkers.length;c++){
			var markerUrl = "";
			for (var s = 0; s < Standorte.length; s++) {
				if(Standorte[s][0]==clickedMarkers[c].getTitle()){
					markerUrl=Standorte[s][1];
					break;
				}
			}
			outstring+="<br/><a href='"+markerUrl+"' title='"+clickedMarkers[c].getTitle()+"'>"+clickedMarkers[c].getTitle()+"</a>";
		}
		var thisClusterInfowindow = new google.maps.InfoWindow({
			content: outstring
		});
		thisClusterInfowindow.setPosition(cluster.getCenter());
				
		if(clusterInfowindow!=null)clusterInfowindow.close();
		if(infowindow!=null)infowindow.close();
		clusterInfowindow = thisClusterInfowindow;		
		
		clusterInfowindow.open(map);
	});
		  
}


function fitMaptoMarker(thisLat,thisLng) {
	map.setCenter(new google.maps.LatLng(thisLat,thisLng));
	//map.setCenter(new GLatLng(thisLat, thisLng), 15);
	map.setZoom(12);
}
