//Funktion die mit JQuery in allen input-Feldern die Entertaste abfaengt, um formsubmit zu verhindern
function disableEnterSubmit(){
  $('input').keydown(function(e){
    if (e.keyCode == 13) {
      return false;
    }
  });
}  

//Funktion fuer das Klappmenue
function mainmenu(){
  $(" #menue_nav ul ").css({display: "none"}); // Opera Fix
  $(" #menue_nav li, #menue_nav li.sprachen").hover(function(){
    $(this).find('ul:first').css({visibility: "visible",display: "none"}).fadeIn(400);
  },function(){
    $(this).find('ul:first').css({visibility: "hidden"});
  });
}

//Funktionen fuer die Teaser
var teaser_background = "";
function teaser_over(id_href){
    teaser_background = $(" #"+id_href).css("background-image");
    teaser_background = teaser_background + " top left no-repeat";
    $(" #"+id_href).css({background: "url(/download/image/teaser/teaser_gruen.gif) top left no-repeat"});
    $(" #"+id_href+" .teaser_weiter").css({visibility: "visible"});
    $(" #"+id_href+" .teaser_subline").css({color: "#FFF"});    
    $(" #"+id_href+" .teaser_text").css({visibility: "visible"});
}
function teaser_out(id_href){
    $(" #"+id_href).css({background: teaser_background});
    $(" #"+id_href+" .teaser_weiter").css({visibility: "hidden"});
    //$(" #"+id_href+" .teaser_subline").css({color: "#353535"});    
    $(" #"+id_href+" .teaser_subline").css({color: "#FFF"});
    $(" #"+id_href+" .teaser_text").css({visibility: "hidden"});
}

//Funktion zum Abdecken des Rueckfluges
function toggle_returnflight(){
    var direction = $('input:radio[name=direction]:checked').val();
    if(direction == "oneway"){
        $("#abdeckung").css({visibility: "visible"});
        $("#abdeckung_gr").css({visibility: "visible"});
    } else{
        $("#abdeckung").css({visibility: "hidden"});
        $("#abdeckung_gr").css({visibility: "hidden"});
    }
}

function toggle_returnflight_gr(){
    var direction = $('input:radio[name=direction]:checked').val();
    if(direction == "oneway"){
        $("#abdeckung_gr").css({visibility: "visible"});
    } else{
        $("#abdeckung_gr").css({visibility: "hidden"});
    }
}

//Einstellungen fuer Dialogfenster, z.B. den Fehlermeldungen
var dialogOptions = {
    autoOpen: false,
    bgiframe: true,
    modal: true,
    height: 400,
    maxHeight: 450,
    buttons: {
        Ok: function() {
            $(this).dialog('close');
        }
    }
};

//Einstellungen fuer den Kalender
var datepickerOptions = {
    minDate: '+0d',
    maxDate: '+11M',
    showButtonPanel: true,
    //closeText: 'Kalender schließen',
    showOn: 'button',
    buttonImage: '/bilder/icon_kalender.gif',
    buttonImageOnly: true
};

/**
 * sucht nach Flights in dem json-Array
 * Rückgabe array
 * @author ali
 **/
function searchFlightArray(flights, no){
    var result = $.grep(flights, function(flight, index){
        return (flight['id_flight'] == no);
    });

    return result;
}


//ali: für Deutsch, für English eingebaut in JavaScript ?
var wochentag_kurz_de = new Array("So", "Mo", "Di", "Mi", "Do", "Fr", "Sa");

// toggle_pricetable in script_buchung.js

//Funktion zum Aufrufen des Dialogfeldes, an vielen Stellen benutzt
function toggle_dialog(){
    $("#dialog").dialog("open");
}

// paul
// Fuegt das eingestellte Hinflugdatum beim Rückflug ein 
function updateReturnDayAndDate(){
    dayvalue = $('#outwardday').val();
    datevalue = $('#outwarddate').val();      

    $("#returnday option[value='"+dayvalue+"']").attr('selected', 'selected');
    $("#returndate option[value='"+datevalue+"']").attr('selected', 'selected');
    
    $.jNice.SelectUpdate($("#returnday"));
    $.jNice.SelectUpdate($("#returndate"));      
}

   var stopDateSwitch = false; // global genutzt; if true, return date must not be updated automatically
