// ==================================== 
// ! Anfahrt
// Yannis Krüger
// 9.05.2010   
// ==================================== 


$(document).ready(function(){
	//Variablen definieren
	var map;
    var gdir;
    var geocoder = null;
    var addressMarker;
    var duration;
    var dur;
    var tm;
    var druck;
    
//Formular anzeigen 
	$('#anfahrt_container').css('display', 'block');
    
//Click registrieren und Anfahrt starten
$('#submit').click(function(){
	init_anfahrt(ziel);
	return false;
});


//Postleitzahlen automatisch laden
$('#plz').focusout(function(){
	if(( Math.ceil(this.value)>999 && Math.ceil(this.value)<=99999 && this.value.length==5)){
		//AJAX-Adresse bauen
		var ordner = $('#plz').val().substr(0, 1);
		var datei = $('#plz').val().substr( 0, 3)+'.html';
		var script = 'files/plz/'+ordner+'/'+datei;
		
		//Script holen
		$.ajax({
		   type: "GET",
	   		url: script,
		   cache: true,
		   dataType: "script", 
		   success: function(){
		   		//einsetzen
	     		$('#ort').val(z[$('#plz').val()]);
		   }
	 	});
	 }
});


//Wochentag im Formular einstellen
anfahrt_aktueller_tag();

//Busoptionen zeigen / verstecken
$('.anfahrt_typ').click(function() {  
	if($('.anfahrt_typ:checked').val() == "bus"){
		//zeigen
		$('#outer_bus').animate({height:$('#inner_bus').height()}, 'slow');
		//Felder aktivieren
		$('#stunden').removeAttr("disabled");
	    $('#minuten').removeAttr("disabled");
	    $('#tag').removeAttr("disabled");
	}else{
		//verstecken
		$('#outer_bus').animate({height:'0px'}, 'slow');
		//Felder deaktivieren
	    $('#stunden').attr("disabled", true); 
	    $('#minuten').attr("disabled", true); 
	    $('#tag').attr("disabled", true); 
	}
});     

//Anfahrt initiieren
// =========================== 
// ! Funktion init_anfahrt()   
// =========================== 
function init_anfahrt(ziel){

	//Ziel auslesen
	start = new Object();
	start["str"]=$('#str').val();
	start["plz"]=$('#plz').val();
	start["ort"]=$('#ort').val();

	//Karte animieren
	$('#outer_map').animate({height:'0px'}, 'slow', function(){
		$('#outer_error').animate({height:'0px'}, 'slow', function(){
			//Wegbeschreibung löschen
			$('#directions').empty();
			parse_anfahrt(start, ziel);
		});
	});	
}


//entscheiden ob ÖPNV oder Google
// ========================== 
// ! Funktion parse_anfahrt   
// ========================== 
function parse_anfahrt(start, ziel){
	var anfahrt_typ = $('.anfahrt_typ:checked').val();
	if(anfahrt_typ == "auto" || anfahrt_typ == "fuss"){
		//Google Maps starten
		initialize();
		var start_query = start["str"]+', '+start["plz"]+' '+start["ort"];
		var ziel_query =  ziel["str"]+', '+ziel["plz"]+' '+ziel["ort"];
		setDirections(start_query, ziel_query, anfahrt_typ);	
	}else if(anfahrt_typ == "bus"){
		//Bus starten
		bus_anfahrt(start["ort"], start["str"], ziel["ort"], ziel["str"], $('#stunden').val(), $('#minuten').val());
	}else{
		//Fehler zeigen
		showError("Bitte geben Sie an, wie Sie anreisen möchten.");
	}
}

//Google Maps initialisieren
// ======================= 
// ! Funktion initialize   
// ======================= 
function initialize() {
      if (GBrowserIsCompatible()) {      
        map = new GMap2(document.getElementById("map_canvas"));
        gdir = new GDirections(map, document.getElementById("directions"));
        //GEvent.addListener(gdir, "load", onGDirectionsLoad);
        GEvent.addListener(gdir, "addoverlay", onGDirectionsFinish);
        GEvent.addListener(gdir, "error", handleErrors);
        var mapControl = new GMapTypeControl();
             map.addControl(new GSmallZoomControl());

      }
}
     
//Google Maps Wegbeschreibung erstellen
// ========================== 
// ! Funktion setDirections   
// ========================== 
function setDirections(fromAddress, toAddress, anfahrt_typ) {
    	if(anfahrt_typ == "auto"){
    		//Auto
    		gdir.load("from: " + fromAddress + " to: " + toAddress, {travelMode:G_TRAVEL_MODE_DRIVING});
    		druck = "http://maps.google.de/maps?f=d&source=s_d&saddr="+fromAddress+"&daddr="+toAddress+"&hl=de&geocode=&mra=ls&sll=52.195807,8.581551&sspn=0.22728,0.53627&ie=UTF8&ll=51.993443,8.509254&spn=0.028539,0.067034&t=h&z=14&pw=2";
    	} else {
    		//Fussgänger
    		gdir.load("from: " + fromAddress + " to: " + toAddress, {travelMode:G_TRAVEL_MODE_WALKING});
    		druck = "http://maps.google.de/maps?f=d&source=s_d&saddr="+fromAddress+"&daddr="+toAddress+"&hl=de&geocode=&mra=ls&sll=52.195807,8.581551&sspn=0.22728,0.53627&ie=UTF8&ll=51.993443,8.509254&spn=0.028539,0.067034&t=h&z=14&pw=2";
    	}
    	
}

//Google Maps Fehlerbearbeitung
// ========================= 
// ! Funktion handleErrors   
// ========================= 
function handleErrors(){
    	showError("Die Adresse wurde leider nicht gefunden.");
}

	   
//Karte nach laden einblenden  
// ================================ 
// ! Funktion onGDirectionsFinish   
// ================================ 
function onGDirectionsFinish(){
		
		$('#back_druck').remove();
		$('#map_canvas').after('<div id="back_druck"><a id="back" href="#">zurück</a> | <a href="'+druck+'" target="_blank" id="druck">Drucken</a></div>');
		
		var h = $('#inner_map').height();
		h = parseInt(h) + parseInt(0);
		
		$("#anfahrt_container").animate({opacity:"0"}, 500, function(){
			$('#form_container').css("height","0");
			$("#anfahrt_container h1").hide();
			$('#outer_map').css("height",h);
			$("#quick_anfahrt").animate({"margin-top":"0", "margin-left":"0", "margin-right":"0", "margin-bottom":"0", "height":"510", "width":"400"}, 500, function(){
			
		anfahrtpane = $('#quick_anfahrt').jScrollPane({
		verticalDragMinHeight: 100,	
		verticalDragMaxHeight: 100,
		hideFocus: true,
		mouseWheelSpeed: 10,
		verticalGutter:5, 
		contentWidth:200,
		showArrows: true
		}).data('jsp');

			$("#anfahrt_container").animate({opacity:"1"}, 500);
			});
			
		});
}

//Formlar wiederholen
// ================================ 
// ! Funktion map_back  
// ================================ 

function map_back(){
	$("#anfahrt_container").animate({opacity:"0"}, 500, function(){
	anfahrtpane.destroy();
		$("#anfahrt_container h1").show();
		$('#form_container').css("height","auto");
		$('#outer_map').css("height","0");
		$("#quick_anfahrt").animate({"margin-top":"80", "margin-left":"20", "margin-right":"20", "margin-bottom":"20", "height":"270", "width":"360"}, 500, function(){
			
			$("#anfahrt_container").animate({opacity:"1"}, 500);

		});
	});
}

$('#back').live("click", function(){
	map_back();
	return false;
});

	
//Fehler einblenden
// ====================== 
// ! Funktion showError   
// ====================== 
function showError(message){
		$('#inner_error').html(message);
		var error_height = $('#inner_error').height();
   	    $('#outer_error').animate({height:error_height}, "fast");
}
	
//URLENCODE
// ====================== 
// ! Funktion urlencode   
// ====================== 
function urlencode(str) {
	return escape(str).replace('+', '%2B').replace('%20', '+').replace('*', '%2A').replace('/', '%2F').replace('@', '%40');
}

	
//Bus anzeigen
// ======================== 
// ! Funktion bus_anfahrt   
// ======================== 
function bus_anfahrt(from_ort, from_str, to_ort, to_str, h, min){
	//Uhrzeit optimieren
	var Jetzt = new Date();
	if(h == ""){h="00";}
	if(min == ""){min="00";}
	if(h == "00" && min == "00"){h=Jetzt.getHours();min=Jetzt.getMinutes();}
	if(min < 10) {min = 0+min;}
	if(h < 10) {h = 0+h;}
	//URL erstellen
	var ziel_url = 'http://efa.vrr.de/vrr/XSLT_TRIP_REQUEST2?language=de&sessionID=0&itdLPxx_transpCompany=owl&itdLPxx_hideNavigationBar=1&lineRestriction=400&ptOptionsActive=1&place_origin='+urlencode(from_ort)+'&name_origin='+urlencode(from_str)+'&type_origin=address&place_destination='+urlencode(to_ort)+'&name_destination='+urlencode(to_str)+'&type_destination=address&itdDate='+anfahrt_datum(parseInt($("#tag option:selected").val()))+'&itdTime='+h+min+'&itdTripDateTimeDepArr=dep';
	
	//Fancybox aufrufen
	jQuery(document).ready(function() {
		Shadowbox.init({
    		// let's skip the automatic setup because we don't have any
    		// properly configured link elements on the page
    		skipSetup: true
		});
		
		Shadowbox.open({
        	content:    ziel_url,
        	player:     "iframe",
        	title:      "Anfahrt",
        	height:     500,
        	width:      800
   		});
			
	});
}


//Im Formular den aktuellen Wochentag auswählen
// ================================== 
// ! Funktion anfahrt_aktueller_tag   
// ================================== 
function anfahrt_aktueller_tag(){
	var jetzt = new Date();
	var heute = jetzt.getDay();
	if(heute == 0) {heute = 7;}
	$("#tag option[value='"+heute+"']").attr('selected', 'selected');
}   


//Datum des nächsten Wochentages berechnen
// ========================== 
// ! Funktion anfahrt_datum   
// ========================== 
function anfahrt_datum(tag){
	var jetzt = new Date();
	var heute = jetzt.getDay();
	if(heute == 0) {heute = 7;}
	var differenz = tag - heute;
	if (differenz < 0) {differenz = parseInt(differenz) + parseInt(7);}
	var time = parseInt(jetzt.getTime()) + parseInt(parseInt(differenz) * parseInt(86400000));
	jetzt.setTime(time);
	var tag = jetzt.getDate();
	if(tag < 10){tag = '0'+tag; }
	var monat = jetzt.getMonth()+parseInt(1);
	if(monat < 10){monat = '0'+monat; }
	var year = jetzt.getFullYear();
	return year+monat+tag;
}

});
