// Letzte Änderung: 2010-08-02 15:19 stegoe


function triggerOrt (ort) {
	var jsonRequest=new Request.JSON({url: "/_ajax/ort.php", method: "post", onSuccess: function(ortlatlng){
		if (!(isNaN(ortlatlng.lat) || ortlatlng.lat=='')){
			// Unterscheidung ob Suche-Formulare oder Eintragen-Formulare
			if($('listenfilter')||$('schnellsuche')){
				// Id des Orts in das Hidden-Feld im Hintergrund schreiben (man sucht nach der Id, nicht nach dem Ortsstring
				var feldname=ort.element.get('id').split('_');
				$(feldname[0]).set('value',ortlatlng.id);
			}else{
				// ggf. alten marker entfernen
				if (arrPinsAE[(ort.element.get('id'))][0]) {arrPinsAE[(ort.element.get('id'))][0].remove();}
				// Marker anlegen und auf Karte setzen & in Array schreiben
				var point = new GLatLng(ortlatlng.lat,ortlatlng.lng);
				var marker = createPin(point,arrP[(ort.element.get('id'))]);
				map.panTo(point);
				arrPinsAE[(ort.element.get('id'))][0]=marker;
				// Id in hidden-feld schreiben
				$(ort.element.get('id')+'_id').set('value',ortlatlng.id);
			}
		}
	}}).post({'ort':ort.selected.inputValue});
}

function checkOrt (ort) {
	// checkOrt wird immer bei Orts-Autocompleter getriggert, aber wird nur beim Eintragen (nicht bei den Sucheformularen) benutzt
	if(!($('listenfilter')||$('schnellsuche'))){
		var jsonRequest=new Request.JSON({url: "/_ajax/ort-check.php", method:"post", encoding:"ISO-8859-1", onSuccess: function(ortlatlng){
			if (isNaN(ortlatlng.id) || ortlatlng.id<=0){
				ort.element.set('value','');
				$(ort.element.get('id')+'_id').set('value','');
				if(arrPinsAE[(ort.element.get('id'))][0]){arrPinsAE[(ort.element.get('id'))][0].remove();}
			}
		}}).post({'value':ort.element.get('value')});
	}
	return false;
}

function createPin(point,MarkerIcon,i){
	var marker=createMarker(point,MarkerIcon,i);
	map.addOverlay(marker);
	return marker;
}