// paul ende

//Funktion fuer den Kalender
$(function() {
    $.datepicker.setDefaults($.extend({showMonthAfterYear: false}, $.datepicker.regional['dyn']));

    $("#datepicker_1").datepicker(datepickerOptions);
    $("#datepicker_2").datepicker(datepickerOptions);
    
	$("#datepicker_1").change(function() {
        var actDay = $("#datepicker_1").datepicker('getDate');
        var insDay = $.datepicker.formatDate('d', actDay);
        var insMth = $.datepicker.formatDate('yymm', actDay);

        $("#outwardday option[value='"+insDay+"']").attr('selected', 'selected');
        $("#outwarddate option[value='"+insMth+"']").attr('selected', 'selected');
        $.jNice.SelectUpdate($('#outwardday'));
        $.jNice.SelectUpdate($('#outwarddate'));
        
        // paul
        if (!stopDateSwitch) {updateReturnDayAndDate();}
        // paul ende
	});
	
	$("#datepicker_2").change(function() {
        var actDay = $("#datepicker_2").datepicker('getDate');
        var insDay = $.datepicker.formatDate('d', actDay);
        var insMth = $.datepicker.formatDate('yymm', actDay);
        $("#returnday option[value='"+insDay+"']").attr('selected', 'selected');
        $("#returndate option[value='"+insMth+"']").attr('selected', 'selected');
        $.jNice.SelectUpdate($('#returnday'));
        $.jNice.SelectUpdate($('#returndate'));
        
        // paul
        stopDateSwitch = true; // stoppe automatisches einfügen des hinflugdatums
        // paul ende
	});
});

function accordeonNext(indexVar){
    if (indexVar != undefined){
        $('#accordion').accordion('activate' , indexVar );
    } 
}

