// Default-Parameter
var KID = "884000";
var agent = "A-20709-0";
var showresult = "1";
var formular = "4";
var detail = "zielgebiet";
var engine = "";
var quickf = "1";

$(document).ready(function() {
    if (document.getElementById('fw_swizard') != null)
    {
        $('#fw_swizard').pxTabs();
        initDynamicSel();
        fillAirport();
        fillZiel();
        SetPerson();
        InitCal();
        InitWizardTextBoxes();
    }

});

function initDynamicSel() {
    $("select.dynamicSel").each(function(){
        // set onchange-func...
        $(this).change(function(){
           changeHdnDynSelValue($(this).attr('id'), $(this).val());
        });        
    });
};

function changeHdnDynSelValue() {
   //$('#hdnDynSel').val($("select.dynamicSel").serialize() );
   var val = "";
   $("select.dynamicSel").each(function(){
        if (val != "") val += "&";
        val += $(this).attr('id') + "=" + escape($(this).val());
   });
   $('#hdnDynSel').val(val);
};

function DeserialHdnDynSel( hdnVal ) {
    var arr = hdnVal.split('&');   
    var obj = {};
    for(i = 0; i < arr.length; i++) {
        obj[arr[i].split('=')[0]] = arr[i].split('=')[1];
    };
    return obj;   
};

function GetInputParams(formDivId, getName) {
    var inputs = [];
    $(':input', $('#' + formDivId)).each(
      function() {
        //if it's radio or checkbox and NOT checked - ignore!
        if (this.nodeName.toLowerCase() == "input" && 
          (this.type.toLowerCase() == "radio" || this.type.toLowerCase() == "checkbox") &&
          !this.checked)
          {
	          return;
          }
        // add by christian
        // remove parameter with empty name
        var parameterName = ((getName) ? this.name : this.id);
        if(parameterName != '') {
            if((parameterName == "preis") && (this.value != '')) {
                inputs.push(parameterName + '=8_' + this.value);
            }
            else {
                var wert = '';
                //if(this.type.toLowerCase() != "checkbox") {
                    wert = escape(this.value);
                /*} else {
                    wert = (this.checked) ? '1' : '0';
                }*/
                inputs.push(parameterName + '=' + wert);
            }
        }
      }
    );
    return inputs;
};

function PostForm(formDivId, action, typ) {
    var statics = initStaticParams(typ);
    var inputs = [];
    inputs = GetInputParams(formDivId, true);
    window.location.href = action + statics + "&" + inputs.join('&');
};

function PostLaunchForm(formDivId, action) {
    var inputs = [];
    inputs = GetInputParams(formDivId, false);
    window.location.href = action + "&" + inputs.join('&');
};

function initStaticParams(typ){
    var retVal = '';
    switch(typ) {
        default:
        case 'lm':
        case 'htl':
        {
            retVal = 'KID=' + KID + '&agent=' + agent + '&showresult=' + showresult
                   + '&formular=' + formular + '&detail=' + detail + '&engine=' + engine
                   + '&quickf=' + quickf;
            break;
        }        
        case 'pl':
        {
            retVal = 'KID=' + KID + '&agent=' + agent + '&showresult=' + showresult
                   + '&formular=' + formular + '&detail=' + detail + '&engine=pauschal'
                   + '&quickf=' + quickf;
            break;
        }
        case 'fl':
        {
            retVal = 'KID=' + KID + '&agent=' + agent + '&showresult=' + showresult
                   + '&formular=3' + '&detail=' + detail + '&nurflug=1';
            break;
        }
        case 'fewo':
        {
            retVal = 'KID=' + KID + '&agent=' + agent + '&showresult=' + showresult
                   + '&formular=' + formular + '&detail=' + detail + '&engine=fewo';
            break;
        }        
    }

    return retVal;
}

function SetPerson(typ) {
    if(($('#' + typ + '_person').get(0) != null)  && ($('#' + typ + '_erw').get(0) != null)) {
        var person = $('#' + typ + '_erw').get(0).value
                   + $('#' + typ + '_kind1').get(0).value
                   + $('#' + typ + '_kind2').get(0).value
                   + $('#' + typ + '_kind3').get(0).value;
                   
        $('#' + typ + '_person').attr('value' , person);
    };
};

