var map; 
var ajaxPage = "index.php?id=70";
var termine_page = "index.php?id=68";

function createMarker(icon, obj) {
	var point = new GLatLng(obj.lat, obj.lon);
	var marker = new GMarker(point, icon);
	GEvent.addListener(marker, "click", function() {
//		marker.openInfoWindowHtml("<p class='gmap'><strong>" + obj.loc + "</strong><br />" + obj.name + "</p><p class='gmap'><img src='fileadmin/graphics/vbg_termine.gif' /><a href='###LINK_TO_TERMINE###&tx_konotermine_pi1[veranstaltungsorte_id]=" + obj.id + "' >Termine anzeigen</a></p>", {
//			});
//		 $("card_results").show();
//         new Draggable('card_results', {handle: 'dnd_handle'});
		moveto(obj);
		showDetailsForOrt(obj.id);
	});
	
	
	return marker;
}


function moveto(obj) {
	var lon = obj.lon -  (10 - map.getZoom() * 1.15); 
	map.panTo(new GLatLng(obj.lat, lon));
//	map.openInfoWindowHtml(new GLatLng(obj.lat, obj.lon), "<p class='gmap'><strong>" + obj.name + "</strong><br />" + obj.loc + "</p><p class='gmap'><img src='fileadmin/graphics/vbg_termine.gif' />" +
//			"<a href='" + termine_page + "&tx_konotermine_pi1[veranstaltungsorte_id]=" + obj.id + "'>Termine anzeigen</a></p>",new GPoint(5, 1));
}


function hideEventWarning() {
	$('load_message').setStyle({visibility:'hidden'});
}


function showEventWarning() {
	$('load_message').setStyle({visibility:'visible'});
}

function searchLatLon(lon, lat) {
	console.info(lat, lon);
	$("card").appear();
    new Ajax.Updater('card_results', ajaxPage,
    {parameters:"tx_konotermine_pi1[search]=1&tx_konotermine_pi1[lat]=" + lat + "&tx_konotermine_pi1[lon]=" + lon,
    evalScripts:true,
    onComplete: function(a) {
    	window.card_result_list = a.responseText; // Hack, um sich das Ergebnis zu merken
        hideEventWarning(); 
        $("card_results").show();
       }
    });
    showEventWarning();
}

function setGmap(myplace, result, zoom_factor) {
	
	map = new GMap2(document.getElementById("map"));
	
	GEvent.addListener(map, "singlerightclick", function(point, src,overlay) {
//		console.info(point, src,overlay);
		var latlon = map.fromContainerPixelToLatLng(point);
		map.openInfoWindowHtml(latlon, "<p class='gmap'>Trainingsorte in der Nähe suchen</p><p><a href=\"javascript:;\" onclick='searchLatLon("+ latlon.x+", "+latlon.y+");'>Suchen</a></p>");
	});
	
//	GEvent.addListener(map,"load", function() {   
//	});
	
	var topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10,10));
	map.addControl(new GSmallMapControl(), topRight);
	new GKeyboardHandler(map);
	
	
	map.enableDoubleClickZoom();
    map.enableContinuousZoom();
    map.enableScrollWheelZoom();
		// simple drag zoom
	map.enableKeyDragZoom(
		{	key: "shift", 
			boxStyle: {border: "thick dashed black", backgroundColor: "transparent", opacity: 1},
			paneStyle: { backgroundColor: "gray", opacity: 0.1 }
		}
	);
	 // geht leider nicht: map.addControl(new ContextMenuControl());

	
//	var center_lon = result.length <= 5 ? myplace.lon - 0.5 : myplace.lon -3;
	var center_lon =  myplace.lon -  (10 - zoom_factor * 1.15); 
	
    map.setCenter(new GLatLng(myplace.lat, center_lon), zoom_factor);

	var icon = new GIcon();
	icon.image = "fileadmin/graphics/vbg_ort.png";
	icon.shadow = "fileadmin/graphics/vbg_shadow.png";
	icon.iconSize = new GSize(15, 18);
	icon.shadowSize = new GSize(17, 15);
	icon.iconAnchor = new GPoint(10, 5);
	icon.infoWindowAnchor = new GPoint(10, 5);

	var home = new GIcon();
	home.image = "fileadmin/graphics/vbg_home.png";
	home.shadow = "fileadmin/graphics/vbg_home_shadow.png";
	home.iconSize = new GSize(28, 30);
	home.shadowSize = new GSize(35, 30);
	home.iconAnchor = new GPoint(6, 20);
	home.infoWindowAnchor = new GPoint(5, 1);

	

	result.each(function(obj) {
		map.addOverlay(createMarker(icon, obj));
	})

    // "Home"-Marker
	if(result.length <= 5) {
		map.addOverlay(new GMarker(new GLatLng(myplace.lat, myplace.lon), home));
	}
}