//Ausfuehren von Funktionen nachdem die Seite geladen ist
$(document).ready(function(){
    //Aktivierung des Klappmenues
    mainmenu();   
    //zusaetzlicher Trigger fuer jNice-Radio-Inputs
    $("#buchung_suche span.jNiceRadio").click( function() {
        toggle_returnflight();
    });
    

    /*
     * dateStr = YearMonthDay like 20110809
     */
    var parseEnglishDate = function(dateStr){
        var pattern = /(\w{4})(\w{2})(\w{2})/;
        var result = pattern.exec(dateStr);
       
        return {day: result[3], month: result[2], year: result[1]};
    };

    /**
     * Ajaxfunktion fuer die Aktivierung der Suche (Startseite und Umbuchung)
     * @author ali
     **/
    submitBookingStart = function(event){
      $("#dialog").dialog('destroy');
      var langVar = $('input[name=langculture]').val();
      var directionVar = $('input:radio[name=direction]:checked').val();
      var nopaxesVar = $("#nopaxes").val();
      var nochildrenVar = $("#nochildren").val();
      var noinfantsVar = $("#noinfants").val();        
      // paul: Integers zum Rechnen
      var int_nopaxesVar = parseInt(nopaxesVar, 10);
      var int_nochildrenVar = parseInt(nochildrenVar, 10);
      var int_noinfantsVar = parseInt(noinfantsVar, 10);
      // paul ende
      var outwardoriginVar = $("#outwardorigin").val();
      var outwarddestinationVar = $("#outwarddestination").val();
      var outwarddayVar = $("#outwardday").val();
      var outwarddateVar = $("#outwarddate").val();
      var returndestinationVar = $("#returndestination").val();        
      var returndayVar = $("#returnday").val();
      var returndateVar = $("#returndate").val();
      var proVar = $("#pro").val();
      //zum Vergleich der Datumsangaben
      if(outwarddayVar.length == 1){outwarddayVar = "0"+outwarddayVar;}
      var date_out = outwarddateVar + outwarddayVar;
      date_out = parseInt(date_out);
      if(returndayVar.length == 1){returndayVar = "0"+returndayVar;}
      var date_ret = returndateVar + returndayVar;
      date_ret = parseInt(date_ret);
      //das aktuelle Datum zum Vergleich
      var date_heu = new Date();
      var date_jhr = date_heu.getYear(); date_jhr = ( date_jhr >= 2000 ) ? date_jhr : ( ( date_jhr < 80 ) ? date_jhr + 2000 : date_jhr + 1900 ); 
      var date_mon = date_heu.getMonth()+1; date_mon = ((date_mon < 10) ? "0" + date_mon : date_mon); 
      var date_tag = date_heu.getDate(); date_tag = ((date_tag < 10) ? "0" + date_tag : date_tag); 
      var date_test = date_jhr + date_mon + date_tag;

      var outwardoriginNameVar = $("#outwardorigin option:selected").text();
      var outwarddestinationNameVar = $("#outwarddestination option:selected").text();
      var returndestinationNameVar = $("#returndestination option:selected").text();

      // alle angezeigten Fehler entfernen
      $("#outwardorigin + div.jNiceSelectWrapper").removeClass("error");
      $("#outwarddestination + div.jNiceSelectWrapper").removeClass("error");
      $("#outwardday + div.jNiceSelectWrapper").removeClass("error");
      $("#outwarddate + div.jNiceSelectWrapper").removeClass("error");
      $("#returnday + div.jNiceSelectWrapper").removeClass("error");
      $("#returndate + div.jNiceSelectWrapper").removeClass("error");
      $("#noinfants + div.jNiceSelectWrapper").removeClass("error");
      $("#nopaxes + div.jNiceSelectWrapper").removeClass("error");
      $("#nochildren + div.jNiceSelectWrapper").removeClass("error");

      //Kontrolle der Formularfelder
      var error_form = "";
		
      if(outwardoriginVar == "0"){
        error_form = "<li>"+ inc_fehler_hin_start + "</li>";
        $("#outwardorigin + div.jNiceSelectWrapper").addClass("error");
      }
      if(outwarddestinationVar == "0"){
        error_form = error_form + "<li>"+ inc_fehler_hin_ziel + "</li>";
        $("#outwarddestination + div.jNiceSelectWrapper").addClass("error");
      }       
      if(date_ret < date_out && directionVar == "roundtrip"){
        error_form = error_form + "<li>"+ inc_fehler_datum + "</li>";
        $("#returnday + div.jNiceSelectWrapper").addClass("error");
        $("#returndate + div.jNiceSelectWrapper").addClass("error");            
      } 
      
      if(date_out < date_test){
        error_form = error_form + "<li>"+ inc_fehler_datum_hin + "</li>";
        $("#outwardday + div.jNiceSelectWrapper").addClass("error");
        $("#outwarddate + div.jNiceSelectWrapper").addClass("error");            
      }
      if(date_ret < date_test){
        error_form = error_form + "<li>"+ inc_fehler_datum_zur + "</li>";
        $("#returnday + div.jNiceSelectWrapper").addClass("error");
        $("#returndate + div.jNiceSelectWrapper").addClass("error");            
      }
      
      if(int_noinfantsVar > int_nopaxesVar){
        error_form = error_form + "<li>" + inc_fehler_kinder + "</li>";
        $("#noinfants + div.jNiceSelectWrapper").addClass("error");
      }        
      
      if(int_nopaxesVar + int_nochildrenVar > 8){
    		error_form = error_form + "<li>" + inc_buchung_fehler_gruppe + "</li>";
    		$("#nopaxes + div.jNiceSelectWrapper").addClass("error");
    		$("#nochildren + div.jNiceSelectWrapper").addClass("error");
      }

      /**
       * special case for PRN airport and infants
       * as of 2010-08-11
       * @author mglass at 3pc dot de
      if((outwarddestinationVar == 'PRN' || outwardoriginVar == 'PRN') && noinfantsVar > 0) {
      	error_form = '<li>Auf dieser Strecke können leider keine Kleinkinder online gebucht werden. Bitte rufen Sie uns unter +49 (0)30-522808364 an.</li>'
      		+'<li>Unfortunately we are not able to accept online bookings for infants on this route. Please call us at +49 (0)30-522808364.</li>';
      	$('#noinfants + div.jNiceSelectWrapper').addClass('error');
      }
      */      

        if(error_form == ""){

            var targetURL = null;
            var rebooking = 0;
            if (event.data['target'] == 'booking'){
                //targetURL = "http://www.flywithstyle.com/gmi/b2c/Default.aspx";
                targetURL = "http://gmi.tikaero.com/Default.aspx";

            } else if (event.data['target'] == 'rebooking') {
                targetURL = "/scripts/buchung/buchung_suche.php";
                rebooking = 1;
            }


            var dateDep = parseEnglishDate(outwarddateVar + outwarddayVar);
            var dateRet = parseEnglishDate(returndateVar + returndayVar);
            var parData = {
                    ori: outwardoriginVar,
                    des: outwarddestinationVar,
                    dep: dateDep["year"] +"-"+ dateDep["month"] +"-"+ dateDep["day"],
                    //langculture: flights_info["lang"]["lang"],
                    langculture: langVar,
                    adt: nopaxesVar,
                    chd: nochildrenVar,
                    inf: noinfantsVar
                    //bcls: "Y"
                };
            if (proVar != booking.proMask && proVar != ""){
                parData.pro = proVar;
            }
            if (directionVar == "roundtrip"){
                parData.ret = dateRet["year"] +"-"+ dateRet["month"] +"-"+ dateRet["day"];
            }

            //alert(targetURL + "?" + $.param(parData));
            var sendURL = targetURL + "?" + $.param(parData);
            //fuer Google Analytics
            _gaq.push(['_link', sendURL]);
            return false;
            //pageTracker._link(sendURL);
            //zum Absenden fuer TIKAero
            $(location).attr('href',sendURL);
        } else{
            $("#buchung_fehler div").replaceWith('<div id="dialog" title="' + inc_fehler_kopf + '"><p><span class="ui-icon ui-icon-circle-check" style="float:left; margin:0 7px 50px 0;"></span><ul>' + error_form + '</ul></p></div>');
            $("#dialog").dialog(dialogOptions).dialog("open");
            $("#dialog ul").replaceWith("<ul>" + error_form + "</ul>");            
        }
        return false;
	};

    $("#submit_start").bind('click', {target: 'booking'}, submitBookingStart);

    // paul:
    // $("#submit_group_start").click(function() 
    // AUSGELAGERT IN script_gruppenbuchung.js

    $('#accordion').accordion({autoHeight: false, collapsible: true, animated: false, alwaysOpen: false, navigation: true});
    $('#news #accordion').accordion("activate", -1);
    $('#jobs #accordion').accordion("activate", -1);

        
    var switchReturn = "0";
    var switchOutward = "0";

    $("#buchung_suche .jNiceSelectWrapper li a")
	.livequery('click', function() { 
        var airport = $(this).text();
        var feld = $(this).parent().parent().parent().prev().attr("id"); 
        var iataCode = airport.substring((airport.length-4),(airport.length-1));

        // paul
        if (feld == 'returnday' || feld == 'returndate') {              
            stopDateSwitch = true; // wenn das Rückflugdatum manuell eingestellt wird, dann nie mehr automatisch ersetzen
            updateDatePicker();
        }
        
        if (feld == 'outwardday' || feld == 'outwarddate') {
            if (!stopDateSwitch) {updateReturnDayAndDate();} // aktualisiere rückflugdatum
            updateDatePicker();
        }
        // paul ende


        if(feld == "outwardorigin"){
//            if(switchReturn != "1"){
//                $("#returndestination option[value='"+iataCode+"']").attr('selected', 'selected');
//                $.jNice.SelectUpdate($('#returndestination'));
//            }
            var insertHTML = "";
            var durchlauf = "0";
            for(var ids in airports[iataCode]){
                insertIATA = airports[iataCode][ids]["iata"];
                insertNAME = airports[iataCode][ids]["name"];
                if(durchlauf == "0" && switchReturn != "1"){
//                    $("#returnorigin option[value='"+insertIATA+"']").attr('selected', 'selected');
//                    $.jNice.SelectUpdate($('#returnorigin'));
                    durchlauf = "1";                    
                }                
                insertHTML = insertHTML + '<option value="' + insertIATA + '">' + insertNAME + '</option>';
            }
            $("#outwarddestination").replaceWith('<select class="normal" size="1" name="outwarddestination" id="outwarddestination">' + insertHTML + '</select>');
            $.jNice.SelectUpdate($('#outwarddestination'));                    
        }
        if(feld == "outwarddestination"){
            if(switchReturn != "1"){
//                $("#returnorigin option[value='"+iataCode+"']").attr('selected', 'selected');
//                $.jNice.SelectUpdate($('#returnorigin'));
                switchOutward = "1";
            }        
        }
	});
});

