/*
 * Funktion zeigt eine Karte für die Anzeige eines einzelnen
 * Markers. Die übergebenen Koordinaten werden auf dieser Karte
 * mit einem normalen Marker dargestellt. 
 * 
 * Zoom : 15; Kleine Kontrollfunktionen links; hybride anzeige;
 */
function showMapCoord(myLon, myLat) {
		var myGeographicCoordinates = new GLatLng(myLon, myLat)
		var map = new GMap2(document.getElementById("map"));
        map.setCenter(myGeographicCoordinates, 15);
        
        var marker = new GMarker(myGeographicCoordinates);
		map.addOverlay(marker);
				              
        map.addControl( new GLargeMapControl());
        map.addControl( new GMapTypeControl());
		map.setMapType(G_HYBRID_MAP);
		map.enableScrollWheelZoom();
}

/*
 * Funktion zeigt eine Karte auf der ganz Deutschland zu sehen ist.
 * Marker werden noch nicht angezeigt. Diese werden dann später 
 * über die Karte drübergelegt. Zoom und Koordinaten sind so 
 * angepasst, dass Deutschland einmal komplett draufpasst.
 */
function showMapGermany() {
		var myGeographicCoordinates = new GLatLng(51.179343,9.59707);
		var map = new GMap2(document.getElementById("map"));
        map.setCenter(myGeographicCoordinates, 6);
        
        map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.enableScrollWheelZoom();
}

/*
 * Erstellt eine Karte für die Anzeige aller Objekte eines 
 * Amtsgerichts. Die Karte wird entsprechend der übergebenen 
 * Koordinaten ausgerichtet und der Zoomfaktor angepasst.
 * Die einzelnen Immobilienmarker werden später drübergelegt.
 */
function showMapAG(lon, lat) {
	var myGeographicCoordinates = new GLatLng(lat,lon);
	var map = new GMap2(document.getElementById("map"));
    map.setCenter(myGeographicCoordinates, 8);
    
    map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.enableScrollWheelZoom();
}

/*
 * Globale Variable für die Anzeige mehrerer Marker
 */
var gmarkers = [];

/*
 * Diese Funktion ist zum Anzeigen unterschiedlicher Marker zustündig.
 * übergeben wird ein Array (coord) mir folgendem Aufbau:
 * coord[0] = lat; 
 * coord[1] = lon;
 * coord[2] = 1 ==> "Aktiver Marker" Bedeutet normaler orangener Marker inklusive Mouseover Funktionalität
 * coord[2] = 0 ==> "INaktiver Marker" Kleiner grauer Marker ohne
 * coord[2] = 2 ==> "Haus" 
 * coord[2] = 3 ==> "Grundstück"
 * coord[3] = String ==> Linkbezeichner
 * coord[4] = String ==> Text der Infoblase beim onklick oder mouseover
 * 
 * Zusätzlich wird das HTML für eine Seitenleiste erstellt. In der 
 * Links zu den angezeigten "normalen Markern" angezeigt werden. 
 */