function  check_plz() {
	var value = $F('tx_konotermine_pi1_zip');
	if(value) {
		if(isNaN(value)) {
			alert('Die PLZ muss eine fünfstellige Zahl sein.');
			return false;
		} else {
			if(new String(value).length != 5) {
				alert("Die PLZ muss aus genau fünf Zahlen bestehen.");
				return false;
			}
		}
	}
	// alles in Ordnung, nun die Map ausblenden und Meldung zeigen
	if($('gmap')) {
		$('gmap').hide();
		$('mapinfo').hide();
		$('right').hide();
		$('load_message_map').show();
	}
	return true;
}


function showDetailsForOrt(id) {
	
	$("card_results").update("");  
	$('map').setOpacity(0.4);
	
	 new Ajax.Updater('card_results', 
			 ajaxPage + "&tx_konotermine_pi1[details]=1",  // 'typo3conf/ext/kono_termine/pi1/detailsInfo.php',
    {
         parameters:"&tx_konotermine_pi1[id]=" + id, 
         evalScripts:true,
         onComplete: function() {
			 $("card_results").show();
		     new Draggable('card_results', {handle: 'dnd_handle'});
	 	}
	 }
   ) ;
}

function close_card_result(backtolist) {
	if(backtolist) {
		$('card_results').update(window.card_result_list);
	} else {
		$('card_results').hide();
	}  
	$('map').setOpacity(1);
	
}


function check_default_card() {
	if(map == null) {
		$("map").appear();
		new Ajax.Updater('card_results', ajaxPage,
        {parameters:"tx_konotermine_pi1[search]=1&tx_konotermine_pi1[zip]=all",
        evalScripts:true,
        onComplete:hideEventWarning
        });
		showEventWarning();
	}
}

document.observe("dom:loaded", function() {

	if($('plz_search')) {
		// Sucheformular ist auf dieser Seite
		$('plz_search').observe("submit",  function(event) {  
			$('map').setOpacity(1);
			event.stop();
			var plz = $F('tx_konotermine_pi1_zip');
			if(plz == '') {
				plz = 'all';
			}
			$("card").appear();
	        new Ajax.Updater('card_results', ajaxPage,
	        {parameters:"tx_konotermine_pi1[search]=1&tx_konotermine_pi1[zip]=" + plz,
	        evalScripts:true,
	        onComplete: function(a) {
	        	window.card_result_list = a.responseText; // Hack, um sich das Ergebnis zu merken
	            hideEventWarning(); 
	            if(plz!= 'all') {
	            	$("card_results").show();
	            }
//	            new Draggable('card_results', {handle: 'dnd_handle'});
	           }
	        });
	        showEventWarning();
		});
		
        if($('search_card'))
            $('search_card').observe("click", function(event) {
                event.stop();
                if(this.hasClassName("active")) {
                    // nichts tun
                    return
                }
                
                this.toggleClassName("active");
                $('search_zip').toggleClassName("active");
                
                check_default_card();
                $('suche').hide();
                $('card').show();
                $('card').setStyle({height: '555px'});
                $('card_results').hide();
            });


        if($('search_zip')) 
            $('search_zip').observe("click", function(event) {
                event.stop();
                
                if(this.hasClassName("active")) {
                    // nichts tun
                    return
                }
                
                this.toggleClassName("active");
                $('search_card').toggleClassName("active");
                
                check_default_card();
                $('suche').show();
                $('card').show();
                $('card').setStyle({height: '353px'});
                $('card_results').hide();
            });
		
	} // end if
});
	