/**
 * handle airport dependencies
 *
 * @author mglass@3pc.de
 */
$(function() {

	$('.jNiceWrapper #abflugort').siblings('.jNiceSelectWrapper').find('ul li a').click(function(e) {
		//console.log(e);
		var id = $(this).attr('class').match(/option-([0-9]+)/)[1];
		
		document.getElementById('mymovie').changeAirport('start', id);
		
		var lang = location.pathname.match('/([a-z]{2})/'),
			lang = (lang == null) ? 'de' : lang[1];
			
		//console.log("flash.changeAirport('start', "+id+")");
		$.getJSON('/scripts/streckennetz/streckennetz_flash-api.php?lang='+lang+'&action=getTargetsById&id='+id, function(data) {
		
			var dummy_option = $('.jNiceWrapper #zielort option')[0];
			$('.jNiceWrapper #zielort').empty().append(dummy_option);
			
			data = data[0];
			
			for(var i in data)
                $('<option />').val(data[i].id).text(data[i].title).appendTo('.jNiceWrapper #zielort');
			
			$.jNice.SelectUpdate($('#zielort'));
			
			$('.jNiceWrapper #zielort').siblings('.jNiceSelectWrapper').find('ul li a').click(function() {
				var id = $(this).attr('class').match(/option-([0-9]+)/)[1];
		
				document.getElementById('mymovie').changeAirport('target', id);
		
				//console.log("flash.changeAirport('target', "+id+")");
			});
			
		});
	});

});