function fillAirport() {
    var airp = [];
    for(var i in airpArr){
        if(( airpArr[i].split('|')[0] != '' ) && ( airpArr[i].split('|')[1] != '' )) airp.push( airpArr[i] );
    }

    var profileEntrys = ($('#hdnProfileDepAir').size() > 0) ? $('#hdnProfileDepAir').get(0).value : "";

    if(profileEntrys.length > 0) {
        fillProfileAirp("lm_air", airp, true, profileEntrys);
        fillProfileAirp("pl_air", airp, true, profileEntrys);
        fillProfileAirp("fl_air", airp, true, profileEntrys);
    } else {
        fillComboBox("lm_air", airp, true);
        fillComboBox("pl_air", airp, true);
        fillComboBox("fl_air", airp, true);
    }
};

function fillProfileAirp(selID, arr, isValFirst, profileEntrys) {
    var val = ($('#hdnDynSel').size() > 0) ? getHdnValue(selID) : "";
    if (val == "") val = getURLParam(selID);
    var valIdx = (isValFirst) ? 0 : 1;
    var lblIdx = (isValFirst) ? 1 : 0;
    if (arr.length < 1) return;
    
    var options = '<optgroup label="Meine Abflugh&auml;fen" class="myOptGroup">';
    for (var entry = 0; entry < 3; entry++) {
        if ((profileEntrys.split(',').length > entry) && (profileEntrys.split(',')[entry].length > 0)) {
            options += '<option value="' + profileEntrys.split(',')[entry] + '" >' +
                findAirpByID(arr, profileEntrys.split(',')[entry]) + '</option>';
        }
    }

    options += '</optgroup><optgroup label="Alle Abflugh&auml;fen" class="allOptGroup">' +
        '<option value="-1" >beliebig</option>';

    for(var j in arr){
        options = options + '<option value="' + arr[j].split('|')[valIdx] + '" ' +
        '>' + arr[j].split('|')[lblIdx] + '</option>';
    }
    
    options += '</optgroup>';
    $("#" + selID).html(options);

    if(val == "") {
        $("#" + selID + " option:first").attr("selected", true);
    } else {
        $("#" + selID).children().each(function() {
            if($(this).attr('value') == val) {
                try { $(this).attr("selected", true); } catch(e) {};
            }
        });
    }
};

function findAirpByID(arr, id)
{
    for(var j in arr){
        if(arr[j].split('|')[0] == id) return arr[j].split('|')[1]
    }
    return "";
}

function fillComboBox(selID, arr, isValFirst) {
    var val = ($('#hdnDynSel').size() > 0) ? getHdnValue(selID) : "";
    if (val == "") val = getURLParam(selID);
    var valIdx = (isValFirst) ? 0 : 1;
    var lblIdx = (isValFirst) ? 1 : 0;

    var options = '<option value="-1" >beliebig</option>';
    if (arr.length < 1) return;
    for(var j in arr){
        options = options + '<option value="' + arr[j].split('|')[valIdx] + '" ' +
        '>' + arr[j].split('|')[lblIdx] + '</option>';
    }
    
    $("#" + selID).html(options);

    if(val == "") {
        $("#" + selID + " option:first").attr("selected", true);
    } else {
        $("#" + selID).children().each(function() {
            if($(this).attr('value') == val) {
                try { $(this).attr("selected", true); } catch(e) {};
            }
        });
    }
};

function getHdnValue(selID) {
    var retVal = "";
    var obj = DeserialHdnDynSel( $('#hdnDynSel').val() );
    for (i in obj) 
    {
        try {
            if(i == selID) {
                retVal = obj[i];
                break;
            };
        } catch (e) {};
    };  
    
    return retVal;
};