function createMarker(point,MarkerIcon,i) {
	var marker=new GMarker(point,MarkerIcon);
	if(i) {
		GEvent.addListener(marker,"click",function(){
			
			// HTML des InfoWindows
			var htmlVon='';
			var htmlNach='';
			
			// Für die Linie zwischen den Punkten
			var arrPoly=new Object();
			if (jsonobj[i].von) {
				htmlVon+='<div class="iwblock">';
				for (var key in jsonobj[i].von){
					arrPoly[key]=new Array;
					arrPoly[key].push(new GLatLng(jsonobj[i].lat,jsonobj[i].lng));
					htmlVon+='<div class="iwziel"><a href="'+jsonobj[i].von[key].link+'">'+jsonobj[i].von[key].ort+' - '+jsonobj[i].ort+'</a></div>';
					createPin(new GLatLng(jsonobj[i].von[key].lat,jsonobj[i].von[key].lng),arrP.form_startort);
					if(jsonobj[i].von[key].ueber){
						htmlVon+='<div class="iwzws">über:';
						for(var k1 in jsonobj[i].von[key].ueber){
							htmlVon+=' '+jsonobj[i].von[key].ueber[k1].ort+'';
							createPin(new GLatLng(jsonobj[i].von[key].ueber[k1].lat,jsonobj[i].von[key].ueber[k1].lng),arrP.form_zwischenstopp1);
							arrPoly[key].push(new GLatLng(jsonobj[i].von[key].ueber[k1].lat,jsonobj[i].von[key].ueber[k1].lng));
						}
						htmlVon+='</div>';
					arrPoly[key].push(new GLatLng(jsonobj[i].von[key].lat,jsonobj[i].von[key].lng));
					}
					htmlVon+='</div>';
				}
			}
			
			if (jsonobj[i].nach) {
				htmlVon+='<div class="iwblock">';
				for (var key in jsonobj[i].nach) {
					arrPoly[key] = new Array;
					arrPoly[key].push(new GLatLng(jsonobj[i].lat,jsonobj[i].lng));
					htmlNach+='<div class="iwziel"><a href="'+jsonobj[i].nach[key].link+'">'+jsonobj[i].ort+' - '+jsonobj[i].nach[key].ort+'</a></div>';
					createPin(new GLatLng(jsonobj[i].nach[key].lat,jsonobj[i].nach[key].lng),arrP.form_startort);
					if (jsonobj[i].nach[key].ueber) {
						htmlNach+='<div class="iwzws">über:';
						for (var k2 in jsonobj[i].nach[key].ueber) {
							htmlNach+=' '+jsonobj[i].nach[key].ueber[k2].ort+'';
							createPin(new GLatLng(jsonobj[i].nach[key].ueber[k2].lat,jsonobj[i].nach[key].ueber[k2].lng),arrP.form_zwischenstopp1);
							arrPoly[key].push(new GLatLng(jsonobj[i].nach[key].ueber[k2].lat,jsonobj[i].nach[key].ueber[k2].lng));
						}
						htmlNach+='</div>';
					arrPoly[key].push(new GLatLng(jsonobj[i].nach[key].lat,jsonobj[i].nach[key].lng));
					}
					htmlNach+='</div>';
				}
			}
			
			var html='';
			if (htmlVon!='') {html+='<div class="iwtab">'+htmlVon+'</div>';}
			if (htmlNach!='') {html+='<div class="iwtab">'+htmlNach+'</div>';}

			// Linie einblenden
			k=0;
			for (var j1 in arrPoly) {
				switch(k) {
					case 0:var pfadcolor="#4c5c73";break;
					case 1:var pfadcolor="#ff6600";break;
					case 2:var pfadcolor="#333333";break;
					case 3:var pfadcolor="#ff0000";break;
					case 4:var pfadcolor="#4c5c73";break;
					case 5:var pfadcolor="#4c5c73";break;
					case 6:var pfadcolor="#4c5c73";break;
					case 7:var pfadcolor="#4c5c73";break;
					case 8:var pfadcolor="#4c5c73";break;
					case 9:var pfadcolor="#4c5c73";break;
					default:var pfadcolor="#4c5c73";break;
				}
				var polyline = new GPolyline(arrPoly[j1], pfadcolor, 2);
				map.addOverlay(polyline);
				k++;
			}
			
			// IW öffnen (IW vielleicht immer nur am Start?)
			marker.openInfoWindowHtml(html);
			
			// Alle Marker Ausblenden
			for (var j2 in arrPinsAEkarte) { if (i!=j2) arrPinsAEkarte[j2].setImage('/_p/_pins/marker-off.png'); }

		});
		GEvent.addListener(marker, 'infowindowclose', function(){
			// Erstmal Karte leeren
			map.clearOverlays();
			// Karte wieder aufbauen
			for (var j3 in arrPinsAEkarte) {
				map.addOverlay(arrPinsAEkarte[j3]);
				arrPinsAEkarte[j3].setImage('/_p/_pins/marker-startziel.png');
			}
		}); 
	}
	return marker;
}

function zoomIconOrt () {
	if (arrPinsAE[this.getPrevious().get('id')][0] && arrPinsAE[this.getPrevious().get('id')][0]!='') {
		map.panTo(arrPinsAE[this.getPrevious().get('id')][0].getPoint());
	}
	$(this.getPrevious().get('id')).focus();
}






function IE6Flag(){
	if(Browser.Engine.trident&&((Browser.Platform.win&&Browser.Engine.version<=4)||Browser.Platform.mac)){
		var ie6flag=new Element('div', {id: 'ie6flag'});
		ie6flag.set('html','<div class="w"><p>Sie scheinen noch den Internet Explorer 6 zu nutzen. Dies ist ein beinahe 10 Jahre alter Browser.</p><p>Um die Mitfahrzentrale Rhön richtig und vollständig betrachen und nutzen zu können sollten Sie auf einen aktuellen Webbrowser umstellen, z.B. <a href="http://www.microsoft.com/germany/windows/internet-explorer/" target="_blank">Internet Explorer 8</a> oder <a href="http://www.mozilla-europe.org/de/firefox/" target="_blank">Firefox</a>.<p></div>');
		ie6flag.inject($(document.body),'top');
	}
}