// kann glaube ich weg: collectedData und checkCompletion() 
var collectedData = {};
function checkCompletion() {
  var missing = [];
  var mandatory = [
    'direction','nopaxes',
    'outwardorigin','outwarddestination',/*'outwardday',*/'outwarddate',
    'returnorigin','returndestination',/*'returnday',*/'returndate',
    //'outwardoriginName','outwarddestinationName',
    //'returnoriginName','returndestinationName',
    'strasse','ort','land',
    'anrede','name','telefon','mail'
  ];

  for( x in mandatory ) {
    if( !collectedData[mandatory[x]] ) missing.push( mandatory[x] );
  }

  if( missing.length > 0 ) {

    var error_form = '';
    for( x in missing ) {
      error_form += '<li>'+inc_fehler_missing[ missing[x] ]+'</li>';
    }

    $("#buchung_fehler div").replaceWith('<div id="dialog" title="' + inc_fehler_kopf + '"><p><span class="ui-icon ui-icon-circle-check" style="float:left; margin:0 7px 50px 0;"></span><b>'+inc_fehler_missing_title+'</b><ul>' + error_form + '</ul></p></div>');
    $("#dialog").dialog('destroy').dialog(dialogOptions).dialog("open")
  }
  else {
    sendGroupRequest();
  }
  return false;
}

// paul
// Aktualisiere beide Datepicker mit den Daten aus den Select-Feldern
// wird aufgerufen onchange bei den Datums-Select-Feldern  
function updateDatePicker() 
{
  var tag = $("#outwardday").val();
  var datum = $("#outwarddate").val();
  var monat = datum.substring(4);
  var jahr = datum.substring(0,4);
  $("#datepicker_1").datepicker( 'setDate', new Date(jahr, monat-1, tag) );
  
  tag = $("#returnday").val();
  datum = $("#returndate").val();
  monat = datum.substring(4);
  jahr = datum.substring(0,4);
  $("#datepicker_2").datepicker( 'setDate', new Date(jahr, monat-1, tag) );
}
// paul ende