function fillZiel() {
    for (typ = 0; typ < 3; typ++) {
        var ziel = [];
        var regionen = [];
        
        // removed by christian
        // wrong country-Id's
        /*if(typ < 2) regionen = (typ == 1) ? regionen = regHtlArr : regionen = regArr;
        else regionen = regFewoArr;*/

        // add by christian
        // fix wrong country-Id's
        switch(typ){
            case 0:
                regionen = regHtlArr;
                break;
            case 1:
                regionen = regArr;
                break;
            case 2:
                regionen = regFewoArr;
                break;
            default: break;           
        }
        
        for(var i in regionen){
            if(( regionen[i].split('|')[1] == regionen[i].split('|')[2] ) && ( regionen[i].split('|')[2] == regionen[i].split('|')[3] )) ziel.push( regionen[i] );
        }

        switch(typ){
            case 0:
                fillComboBox("htl_ziel", ziel, false);
                fillRegion("htl");
                break;
            case 1:
                fillComboBox("lm_ziel", ziel, false);
                fillComboBox("pl_ziel", ziel, false);
                fillRegion("lm");
                fillRegion("pl");
                break;
            case 2:
                fillComboBox("fewo_ziel", ziel, false);
                fillRegion("fewo");
                break;
            default: break;           
        }
        /*if(typ == 1) {
            fillComboBox("htl_ziel", ziel, false);
            fillRegion("htl");
        } else if(typ == 1) {
            fillComboBox("lm_ziel", ziel, false);
            fillComboBox("pl_ziel", ziel, false);
            fillRegion("lm");
            fillRegion("pl");
        };*/
    };
};

function fillRegion(typ) {
    if($("#" + typ + "_ziel").size() > 0) {
        var zielID = $("#" + typ + "_ziel").get(0).value;
        if(zielID == "" || zielID == "-1") {
            zielID = ($('#hdnDynSel').size() > 0) ? getHdnValue(typ + "_ziel") : "";
            if (zielID == "") zielID = getURLParam(typ + "_ziel");    
        }
        var reg = [];
        var regionen = [];
        /*if(typ == 'htl') regionen = regHtlArr
        else if ('fewo') regionen = regFewoArr
        else regionen = regArr*/

        switch(typ){
            case 'lm':
            case 'pl':
                regionen = regArr;
                break;
            case 'htl':
                regionen = regHtlArr;
                break;
            case 'fewo':
                regionen = regFewoArr;
                break;
            default: break;           
        }
        for(var i in regionen){
            if(( regionen[i].split('|')[2] == zielID ) && (regionen[i].split('|')[3] != zielID)) reg.push( regionen[i] );
        }
        fillComboBox(typ + "_region", reg, false);
    };
};

function setZFilter(inpt, typ) {
    var val = ($('#' + typ + '_meer')[0].checked == true) ? parseInt($('#' + typ + '_meer').val()) : 0;
    val = ($('#' + typ + '_rom7')[0].checked == true) ? parseInt($('#' + typ + '_zimmer2').get(0).value) + val : val;
    $('#' + inpt).attr('value', val.toString());
};

function InitCal()
{
	$('.cal').each(function(){
		var config = { clickInput:true, createButton:false, showYearNavigation:false, verticalOffset:20, horizontalOffset:0, displayClose:true };
		$(this).datePicker(	config );
		$(this).dpSetSelected($(this).val());
	});
};

