function showhide(id)
{
	var e = $('detail_'+id);
	var visi = (e.style.display == 'block') ? 'none' : 'block';
	e.style.display = visi;
}

function checkVerzicht() {
	var e = $('a_newsletter');
	if(e.checked) {
		$('detail_verzicht').style.display = 'block';
	} else {
		$('detail_verzicht').style.display = 'none';
	}
}


var msgWindow;
function fenster(uri, width, height)
{
	if(msgWindow)
	{
		msgWindow.close();
	}
	msgWindow = window.open(uri,"popup","toolbar=no,width=" + width + ",height=" + height + ",directories=no,status=no,scrollbars=no,resize=yes,menubar=no")
}

var activeTopNav = '';
function showSubnav(ref)
{
	hideAllSubnav();

	if(document.getElementById('subnav_'+ref))
	{
		document.getElementById('nav_'+ref).className='navact';
		document.getElementById('subnav_'+ref).style.display = 'block';
	}
}

function hideSubnav(e, element, ref)
{
	var ziel=e.relatedTarget?e.relatedTarget:e.toElement;
	var kinder=element.getElementsByTagName('*');
	for(var i=0;i<kinder.length;i++) { if(kinder[i]==ziel||element==ziel) { return; } }

	if(activeTopNav != ref)
	{
		document.getElementById('nav_'+ref).className='nav';
	}
	document.getElementById('subnav_'+ref).style.display = 'none';
}

function hideAllSubnav()
{
	var eCount = document.getElementsByTagName('div').length;
	for(i=0; i<eCount; i++)
	{
		if(document.getElementsByTagName('div')[i].className == 'subnav')
		{
			document.getElementsByTagName('div')[i].style.display = 'none';
		}
	}
	var eCount = document.getElementsByTagName('a').length;
	for(i=0; i<eCount; i++)
	{
		if(document.getElementsByTagName('a')[i].className == 'navact' && 'nav_'+activeTopNav != document.getElementsByTagName('a')[i].id)
		{
			document.getElementsByTagName('a')[i].className='nav';
		}
	}
}

var marker; var point;
var map;
var geocoder;
function initGoogleMap() {
	document.getElementById('map').style.display = 'block';
	document.getElementById('map_controls').style.display = 'block';
	document.getElementById('map_laden').style.display = 'none';

	if($F('t_map_lat') != '' && $F('t_map_lng') != '') {
		point = new google.maps.LatLng($F('t_map_lat'), $F('t_map_lng'));
	} else {
		// default: Ensdorf
		point = new google.maps.LatLng(49.34086701032645, 11.936774253845215);
	}

	// Initialisierung
	var mapOptions = {
	  zoom: 15,
	  center: point,
	  mapTypeId: google.maps.MapTypeId.ROADMAP
	};
	map = new google.maps.Map(document.getElementById('map'), mapOptions);

	marker = new google.maps.Marker({
		position: point,
		map: map,
		title: 'dieser Pin ist verschiebbar',
		draggable:true
	});

	google.maps.event.addListener(marker, 'dragend', function() {
		saveLatLng(marker.getPosition());
	});


	// Vorbelegt oder Suchen anhand der Adressdaten
	if($F('t_map_lat') != '' && $F('t_map_lng') != '') {

		// Marker wurde schon gesetzt

	} else {

		geocoder = new google.maps.Geocoder();
		geocoder.geocode({address: $F('t_plz') + ' ' + $F('t_ort')},
			function(results, status) {
				if(status == google.maps.GeocoderStatus.OK) {
					map.setCenter(results[0].geometry.location);
					marker.setPosition(results[0].geometry.location);
				}
			}
		);

	}
}

// setzt den Marker in die Mitte der aktuelle Karte
function setzeGoogleMarker() {
	marker.setPosition(map.getCenter());
	saveLatLng(marker.getPosition());
}

function entferneGoogleMarker() {
	google.maps.event.clearListeners(marker, 'dragend');

	document.getElementById('map').style.display = 'none'; document.getElementById('map').innerHTML = '';
	document.getElementById('map_controls').style.display = 'none';
	document.getElementById('map_laden').style.display = 'inline';
	document.getElementById('t_map_lat').value = '';
	document.getElementById('t_map_lng').value = '';
}

function saveLatLng(str) {
	document.getElementById('t_map_lat').value = str.lat();
	document.getElementById('t_map_lng').value = str.lng();
}

function GoogleMapHilfe() {
	alert("Die Markierung kann mit der Maus frei verschoben werden. Sofern die Zoomstufe verändert wird oder man sonst wie die Markierung 'aus den Augen verliert', kann mit dem linken Reiter über der Karte die Markierung in die Mitte des aktuellen Kartenausschnitts bewegt werden.");
}