window.addEvent('domready', function () {
	
	// Upgrade-Hinweis für alte Browser
	IE6Flag();
	
	// Externe Links in neuem Fenster
	$$('a').each(function(link){
		if (link.get('rel')=='external') { link.target = "_blank"; }
	});


	// Gibt es Autocomplete-Felder?
	for (var feld in arrAutocom) {
//		new Autocompleter.Local(feld, arrAutocom[feld], {
		new Autocompleter.Request.JSON(feld, '/_ajax/ort-autocomplete.php', {
			'minLength': 1,
			'selectMode': 'type-ahead',
			'multiple': false,
			'indicatorClass': 'autocompleter-loading',
			'autoTrim': true,
			
			'onSelection': function() {triggerOrt(this);},
			'onBlur': function() {checkOrt(this);}
			

		});
	}
	
	// Gibt es Datum-/Zeitfelder?
	$$('.zeitfeld').each(function(el) {
		new TimeSpinner(el.get('id'), 
		{increment: 5, delay:400});
	});
	new DatePicker('.datumfeld',{
		'positionOffset':	{ x: 105, y: -27 },
		'format':	'd.m.Y',
		'days': ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
		'months':	['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']
	});
	
	
	// Hover für Subnavis
	$$('.subnavi').each(function(el,i) {
		el.addEvent('mouseenter', function () {
			this.getElement('ul').setStyle('display','block');
		});
		el.addEvent('mouseleave', function () {
			this.getElement('ul').setStyle('display','none');
		});
	});
	
	
	// Gibt es Mobil-Benachrichtungs-Einblend-Feld?

	if($('form_smsjanein')){
		$('formmobilausblend').set('reveal', {duration: 222, mode: 'vertical'});

		// Erstmal schauen, ob man einblenden muss
		if($('form_smsjanein').get('checked')){
			$('formmobilausblend').reveal();
		}

		$('form_smsjanein').addEvent('click',function(){
			if($('form_smsjanein').get('checked')){
				$('formmobilausblend').reveal();
				//$('formmobilausblend').setStyle('display','block');
			} else {
				$('formmobilausblend').dissolve();
				//$('formmobilausblend').setStyle('display','none');
			}
		});
	}

	
	
	// Kartenfunktionen
	if ($('gmap') || $('gmap2')) {
// Bisher nur die Karte beim Eintragen von Angeboten!!!
		map=($('gmap')?$('gmap'):$('gmap2'));
		// Blaupause für ein Fähnchen/Pins
		arrP=new Object();
		arrP.form_startort=new GIcon();
		arrP.form_startort.image='/_p/_pins/marker-start.png';
		arrP.form_startort.shadow='/_p/_pins/shadow.png';
		arrP.form_startort.iconSize = new GSize(28, 34);
		arrP.form_startort.shadowSize = new GSize(37, 34);
		arrP.form_startort.iconAnchor = new GPoint(10, 34);
		arrP.form_startort.infoWindowAnchor = new GPoint(10, 0);
		arrP.form_zielort=new GIcon(arrP.form_startort);
		arrP.form_zielort.image='/_p/_pins/marker-ziel.png';
		arrP.form_zielort.iconAnchor = new GPoint(18, 34);
		arrP.form_zielort.infoWindowAnchor = new GPoint(18, 0);
		arrP.form_zielort.shadow='/_p/_pins/shadow-ziel.png';
		arrP.form_zielort.shadowSize = new GSize(45, 34);
		arrP.form_startziel=new GIcon(arrP.form_startort);
		arrP.form_startziel.image='/_p/_pins/marker-startziel.png';
		arrP.form_startziel.iconSize = new GSize(20, 34);
		arrP.form_startziel.iconAnchor = new GPoint(10, 34);
		arrP.form_zwischenstopp1=new GIcon(arrP.form_startort);
		arrP.form_zwischenstopp1.image='/_p/_pins/marker-zws.png';
		arrP.form_zwischenstopp1.iconSize = new GSize(20, 34);
		arrP.form_zwischenstopp1.iconAnchor = new GPoint(10, 34);
		arrP.form_zwischenstopp2=new GIcon(arrP.form_zwischenstopp1);
		arrP.form_zwischenstopp3=new GIcon(arrP.form_zwischenstopp1);
		arrP.off=new GIcon(arrP.form_startort);
		arrP.off.image='/_p/_pins/marker-off.png';
		
		map = new GMap2(map);
        map.setCenter(new GLatLng(50.4460270000,9.8765370000), 9);
		map.addControl(new GSmallMapControl());
		
		// Klick auf Icon bringt Zoom
		$$('.zoomorticons').each(function(el) {
			el.addEvent('click', zoomIconOrt);
		});
		
		
		// Bei den Auflistungen, da gibt es eine
		if (typeof(jsonkarte)!='undefined' && jsonkarte!='') {
			var arrZoom=new Array;
			jsonobj=JSON.decode(jsonkarte);
			var i=0;
			for (var key in jsonobj) {
				arrPinsAEkarte[key]=createPin(new GLatLng(jsonobj[key].lat,jsonobj[key].lng),arrP.form_startziel,key);
				
				// Zum Berechnen des Kartenpositionsdurchschnitts
				if (i===0 || parseFloat(jsonobj[key].lat)>arrZoom[2]) {arrZoom[2]=parseFloat(jsonobj[key].lat);}
				if (i===0 || parseFloat(jsonobj[key].lat)<arrZoom[3]) {arrZoom[3]=parseFloat(jsonobj[key].lat);}
				if (i===0 || parseFloat(jsonobj[key].lng)>arrZoom[0]) {arrZoom[0]=parseFloat(jsonobj[key].lng);}
				if (i===0 || parseFloat(jsonobj[key].lng)<arrZoom[1]) {arrZoom[1]=parseFloat(jsonobj[key].lng);}
				i++;
			}
			dieMitte = new GLatLngBounds(new GLatLng(arrZoom[2],arrZoom[1]), new GLatLng(arrZoom[3],arrZoom[0]));
			map.setCenter(dieMitte.getCenter(), map.getBoundsZoomLevel(dieMitte));
		} else {
			// ...oder LatLng holen, wenn die Karte vorausgefüllt sein soll (bei allen anderen Seiten, (erstmal) Pins ohne weitere Funktion)
			var jsonRequest=new Request.JSON({url:"/_ajax/ort-koordinaten.php",method:"post",encoding:"ISO-8859-1",onSuccess:function(ortelatlng){
				var arrZoom=new Array;
				var arrPoly=new Array;
				var i=0;
				for (var feld in ortelatlng) {
					if (!(isNaN(ortelatlng[feld].lat) || ortelatlng[feld].lat=='')) {
						var point = new GLatLng(ortelatlng[feld].lat,ortelatlng[feld].lng);
						var marker = createPin(point,arrP[feld]);
						arrPinsAE[feld][0]=marker;
						
						switch(feld) {
							case 'form_startort': j=0;break;
							case 'form_zielort': j=4;break;
							case 'form_zwischenstopp1': j=1;break;
							case 'form_zwischenstopp2': j=2;break;
							case 'form_zwischenstopp3': j=3;break;
						}
						arrPoly[j]=marker.getLatLng();
						
						// Zum Berechnen des Kartenpositionsdurchschnitts
						if (i===0 || parseFloat(ortelatlng[feld].lat)>arrZoom[2]) {arrZoom[2]=parseFloat(ortelatlng[feld].lat);}
						if (i===0 || parseFloat(ortelatlng[feld].lat)<arrZoom[3]) {arrZoom[3]=parseFloat(ortelatlng[feld].lat);}
						if (i===0 || parseFloat(ortelatlng[feld].lng)>arrZoom[0]) {arrZoom[0]=parseFloat(ortelatlng[feld].lng);}
						if (i===0 || parseFloat(ortelatlng[feld].lng)<arrZoom[1]) {arrZoom[1]=parseFloat(ortelatlng[feld].lng);}
						i++;
					}
				}
				if (i>0) {
 					dieMitte = new GLatLngBounds(new GLatLng(arrZoom[2],arrZoom[1]), new GLatLng(arrZoom[3],arrZoom[0]));
					map.setCenter(dieMitte.getCenter(), map.getBoundsZoomLevel(dieMitte));
				}
				if ($('gmap')) {
					var polyline = new GPolyline(arrPoly,"#4c5c73",2);
					map.addOverlay(polyline);
				}
			}}).post(arrPinsAEhidden);
		}
	}
});

