﻿$(document).ready(function() {
    initDynamicSel();
    fillAirport();
    fillZiel();
    fillLMP();
    fillHTL();
    fillFLY();
    $('#wiz_top_lmp').show();
    initCals();
    initPerson('lmp_erw');
    initPerson('htl_erw');
    initPerson('fly_erw');
});
var showWizExt = false;
function WizExtentions(typ) {
    if(showWizExt) {
        $('#wiz_ext_'+typ).slideUp('fast');
        $('.wizExtText').html('Erweiterte Suche');
    } else {
        $('#wiz_ext_'+typ).slideDown('fast');
        $('.wizExtText').html('Einfache Suche');
    }
    showWizExt = !showWizExt;
}
function initPerson(selID) {
    var val = ($('.hdnDynSel').size() > 0) ? getHdnValue(selID) : "";
    if (val == "") val = getURLParam(selID);
    if(val == "") {
        var i = 0;
        $("#" + selID).children().each(function() {
            if(i++ == 1) $(this).attr("selected", true);
        });
    } else {
        $("#" + selID).children().each(function() {
            if($(this).attr('value') == val) {
                try { $(this).attr("selected", true); } catch(e) {};
            }
        });
    }
}
function PostForm(formDivId, action, typ, extDivId) {
    var inputs = [];
    inputs = GetInputParams(formDivId, true);
    var inputsExt = [];
    inputsExt = GetInputParams(extDivId, true);
    window.location.href = action + inputs.join('&') + '&' + inputsExt.join('&');
};
function GetInputParams(formDivId, getName) {
    var inputs = [];
    $(':input', $('#' + formDivId)).each(
      function() {
        if (this.nodeName.toLowerCase() == "input" && 
          (this.type.toLowerCase() == "radio" || this.type.toLowerCase() == "checkbox") && !this.checked)
          {
	          return;
          }
        var parameterName = ((getName) ? this.name : this.id);
        if(parameterName != '') {
            if((parameterName!='lmp_zimmer')||(parameterName!='lmp_zimmer2')) {
                inputs.push(parameterName + '=' + this.value);
            }
        }
      }
    );
    return inputs;
};
function fillLMP() {
    fillCalMonate('lmp_kmonat');
    fillCalMonate('lmp_rueckkmonat');
    fillDynSel('lmp_dauer', arrDauer);
    fillDynSel('lmp_kategorie', arrKategorie);
    fillDynSel('lmp_verpf', arrVerpf);
    fillDynSel('lmp_erw', arrErw);
    fillDynSel('lmp_sport', arrSport);
    fillDynSel('lmp_hbfges', arrHbfges);
    fillDynSel('lmp_hbfanz', arrHbfanz);
    fillDynSel('lmp_hbfempf', arrHbfempf);
    fillDynSel('lmp_marke', arrMarke);
    fillDynSel('lmp_zimmer2', arrZimmer);
    fillDynSelNr('lmp_kind1', 16, true);
    fillDynSelNr('lmp_kind2', 16, true);
    fillDynSelNr('lmp_kind3', 16, true);
}
function fillHTL() {
    fillCalMonate('htl_kmonat');
    fillCalMonate('htl_rueckkmonat');
    fillDynSel('htl_dauer', arrDauerHtl);
    fillDynSel('htl_kategorie', arrKategorie);
    fillDynSel('htl_verpf', arrVerpf);
    fillDynSel('htl_erw', arrErw);
    fillDynSel('htl_marke', arrMarke);
    fillDynSel('htl_zimmer', arrHtlZimmer);
    fillDynSelNr('htl_kind1', 16, true);
    fillDynSelNr('htl_kind2', 16, true);
    fillDynSelNr('htl_kind3', 16, true);
}
function fillFLY() {
    fillDynSel('fly_ziel', arrZiel);
    fillCalMonate('fly_kmonat');
    fillCalMonate('fly_rueckkmonat');
    fillDynSel('fly_dauer', arrDauer);
    fillDynSel('fly_erw', arrErw);
    fillDynSel('fly_marke', arrMarkeFly);
    fillDynSelNr('fly_kind1', 16, true);
    fillDynSelNr('fly_kind2', 16, true);
    fillDynSelNr('fly_kind3', 16, true);
}
function switchWizard(typ) {
    switch(typ) {
        case 'pl':
            $('#wiz_top_htl, #wiz_ext_htl, #wiz_top_fly, #wiz_ext_fly, #wiz_ext_lmp').hide(); 
            $('#wiz_top_lmp').show();
            $('#lmp_engine').attr('value', 'pauschal');
            $('.wiz_radio2, .wiz_radio3, .wiz_radio4').attr('checked', '');
            $('.wiz_radio1').attr('checked', 'checked');
        break;
        case 'lm':
            $('#wiz_top_htl, #wiz_ext_htl, #wiz_top_fly, #wiz_ext_fly, #wiz_ext_lmp').hide(); 
            $('#wiz_top_lmp').show();
            $('#lmp_engine').attr('value', '');
            $('.wiz_radio1, .wiz_radio3, .wiz_radio4').attr('checked', '');
            $('.wiz_radio2').attr('checked', 'checked');
        break;
        case 'htl':
            $('#wiz_top_lmp, #wiz_ext_lmp, #wiz_top_fly, #wiz_ext_fly, #wiz_ext_htl').hide();
            $('#wiz_top_htl').show();
            $('.wiz_radio1, .wiz_radio2, .wiz_radio4').attr('checked', '');
            $('.wiz_radio3').attr('checked', 'checked');
        break;
        case 'fly':
            $('#wiz_top_htl, #wiz_ext_htl, #wiz_top_lmp, #wiz_ext_lmp, #wiz_ext_fly').hide();
            $('#wiz_top_fly').show();
            $('.wiz_radio1, .wiz_radio2, .wiz_radio3').attr('checked', '');
            $('.wiz_radio4').attr('checked', 'checked');            
        break;        
        default: break;
    }
    $('.wiz_extBtn').show();
    showWizExt=false;
    $('.wizExtText').html('Erweiterte Suche');
}
function initDynamicSel() {
    $("select.dynSel").each(function(){
        $(this).change(function(){
           changeHdnDynSelValue($(this).attr('id'), $(this).val());
        });        
    });
};
function changeHdnDynSelValue() {
   var val = "";
   $("select.dynSel").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 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 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 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 = [];
        switch(typ){
            case 'lmp':
                regionen = regArr;
                break;
            case 'htl':
                regionen = regHtlArr;
                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 fillAirport() {
    var airp = [];
    for(var i in airpArr){
        if(( airpArr[i].split('|')[0] != '' ) && ( airpArr[i].split('|')[1] != '' )) airp.push( airpArr[i] );
    }
    fillComboBox("lmp_air", airp, true);
    fillComboBox("fly_air", airp, true);
};
function fillZiel() {
    for (var typ = 0; typ < 2; typ++) {
        var ziel = [];
        var regionen = [];
        
        switch(typ){
            case 0:
                regionen = regHtlArr;
                break;
            case 1:
                regionen = regArr;
                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);
                break;
            case 1:
                fillComboBox("lmp_ziel", ziel, false);
                break;
            default: break;           
        }
    };
};
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 fillDynSel(selID, arrItem)
{
    var val = ($('.hdnDynSel').size() > 0) ? getHdnValue(selID) : "";
    if (val == "") val = getURLParam(selID);
    var options = '';
    if (arrItem.length < 1) return;
    for(var i in arrItem){
        options = options + '<option value="' + arrItem[i].split('|')[0] + '" ' +
        '>' + arrItem[i].split('|')[1] + '</option>';
    }
    $("#" + selID).html(options);
    PostSetSelect(val, selID);
}
function fillDynSelNr(selID, max, firstOpt)
{
    var val = ($('.hdnDynSel').size() > 0) ? getHdnValue(selID) : "";
    if (val == "") val = getURLParam(selID);
    var options = (firstOpt) ? '<option value="-1"> --- </option>' : '';
    for(var i = 0; i < max; i++){
        options = options + '<option value="' + (i+1) + '" ' + '>' + (i+1) + '</option>';
    }
    $("#" + selID).html(options);
    PostSetSelect(val, selID);
}
function PostSetSelect(val, selID) {
    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 fillCalMonate(selID) {
    
    var val = ($('.hdnDynSel').size() > 0) ? getHdnValue(selID) : "";
    if (val == "") val = getURLParam(selID);
    
    var date = new Date();
    var monat = date.getMonth()+1;
    var jahr  = date.getFullYear();
    
    var options = '';
    
    for(var i = 0; i < 12; i++){
        var j = ' '+jahr;
        j = j.substr(3,2);
        options = options + '<option value="' + (monat+'.'+jahr) + '" ' + '>' + (arrCalMon[monat-1]+' '+j) + '</option>';
        monat++;
        if(monat>12){
            monat=1;
            jahr++;
        }
    }
    $("#" + selID).html(options);
    PostSetSelect(val, selID);
}
function onlyUpdateDateParam(typ) {
    var date1 = $('#'+typ+'_ktag').val() + '.' + $('#'+typ+'_kmonat').val();
    var date2 = $('#'+typ+'_rueckktag').val() + '.' + $('#'+typ+'_rueckkmonat').val();
    $('#'+typ+'_termin').attr('value', date1);
    $('#'+typ+'_ruecktermin').attr('value', date2);
}
function updateDateParam(typ) {
    onlyUpdateDateParam(typ);
    updateRueckktage(typ);
}
function updateRueckktage(typ) {
    var day = $('#'+typ+'_rueckktag').val();
    var month = $('#'+typ+'_rueckkmonat').val().split('.')[0];

    var options = '';
    for(var i = 0; i < arrCal[month-1]; i++){
        options = options + '<option value="' + (i+1) + '" ' + '>' + (i+1) + '</option>';
    }
    $("#"+typ+'_rueckktag').html(options);
    
    $('#'+typ+'_rueckktag').children().each(function() {
            if($(this).attr('value') == day) {
                try { $(this).attr("selected", true); } catch(e) {};
            }
        });
}
function changeCalender(typ, my, tag, specialTyp) {
    var dtArr = my.split('.');
    // tage füllen
    var options = '';
    for(var i = 0; i < arrCal[(dtArr[0]-1)]; i++){
        options = options + '<option value="' + (i+1) + '" ' + '>' + (i+1) + '</option>';
    }
    $("#"+typ+'_ktag').html(options);  
    
    $('#'+typ+'_ktag').children().each(function() {
            if($(this).attr('value') == tag) {
                try { $(this).attr("selected", true); } catch(e) {};
            }
        })
        
    var date = new Date(dtArr[1], dtArr[0]-1, tag);
    var tagVon   = date.getDate();
    var monatVon = date.getMonth()+1;
    var jahrVon  = date.getFullYear();   
    
    var dateTo = new Date(date);
    
    var diff = 0;
    
    switch(specialTyp) {
        case 'lm': diff = 23; break;
        case 'pl': diff = 21; break;
        case 'htl': diff = 18; break;
        case 'fly': diff = 23; break;
        default:  break;
    }
    
    dateTo.setDate(date.getDate()+diff);

    var tagBis   = dateTo.getDate();
    var monatBis = dateTo.getMonth()+1;
    var jahrBis  = dateTo.getFullYear();    
    
    
    var options = '';
    for(var i = 0; i < arrCal[monatBis-1]; i++){
        options = options + '<option value="' + (i+1) + '" ' + '>' + (i+1) + '</option>';
    }
    $("#"+typ+'_rueckktag').html(options);  
    
    $('#'+typ+'_rueckktag').children().each(function() {
            if($(this).attr('value') == tagBis) {
                try { $(this).attr("selected", true); } catch(e) {};
            }
        });
        
    $('#'+typ+'_kmonat').children().each(function() {
            if($(this).attr('value') == (monatVon+'.'+jahrVon)) {
                try { $(this).attr("selected", true); } catch(e) {};
            }
        });
        
    $('#'+typ+'_rueckkmonat').children().each(function() {
            if($(this).attr('value') == (monatBis+'.'+jahrBis)) {
                try { $(this).attr("selected", true); } catch(e) {};
            }
        });
    
    onlyUpdateDateParam(typ);
}
function initCals() {
    var date = new Date();
    var dateToLmp = new Date();
    var dateToHtl = new Date();
    
    dateToLmp.setDate(date.getDate()+1);
    dateToHtl.setDate(date.getDate()+6);

    var tag1   = dateToLmp.getDate();
    var monat1 = dateToLmp.getMonth()+1;
    var jahr1  = dateToLmp.getFullYear();
    
    var tag2   = dateToHtl.getDate();
    var monat2 = dateToHtl.getMonth()+1;
    var jahr2  = dateToHtl.getFullYear();    
    
    changeCalender('lmp', (monat1+'.'+jahr1), tag1, 'lm');
    changeCalender('htl', (monat2+'.'+jahr2), tag2, 'htl');
    changeCalender('fly', (monat1+'.'+jahr1), tag1, 'fly');
}
function initCalPl() {
    var date = new Date();
    var dateTo = new Date();
    dateTo.setDate(date.getDate()+45);
    var tag   = dateTo.getDate();
    var monat = dateTo.getMonth()+1;
    var jahr  = dateTo.getFullYear();
    changeCalender('lmp', (monat+'.'+jahr), tag, 'pl');
}
function initCalLm() {
    var date = new Date();
    var dateTo = new Date();
    dateTo.setDate(date.getDate()+1);
    var tag   = dateTo.getDate();
    var monat = dateTo.getMonth()+1;
    var jahr  = dateTo.getFullYear();
    changeCalender('lmp', (monat+'.'+jahr), tag, 'lm');
}