// umgeschrieben auf API-V3
function GoogleMapRO(ref, lat, lng) {
	document.getElementById('maplink_'+ref).style.display = 'none';
	document.getElementById('map_'+ref).style.display = 'block';

	var point = new google.maps.LatLng(lat,lng);
	var mapOptions = {
	  zoom: 15,
	  center: point,
	  mapTypeId: google.maps.MapTypeId.ROADMAP
	};

	map = new google.maps.Map(document.getElementById('map_'+ref), mapOptions);
	marker = new google.maps.Marker({
		position: point,
		map: map,
		title: 'hier findet die Veranstaltung statt'
	});
	// FIXME/ TODO: Routenplaner
}

/* Autovervollständigung für Veranstaltungen */
var acElemente = new Object;
var acFeldName = '';
var acMode = '';
function addAcElement(li)
{
	if(document.getElementById(acFeldName)) { document.getElementById(acFeldName).value = ''; }
	acElemente[li.firstChild.innerHTML] = li.lastChild.innerHTML;
	showAcElemente();
}

function delAcElement(id)
{
	acElemente[id] = '';
	showAcElemente();
}

function showAcElemente()
{
	var out = '';
	for(var i in acElemente)
	{
		if(acElemente[i] != '')
		{
			out += '<li><label onclick="delAcElement(' + i + ');"><input type="checkbox" name="ARRAY_' + acMode + '_' + i + '" value="' + i + '" checked="checked" style="float: left;"> <span style="display: block; float: left;">' + acElemente[i] + '</span></label><br style="clear: both;"></li>' + "\n";
		}
	}

	if(out != '')
	{
		document.getElementById('autocomplete_list').innerHTML = '<ul>' + out + '</ul>';
	}
	else
	{
		document.getElementById('autocomplete_list').innerHTML = '';
	}
}

function acSchluessel(element, entry)
{
	var out = '';
	for(var i in acElemente)
	{
		if(acElemente[i] != '')
		{
			out += i + ',';
		}
	}

	return entry+'&ausschluss='+out;
}

function initAutovervollstaendigung(feldName, mode)
{
	acFeldName = feldName;
	acMode = mode;
	new Ajax.Autocompleter(feldName, "autocomplete_choices", "/ajax/mode/"+mode+"/",
		{
			minChars: 1,
			method:'post',
			updateElement:addAcElement,
			callback:acSchluessel
		}
	);
}



// Veranstaltungs-Übersichts-Google-Map (beta)
var veranstaltungen;
var veranstaltungenAltZoomPos = { zoom:5 };
function loadOverviewGMap() {

	zoomPos = {
		zoom: 5,
		lat: 50.5,
		lng: 11.936774253845215
	};
	if(veranstaltungenAltZoomPos.zoom != zoomPos.zoom) {
		zoomPos = veranstaltungenAltZoomPos;
	}

	var mapVst = new google.maps.Map(document.getElementById('veranstaltungen'), {
		zoom: zoomPos.zoom,
		minZoom: 5,
		maxZoom: 9,
		center: new google.maps.LatLng(zoomPos.lat, zoomPos.lng),
		mapTypeId: google.maps.MapTypeId.TERRAIN,
		disableDefaultUI: true,
		zoomControl: true
	});

	// Spiderfy
	var omsOptions = {keepSpiderfied: true};
	var omsVst = new OverlappingMarkerSpiderfier(mapVst, omsOptions);
	var infoWindowVst = new google.maps.InfoWindow({maxWidth: 180}); // kleiner als 200 geht es eh nicht...
	omsVst.addListener('click', function(marker) {
		infoWindowVst.setContent(marker.desc);
		infoWindowVst.open(mapVst, marker);
	});
	omsVst.addListener('spiderfy', function(markers) {
		infoWindowVst.close();
	});
	omsVst.addListener('unspiderfy', function(markers) {
		infoWindowVst.close();
	});

	// die Marker
	var markers = [];
	for(var i = 0; i < 300; i++) {
		if(veranstaltungen[i]) {
			var latLng = new google.maps.LatLng(veranstaltungen[i].t_map_generated_lat, veranstaltungen[i].t_map_generated_lng);
			var marker = new google.maps.Marker({
				icon: '/pix/map_marker_music.png',
				position: latLng,
				title: veranstaltungen[i].t_titel + ', ' + veranstaltungen[i].vonbis,
				desc: '<b>' + veranstaltungen[i].t_titel + '</b><br/>' + veranstaltungen[i].vonbis + '<br/>' +
						'<a href="' + veranstaltungen[i].link + '">Details</a>'
			});
			markers.push(marker);
			omsVst.addMarker(marker);
		}
	}

	// Marker-Clusterer
	var mcOptions = {gridSize: 30, maxZoom: 7};
	var markerCluster = new MarkerClusterer(mapVst, markers, mcOptions);
}