function ValidateDate()
{
    var wizContent;
    
    if($('.wizcontent').size() > 0) {
        $('.wizcontent').each(function(){
            if(this.style.display == 'block') {
                wizContent = this;
            };       
        });
    }
    else {
        $('.wiz_lm_ps').each(function(){
            if(this.style.display == 'block') {
                wizContent = this;
            };       
        });
    }
    
    var termin = $("#" + wizContent.id + " input[@name='termin']");
    var ruecktermin = $("#" + wizContent.id + " input[@name='ruecktermin']");
    var tDD, tMM, tYY, rDD, rMM, rYY = 0;
    
    if(termin)
    {
        var date = $(termin).attr('value');
        var dateArr = date.split('.');
        tDD = parseInt(dateArr[0]);
        
        if(dateArr[0].indexOf("0") == 0)
        {
            tDD = parseInt(dateArr[0].substring(1,2));
        }
        
        tMM = parseInt(dateArr[1]);
        
        if(dateArr[1].indexOf("0") == 0)
        {
            tMM = parseInt(dateArr[1].substring(1,2));
        }
        
        tYY = parseInt(dateArr[2]);
    }
    
    if(ruecktermin)
    {
        var date = $(ruecktermin).attr('value');
        var dateArr = date.split('.');
        rDD = parseInt(dateArr[0]);
        
        if(dateArr[0].indexOf("0") == 0)
        {
            rDD = parseInt(dateArr[0].substring(1,2));
        }
        
        rMM = parseInt(dateArr[1]);
        
        if(dateArr[1].indexOf("0") == 0)
        {
            rMM = parseInt(dateArr[1].substring(1,2));
        }
        
        rYY = parseInt(dateArr[2]);
    }
    
    var Tag, Monat, Jahr;
    var mustChanged = false;
    
    if(tYY > rYY)
    {
        mustChanged = true;
    }
    else if(tYY == rYY)
    {
        if(tMM > rMM)
        {
            mustChanged = true;
        }
        else if(tMM == rMM)
        {
            if(tDD > rDD)
            {
                mustChanged = true;
            }
        }
    }
    
    if(mustChanged)
    {
        var day = tDD + parseInt(timeSpan);
        
        while(day > 31)
        {
            tMM++;
            day = day - 31;
        }
        
        if(tMM > 12)
        {
            tYY++;
            var month = tMM;
            var counter = 0;
            tMM = 0;
            while(month > 12)
            {
                month = month - 1;
                counter++;
            }
            tMM = tMM + counter;
        }
        
        var responseDate = new Date(tYY, tMM, day);
        var dd = responseDate.getDate();
        var mm = responseDate.getMonth();
        var yy = responseDate.getFullYear();
        
        Tag = dd;
        Monat = mm;
        Jahr = yy;
        
        if(dd < 10)
        {
            Tag = "0" + dd;
        }
        
        if(mm < 10)
        {
            Monat = "0" + mm;
        }
        
        $(ruecktermin).attr('value', Tag + "." + Monat + "." + Jahr);
        $(ruecktermin).dpSetSelected($(ruecktermin).val());
    }
};

function getURLParam(strParamName){
    var strReturn = "";
    var strHref = window.location.href;
    if ( strHref.indexOf("?") > -1 ) {
        var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
        var aQueryString = strQueryString.split("&");
        for ( var iParam = 0; iParam < aQueryString.length; iParam++ ) {
            if (aQueryString[iParam].indexOf(strParamName + "=") > -1 ) {
                var aParam = aQueryString[iParam].split("=");
                strReturn = aParam[1];
                break;
            }
        }
    }
    return unescape(strReturn);
}

function SetObjectValueByQuery() {
    $(':input', $('#fw_swizard')).each(function() {
        //if it's radio or checkbox and NOT checked - ignore!
        if (this.nodeName.toLowerCase() == "input" && 
          (this.type.toLowerCase() == "radio" || this.type.toLowerCase() == "checkbox") &&
          !this.checked)
          {
	          return;
          }
          var urlParam = getURLParam(this.id);
          if(urlParam != "") {
              
              this.value = urlParam;
              if(this.nodeName.toUpperCase() == "SELECT") {
                $(this).change();
              }

          }
    });
};

//when ENTER pressed in a wizard's textbox - emulates wizard submit button click
function InitWizardTextBoxes()
{
    $(".wizcontent").each(function(){
        $("input[@type='text']", this).each(function(){
            $(this).keydown(function(e){
                var evtobj = window.event? event : e;
                var keyCode = evtobj.charCode? evtobj.charCode : evtobj.keyCode;
                if (keyCode == 13) {
                    var wizardContainer = this;
                    while ((wizardContainer = $(wizardContainer).parent()) != null &&
                        !$(wizardContainer).hasClass("wizcontent"));
                    $(".submitBtn", wizardContainer).click();
                    return false;
                }
            });
        });
    });
}
function fWizClick(elem, sec_name)
{
    $('INPUT[name="'+sec_name+'"]').each(function(i){
        if ($(this).attr("id") == elem.id)
        {
            $(this).next("LABEL").addClass("checked");
        }
        else
        {
            $(this).next("LABEL").removeClass("checked");
        }
    });
}
