// (c) 2010 by Roger Sennert
// roger.sennert@bluestarsoftware.de
// http://www.bluestarsoftware.de

	var myMarker		= null;
	var myMarkerKm	= -1;

	var styles = [{
	  url: 'http://www.alphabetisierung.de/typo3conf/ext/alfa_kurse/pi2/gfx/m1.png',
	  width: 53, height: 52, opt_anchor: [0, 0],
	  opt_textColor: '#fff'
	},
	{
	  url: 'http://www.alphabetisierung.de/typo3conf/ext/alfa_kurse/pi2/gfx/m1.png',
	  width: 53, height: 52, opt_anchor: [0, 0],
	  opt_textColor: '#fff'
	},
	{
	  url: 'http://www.alphabetisierung.de/typo3conf/ext/alfa_kurse/pi2/gfx/m1.png',
	  width: 53, height: 52, opt_anchor: [0, 0],
		opt_textColor: '#fff'
	}];


	$(document).ready(function(){
		if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById("map_canvas"));
		  map.setCenter(new GLatLng(51.5,10.3), 6);
		  map.setUIToDefault();
		  

			// Create our own marker icons
			var iconBase = new GIcon();
			iconBase.iconSize = new GSize(32, 37);
			iconBase.shadowSize = new GSize(45, 37);
			iconBase.iconAnchor = new GPoint(16, 35);
			iconBase.infoWindowAnchor = new GPoint(16, 1);
			
			var icon1 = new GIcon( iconBase, "http://www.alphabetisierung.de/typo3conf/ext/alfa_kurse/pi2/gfx/Picto_orange.png");
			var icon2 = new GIcon( iconBase, "http://www.alphabetisierung.de/typo3conf/ext/alfa_kurse/pi2/gfx/Picto_grau.png");
			// var icon3 = new GIcon( iconBase, "http://www.alphabetisierung.de/typo3conf/ext/alfa_kurse/pi2/gfx/Picto_green.png");
			var icon3 = new GIcon( iconBase, "http://maps.google.com/mapfiles/ms/micons/green-dot.png");
			

			// Set up our GMarkerOptions object
			markerOptions1 = { icon:icon1 };
			markerOptions2 = { icon:icon2 };

			var batch = [];
		  for( var i in gmd )
		  {
		  	if ( gmd[i][1] ) batch.push( createMarker( i ) );
			}
			mc = new MarkerClusterer(map,batch, {maxZoom: 8, gridSize: 55, styles: styles });

			$('.kuh').keyup( function(event){
				if ( event.keyCode==13 )
					$('#cmdSearch').click();
			});		  

			$('#cmdSearch').click( function() {
				var geocoder	= new GClientGeocoder();
				var addr			= jQuery.trim( $('#plz').val()+ " " + $('#ort').val())+", Deutschland";
				
				geocoder.setBaseCountryCode("de");				
				geocoder.getLocations( addr, function(response) {
  				if (!response || response.Status.code != 200) {
    				alert("\"" + addr + "\" konnte leider nicht gefunden werden!");
  				} 
					else
					{
						if ( response.Placemark.length >=1 )
						{
							if ( myMarker !=null )
								map.removeOverlay( myMarker );
																
							var place = response.Placemark[0];
							var point = new GLatLng( place.Point.coordinates[1], place.Point.coordinates[0] );
							myMarker = new GMarker(point, {icon:icon3,zIndexProcess:function(marker,b){return 10000;}});
							map.addOverlay( myMarker );
							
							var currentZoom = map.getZoom();
							if ( currentZoom <10 )
								map.setCenter( myMarker.getLatLng(), 10 );
							else
							  map.panTo( myMarker.getLatLng() );
							// myMarker.openInfoWindowHtml( place.address );
							
							GEvent.addListener(myMarker, "click", function() {
              	map.panTo( myMarker.getLatLng() );
              	myMarker.openInfoWindowHtml( place.address );
              });              							               	
						}
						else
						{
							alert("\"" + addr + "\" ist leider nicht eindeutig! Bitte probieren Sie es mit der Postleitzahl!");
						}    				  					
  				}
				}); 
			});
		}						
	});
	
	function createMarker( idx )
	{
		var marker = null;
		
		if ( gmd[idx][3]==1 )
			marker = new GMarker(new GLatLng(gmd[idx][1],gmd[idx][2]), markerOptions1 );
		else
			marker = new GMarker(new GLatLng(gmd[idx][1],gmd[idx][2]), markerOptions2 );
			
		GEvent.addListener(marker, "click", function() {
			
			// $('#map_canvas').block({ message: '<h1>Lade Daten</h1>', css: { border: '1px solid #aaa' }, showOverlay: false }); 
      
			var me=this;			      
			var currentZoom = map.getZoom();
			if ( currentZoom <10 )
				map.setCenter( me.getLatLng(), 10 );
			else				
				map.panTo( me.getLatLng() );
			        
			$.get("index.php?type=1&dbid="+gmd[idx][0], function(data) {
				var nobj = jQuery.parseJSON( data );												
        var tabs = [];
        
        if ( myMarker!=null )
     			myMarkerKm = Math.round( myMarker.getLatLng().distanceFrom( me.getLatLng() ) / 1000 );	

        if ( nobj.kurs1angebot>0 )	tabs.push(new GInfoWindowTab( "Deutsche", fillTemplate( nobj, 1 )));
        if ( nobj.kurs2angebot>0 )	tabs.push(new GInfoWindowTab( "Migranten", fillTemplate( nobj, 2 ) ));
        if ( nobj.kurs3angebot>0 )	tabs.push(new GInfoWindowTab( "Behinderte", fillTemplate( nobj, 3 ) ));
        if ( nobj.kurs4angebot>0 )	tabs.push(new GInfoWindowTab( "Gemischt", fillTemplate( nobj, 4 )));
        tabs.push(new GInfoWindowTab( "Kontakt", fillTemplate( nobj, 0 )));
              
				me.openInfoWindowTabsHtml(tabs);
				// $('#map_canvas').unblock();
				 
      }); 
		});			    	

			
		return marker;
	}
	
	function fillTemplate( nobj, idx )
	{
		var baseDiv = '<div class="iw" style="width:450px">##</div>';
		var inner		= '<div class="i">'+nobj.instituion1;
		
		if ( nobj.instituion2 != "" )
			inner+= '<br>'+nobj.instituion2;
		inner+= "</div>";
		
		if ( idx==0 )
		{
			var tpl = '';
			tpl += '#addr#<br>';
			tpl += '#ort#<br>';
			tpl += '<br>';
			tpl += '<table cellspacing="0" border="0" class="tti">';
			tpl += '<tr><td class="ti">Telefon</td><td>#telefon#</td><tr>';
			tpl += '<tr><td class="ti">E-Mail</td><td><a href="mailto:#email#" target="_blank">#email#</a></td><tr>';
			tpl += '<tr><td class="ti">Homepage</td><td><a href="http://#www#" target="_blank">#www#</a></td><tr>';
			tpl += '</table>';

			if ( myMarker!= null )
      	tpl += '<br><span class="aent">Entfernung: ca. #km# km (Luftlinie)';

			var t_adr = nobj.anschrift1; 
			if ( nobj.anschrift2!="" )
				t_adr+= '<br>'+nobj.anschrift1;

			tpl = tpl.replace( '#addr#', t_adr );				
			tpl = tpl.replace( '#ort#', nobj.plz + " " + nobj.ort );
			tpl = tpl.replace( '#telefon#', nobj.telefon );
			tpl = tpl.replace( /#email#/g, nobj.email );
			tpl = tpl.replace( /#www#/g, nobj.homepage );
			tpl = tpl.replace( "#km#", myMarkerKm );

			inner += tpl;
		}
		else
		{			
			var tpl = '<br>';
			
			var dspMsg=true;			
			if ( nobj.kurs1angebot==1 || nobj.kurs2angebot==1 || nobj.kurs3angebot==1 || nobj.kurs4angebot==1  )
				dspMsg=false;
				
			if ( dspMsg==true )
				tpl += '<span class="in">Wird derzeit nicht angeboten! Ggf. bei entsprechender Nachfrage.</span><br><br><br>';
				
			tpl += '<span class="aname">#name#</span><br>';
			tpl += '<span class="atelefon"><img src="http://www.alphabetisierung.de/typo3conf/ext/alfa_kurse/pi2/gfx/telefon.png"> #telefon#</span><br><br><br>';
			tpl += '<span class="aemail">E-Mail: <a href="mailto:#email#" target="_blank">#email#</a></span><br>';

			if ( myMarker!= null )
      	tpl += '<br><span class="aent">Entfernung: ca. #km# km (Luftlinie)';
      	
			if ( idx==2 )
			{
				tpl += '<br><br>Integrationskurse zum Lesen und Schreiben finden Sie hier:<br>';
				tpl	+= '<a href="http://webgis.bamf.de/BAMF/control" target="_blank">http://webgis.bamf.de/BAMF/control</a>';
			}
      	

			tpl = tpl.replace( '#name#', nobj["kurs"+idx+"vorname"]+" "+nobj["kurs"+idx+"nachname"] );				
			tpl = tpl.replace( '#telefon#', nobj["kurs"+idx+"telefon"] );
			tpl = tpl.replace( /#email#/g, nobj["kurs"+idx+"email"] );
			tpl = tpl.replace( "#km#", myMarkerKm );
			tpl = tpl.replace( /<br><br>/g, '<br>' );

			inner += tpl;						
		}
		 
		return baseDiv.replace( "##", inner ) 	
	}