function setMarker(coord, lat, lon, zoom) {
	
	gmarkers.length = 0;
	var myGeographicCoordinates = new GLatLng(lat,lon);
	var map = new GMap2(document.getElementById("map"));
    map.setCenter(myGeographicCoordinates, zoom);
    
    map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.enableScrollWheelZoom();
	
	//var map = new GMap2(document.getElementById('map'));
		
	// Erstellt das Markierungssymbol "tiny"
	var inactiveIcon = new GIcon();
	inactiveIcon.image = "http://labs.google.com/ridefinder/images/mm_20_gray.png";
	inactiveIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
	inactiveIcon.iconSize = new GSize(12, 20);
	inactiveIcon.shadowSize = new GSize(22, 20);
	inactiveIcon.iconAnchor = new GPoint(6, 20);
	inactiveIcon.infoWindowAnchor = new GPoint(5, 1);
	
	// Erstellt das Markierungssymbol "normal"
	var activeIcon = new GIcon();
	activeIcon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
	activeIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
	activeIcon.iconSize = new GSize(24, 40);
	activeIcon.shadowSize = new GSize(22, 20);
	activeIcon.iconAnchor = new GPoint(6, 20);
	activeIcon.infoWindowAnchor = new GPoint(5, 1);
	
	//Erstellt das Markierungssymbol "Haus"
	var immoIcon = new GIcon();
	immoIcon.image = "http://static1.immobilienpool.de/html-prod/common/images/google/mark_haus1.png";
	//immoIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
	immoIcon.iconSize = new GSize(15, 15);
	//immoIcon.shadowSize = new GSize(22, 20);
	immoIcon.iconAnchor = new GPoint(6, 20);
	immoIcon.infoWindowAnchor = new GPoint(5, 1);
	
	//Erstellt das Markierungssymbol "Grundstück"
	var grundIcon = new GIcon();
	grundIcon.image = "http://static1.immobilienpool.de/html-prod/common/images/google/mark_grund1.png";
	grundIcon.iconSize = new GSize(15, 15);
	grundIcon.iconAnchor = new GPoint(6, 20);
	grundIcon.infoWindowAnchor = new GPoint(5, 1);
	
	// Richtet das GMarkerOptions-Objektliteral ein
	//Zuordnung option -> icon
	markerOptionsActive = { icon:activeIcon };
	markerOptionsInactive = { icon:inactiveIcon };
	markerOptionsImmo = { icon:immoIcon };
	markerOptionsGrund = { icon:grundIcon };

    var n=0;
    var side_bar_html = "";

	//document.write(coord.length);
	//map.openInfoWindow(map.getCenter(), document.createTextNode("Hallo Welt"));
	for (var i = 0; i < coord.length; i++) {
		var myGeographicCoordinates = new GLatLng(coord[i][0], coord[i][1]);
		
		if (coord[i][2] == 1) {
			marker = new GMarker(myGeographicCoordinates);
			marker.url = 'http://versteigerungspool.de/amtsgericht/ag.' + coord[i][5];
	 	} else if (coord[i][2] == 2) {
			marker = new GMarker(myGeographicCoordinates, markerOptionsImmo);
			marker.url = 'http://versteigerungspool.de/zwangsversteigerung/zv.' + coord[i][5];
	 	} else if (coord[i][2] == 3) {
			marker = new GMarker(myGeographicCoordinates, markerOptionsGrund);
			marker.url = 'http://versteigerungspool.de/zwangsversteigerung/zv.' + coord[i][5];
	 	} else {
		    marker = new GMarker(myGeographicCoordinates, markerOptionsInactive);
	  	}
		marker.x_Name = coord[i][3];
		
		gmarkers.push(marker);
		if(coord[i][0] == null) 
		{
			side_bar_html += '<span style="font-size:10px">'+coord[i][4] + ' (nicht über Kartendienst gefunden)</span><br/>';
		} else 
		{	
			if (coord[i][2] > 0) {
				side_bar_html += '<a href="javascript:GEvent.trigger(gmarkers['+i+'], \'mouseover\')"><strong>' + coord[i][4] + '</strong><\/a><br/>';
			} else {
				side_bar_html += '<a href="javascript:GEvent.trigger(gmarkers['+i+'], \'mouseover\')">' + coord[i][4] + '<\/a><br/>';
			}
		}
		
        
        GEvent.addListener(marker, 'click', function() 
        {
         	this.openInfoWindowHtml(this.x_Name,{maxWidth:200});
         	if(opener != null) {
         		opener.location.href = this.url;
         		opener.focus();
			} else {
         		window.location.href = this.url;
			}
        });
        GEvent.addListener(marker, 'mouseover', function() {
       	  	  this.openInfoWindowHtml(this.x_Name,{maxWidth:200});
        });
          	  
		map.addOverlay(marker);
	}
	
		//map.addControl(new GLargeMapControl());
		//map.addControl(new GMapTypeControl());
		//map.enableScrollWheelZoom();
		document.getElementById("side_bar").innerHTML = side_bar_html;
}

/*
 * Funtion zum Abrufen der Ag-Koordinaten über die
 * GoogleMapsKarteAgs-Action. 
 * 
 * Setzt die Marker auf die schon dargestellte Karte
 * übergabeparameter:
 *
 * limit: Maximale Anzahl der angezeigten Marker - 0 alle ags
 * active: 1 dann werden nur aktive Amtsgerichte angezeigt - 0 dann alle
 * 
*/
function getMarkerAgs(limit, active) {
	$('load').style.display = 'block';
	new Ajax.Request('json/karte-amtsgerichte',
        {
            method: 'get',
            parameters:'marker=true&limit=' + limit + '&active=' + active,
            onSuccess: function(transport){
               var json = transport.responseText.evalJSON(true);
			   setMarker(json, 51.179343, 9.59707, 6);
            },
		    onFailure : function(error) {
	            document.write(error);
		    },
            onComplete: function(transport){
            	$('load').style.display = 'none';
                document.fire('ajax:complete');
            },
            asynchronous:false
        }
     );
}

/*
 * Funktion zum abrufen der Immobilienkoordinaten der Onjekte
 * eines Ags.
 * 
 * Setzt die Marker auf die schon dargestellte Karte
 * übergabeparameter:
 * ag: Id des anzuzeigenden Ags
*/
function getMarkerImmos(agId, agLat, agLon) {
	$('load').style.display = 'block';
	new Ajax.Request('json/karte-amtsgericht',
        {
            method: 'get',
            parameters:'marker=true&id=' + agId,
            onSuccess: function(transport){
               var json = transport.responseText.evalJSON(true);
			   setMarker(json, agLat, agLon, 10);
            },
		    onFailure : function(error) {
	            document.write(error);
		    },
            onComplete: function(transport){
            	$('load').style.display = 'none';
                document.fire('ajax:complete');
            },
            asynchronous:false
        }
     );
}

/*
 * GEvent fp die anzeige der Infoblase
 */
function infoW(pointX,first,second) {
           var marker = new GMarker(pointX);
           map.addOverlay(marker);
           GEvent.addListener(marker, "click", function() {
           marker.openInfoWindowHtml(first+"-"+second);
          });
 } 
