﻿
// Default-Parameter
var KID = "750750";
var agent = "";
var showresult = "1";
var formular = "4";
var detail = "zielgebiet";
var engine = "";
var quickf = "1";
var timeSpan = 14;
var wiz = 'lm';
var wizMonthNames = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'];
var wizDayNamesMin = ['<font color="#F81F00">S</font>', 'M', 'D', 'M', 'D', 'F', 'S'];

jQuery(document).ready(function() {
    fixStyleIssue();
    fillAirport();
    SetCalDate();
    InitCal();
    SetPerson('lm');
    SetPerson('pl');
    SetPerson('fly');
    SetPerson('htl');
    SwitchWizard(wiz);
    window.setTimeout("fillList()", 3000);
});

function fillList() {
    fillZiel();
    fillOperator();
}

function fixStyleIssue() {
	jQuery('ul.content li.offerbox div.listblocka').each(function(i) {
		if((i % 2) != 0) {
			jQuery(this).addClass('listblockb');
			jQuery(this).removeClass('listblocka');
		}
	});
	jQuery('table tr').each(function(i) {
		if((i % 2) == 0) {
			jQuery(this).addClass('modTr');
		}
	});
	jQuery('div.content_right').css('height', jQuery('div.content_inner').height());
}

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 SetCalDate() {
    $('.cal[name=termin]').each(function() {
        var typ = $(this).get(0).id.toString().replace('_termin', '');

        var today = new Date();
        var dtTermin = new Date();
        dtTermin.setDate(today.getDate() + 3);
        var dtRueck = new Date()
        dtRueck.setDate(today.getDate() + 17);
        var dd = ((dtTermin.getDate() < 10) && (dtTermin.getDate().toString.length == 1)) ?
                '0' + dtTermin.getDate().toString() : dtTermin.getDate().toString();
        var mm = (((dtTermin.getMonth() + 1) < 10) && ((dtTermin.getMonth() + 1).toString.length == 1)) ?
            '0' + (dtTermin.getMonth() + 1).toString() : (dtTermin.getMonth() + 1).toString();
        var from = dd + '.' + mm + '.' + dtTermin.getFullYear();
        dd = ((dtRueck.getDate() < 10) && (dtRueck.getDate().toString.length == 1)) ?
                '0' + dtRueck.getDate().toString() : dtRueck.getDate().toString();
        mm = (((dtRueck.getMonth() + 1) < 10) && ((dtRueck.getMonth() + 1).toString.length == 1)) ?
            '0' + (dtRueck.getMonth() + 1).toString() : (dtRueck.getMonth() + 1).toString();
        var to = dd + '.' + mm + '.' + dtRueck.getFullYear();

        jQuery('#' + typ + '_termin').attr('value', from);
        jQuery('#' + typ + '_rueck').attr('value', to);
    });
}

function fillAirport() {
    var airp = [];
    for (var i in airpArr) {
        if ((airpArr[i].split('|')[0] != '') && (airpArr[i].split('|')[1] != '')) airp.push(airpArr[i]);
    }

    fillComboBox("lm_air", airp, true);
    fillComboBox("pl_air", airp, true);
    fillComboBox("fly_air", airp, true);
};

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) {
        var useog = false;
        if(arr[j].split('|').length == 3) {
            useog = arr[j].split('|')[2] == 'optiongroup';
        }
        options = options + '<option value="' + unescape(arr[j].split('|')[valIdx]) + '" ';
        options += (useog) ? 'style="background: #DDDDDD;"' : '';
        options = options + '>' + 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 translateCity() {
    var regionen = new Array();
    var counter = 0;
    for (var i in ttUDF_653) {
        regionen[counter] = ttUDF_653[i].titleHTML + "|" + ttUDF_653[i].id + "|optiongroup";
        counter++;
        for (var j in ttUDF_653[i].regions) {
            regionen[counter] = ttUDF_653[i].regions[j].titleHTML + "|" + escape(ttUDF_653[i].regions[j].searchValue);
            counter++;
        }
    }
    return regionen;
}

function translateCity2() {
    var regionen = new Array();
    var counter = 0;
    for (var i in ttUDF_654) {
        regionen[counter] = ttUDF_654[i].titleHTML + "|" + ttUDF_654[i].id + "|optiongroup";
        counter++;
        for (var j in ttUDF_654[i].regions) {
            regionen[counter] = ttUDF_654[i].regions[j].titleHTML + "|" + escape(ttUDF_654[i].regions[j].searchValue);
            counter++;
        }
    }
    return regionen;
}

function fillZiel() {
    for (typ = 0; typ < 4; typ++) {
        var ziel = [];
        var regionen = [];

        switch (typ) {
            case 0:
                if (TTREGS_653 != undefined) {
                    regionen = TTREGS_653;
                } else {
                    continue;
                }
                break;
            case 1:
                if (TTREGS_654 != undefined) {
                    regionen = TTREGS_654;
                } else {
                    continue;
                }
                break;
            case 2:
                if (ttUDF_653 != undefined) {
                    regionen = translateCity();
                } else {
                    continue;
                }
                break;
            case 3:
                if (ttUDF_654 != undefined) {
                    regionen = translateCity2();
                } else {
                    continue;
                }
                break;
            default: break;
        }

        if (typ < 2) {
	        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]);
	        }
        } else {
            for (var i in regionen) {
                ziel.push(regionen[i]);
            }
        }

        switch (typ) {
            case 0:
                fillComboBox("htl_ziel", ziel, false);
                fillComboBox("cy_ziel", ziel, false);
                fillComboBox("hcy_ziel", ziel, false);
                break;
            case 1:
                fillComboBox("lm_ziel", ziel, false);
                fillComboBox("pl_ziel", ziel, false);
                break;
            case 2:
                fillComboBox("cy_ziel", ziel, false);
                break;
            case 3:
                fillComboBox("hcy_ziel", ziel, false);
                break;
            default: break;
        }
    };
};

function fillOperator() {
    for (typ = 0; typ < 2; typ++) {
        var operator = [];
        var operatorCache = [];

        switch (typ) {
            case 0:
                if (arrMarke_653 != undefined) {
                    operatorCache = arrMarke_653;
                } else {
                    continue;
                }
                break;
            case 1:
                if (arrMarke_654 != undefined) {
                    operatorCache = arrMarke_654;
                } else {
                    continue;
                }
                break;
            default: break;
        }

        for (var i in operatorCache) {
            operator.push(operatorCache[i].split(';')[0] + '|' + operatorCache[i].split(';')[1]);
        }

        switch (typ) {
            case 0:
                fillComboBox("htl_marke", operator, false);
                fillComboBox("cy_marke", operator, false);
                fillComboBox("hcy_marke", operator, false);
                break;
            case 1:
                fillComboBox("lm_marke", operator, false);
                fillComboBox("pl_marke", operator, false);
                break;
            default: break;
        }
    };
}

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 getURLParam(strParamName) {
    var retVal = '';
    try {
        eval("if(reg" + strParamName + ") { retVal = reg" + strParamName + "; }");
    } catch (e) { }
    return retVal;
}

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 InitCal() {
    var today = new Date();
    $('.cal').each(function() {
        var config = {
            minDate: today,
            showWeek: true,
            weekHeader: 'KW',
            firstDay: 1,
            dateFormat: 'dd.mm.yy',
            defaultDate: $(this).val(),
            dayNamesMin: wizDayNamesMin,
            monthNames: wizMonthNames,
            beforeShowDay: function(date) {
                var retVal = new Array(2);
                retVal[0] = true;
                retVal[1] = '';
                //var conDate = $.datepicker.parseDate('dd.mm.yy', date);
                if (date.getDay() == 0) {
                    retVal[1] = 'ui-datepicker-sunday';
                }
                return retVal;
            },
            beforeShow: function(input, inst) {
                calAppendText(jQuery(input));
            },
            onClose: function(input, inst) {
                jQuery('div.ui-datepicker-addtext').hide();
                ValidateDate();
            }
        };
        if ($(this).datepicker) {
            $(this).datepicker(config);
            //$(this).dpSetSelected($(this).val());
        }
    });
    jQuery('body').append('<div class="ui-datepicker-addtext"></div>');
    //jQuery('.ui-datepicker').wrap('<div class="ui-datepicker-test"></div>');
};

function calAppendText(obj) {
    var appendText = '';
    if (obj.attr('name') == 'termin') {
        appendText = 'Früheste Hinreise am';
    } else if (obj.attr('name') == 'ruecktermin') {
        appendText = 'Späteste Rückreise am';
    }
    jQuery('div.ui-datepicker-addtext').text(appendText);
    jQuery('div.ui-datepicker-addtext').css('top', obj.offset().top+26);
    jQuery('div.ui-datepicker-addtext').css('left', obj.offset().left+21);
    jQuery('div.ui-datepicker-addtext').show();
}

function ValidateDate() {
    var wizContent;

    if ($('.wizcontent').size() > 0) {
        $('.wizcontent').each(function() {
            if (this.style.display == 'block') {
                wizContent = this;
            };
        });
    }
    else {
        $('.fwWizardLm').each(function() {
            if (this.style.display == 'block') {
                wizContent = this;
            };
        });
    }
    if (typeof (wizContent) == 'undefined') {
        wizContent = $('.wizcontent').get(0);
    }

    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 - 1, day);
        var dd = responseDate.getDate();
        var mm = responseDate.getMonth() + 1;
        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 setCity(typ) {
    var city = jQuery('select#' + typ + '_ziel').eq(0).val();
    if (city != '-1') {
        jQuery('input#' + typ + '_iffort').val(city.split('|')[2]);
    }
}

function setBits(typ) {
    var cls = typ == 0 ? 'wizCity' : 'wizHCity';
    var prefix = typ == 0 ? 'cy_' : 'hcy_';
    var e1 = 0;
    var e2 = 0;
    var e3 = 0;
    var w1 = 0;
    var w2 = 0;
    var w4 = 0;
    jQuery('.' + cls + ' input.cb').each(function() {
        var eleName = jQuery(this).attr('name');
        var val = parseInt(jQuery(this).val());
        if ((eleName.indexOf('e1') > -1) && (this.checked)) {
            e1 = addBit(e1, val);
        }
        if ((eleName.indexOf('e2') > -1) && (this.checked)) {
            e2 = addBit(e2, val);
        }
        if ((eleName.indexOf('e3') > -1) && (this.checked)) {
            e3 = addBit(e3, val);
        }
        if ((eleName.indexOf('w1') > -1) && (this.checked)) {
            w1 = addBit(w1, val);
        }
        if ((eleName.indexOf('w2') > -1) && (this.checked)) {
            w2 = addBit(w2, val);
        }
        if ((eleName.indexOf('w4') > -1) && (this.checked)) {
            w4 = addBit(w4, val);
        }
    });
    jQuery('#' + prefix + 'HotelBit').val(e1);
    jQuery('#' + prefix + 'HotelBit1').val(e2);
    jQuery('#' + prefix + 'HotelBit2').val(e3);
    jQuery('#' + prefix + 'WellBit1').val(w1);
    jQuery('#' + prefix + 'WellBit2').val(w2);
    jQuery('#' + prefix + 'WellBit4').val(w4);
}

function addBit(value, mask) {
    return value | mask;
}

function SwitchWizard(typ) {
    jQuery('div.wizNav ul li').removeClass('active');
    switch (typ) {
        case 'lm': 
            {
                $('#wizTypeLm').parent().addClass('active');
                $('#wizTypeLm').attr('checked', 'checked');
                $('.wizardLm').css('display', 'block');
                $('.wizardFly, .wizardHtl').css('display', 'none');
                break;
            }
        case 'fly': 
            {
                $('#wizTypeFly').parent().addClass('active');
                $('#wizTypeFly').attr('checked', 'checked');
                $('.wizardFly').css('display', 'block');
                $('.wizardLm, .wizardHtl').css('display', 'none');
                break;
            }
        case 'htl': 
            {
                $('#wizTypeHtl').parent().addClass('active');
                $('#wizTypeHtl').attr('checked', 'checked');
                $('.wizardHtl').css('display', 'block');
                $('.wizardLm, .wizardFly').css('display', 'none');
                break;
            }
        case 'cy':
            {
                $('#wizTypeCy2').parent().addClass('active');
                $('#wizTypeCy2').attr('checked', 'checked');
                $('.wizHCity').css('display', 'block');
                $('.wizCity').css('display', 'none');
                break;
            }
        case 'hcy':
            {
                $('#wizTypeHCy').parent().addClass('active');
                $('#wizTypeHCy').attr('checked', 'checked');
                $('.wizCity').css('display', 'block');
                $('.wizHCity').css('display', 'none');
                break;
            } default: break;
    }
}
function initStaticParams(typ) {
    var retVal = '';
    switch (typ) {
        default:
        case 'lm':
            {
                retVal = 'KID=' + KID + '&showresult=' + showresult
                   + '&formular=' + formular + '&detail=' + detail + '&engine=' + engine
                   + '&quickf=' + quickf;
                break;
            }
        case 'htl':
            {
                retVal = 'KID=' + KID + '&showresult=' + showresult
                   + '&formular=' + formular + '&detail=' + detail + '&engine=erde'
                   + '&quickf=' + quickf;
                break;
            }
        case 'pl':
            {
                retVal = 'KID=' + KID + '&showresult=' + showresult
                   + '&formular=' + formular + '&detail=' + detail + '&engine=pauschal'
                   + '&quickf=' + quickf + '&region=-1';
                break;
            }
        case 'fly':
            {
                retVal = 'KID=' + KID + '&showresult=' + showresult
                   + '&formular=3' + '&detail=' + detail + '&nurflug=1';
                break;
            }
        case 'cy':
            {
            	var level = jQuery('input#cy_iffort').val();
            	if(level == '') {
            		level = 'zielgebiet';
            	} else {
            		level = 'hotel';
            	}
                retVal = 'KID=' + KID + '&showresult=' + showresult
                   + '&detail='+level+'&engine=erde&cityLight=1&ibeType=city';
                break;
            }
        case 'hcy':
            {
            	var level = jQuery('input#hcy_iffort').val();
            	if(level == '') {
            		level = 'zielgebiet';
            	} else {
            		level = 'hotel';
            	}
                retVal = 'KID=' + KID + '&showresult=' + showresult
                   + '&detail='+level+'&cityLight=1&ibeType=city';
                break;
            }
    }

    return retVal;
}

function PostForm(formDivId, action, typ) {
    var statics = initStaticParams(typ);
    var inputs = [];
    inputs = GetInputParams(formDivId, true);
    window.location.href = action + statics + "&" + inputs.join('&');
};

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 != '') {
              var wert = '';
              //if(this.type.toLowerCase() != "checkbox") {
              wert = escape(this.value);
              /*} else {
              wert = (this.checked) ? '1' : '0';
              }*/
              inputs.push(parameterName + '=' + wert);
          }
      }
    );
    return inputs;
};

var airpArr = ["5000|Nord",
"5001|Süd",
"5002|West",
"5003|Ost",
"1|Amsterdam (NL)",
"3|Basel-Mulhouse (CH)",
"4|Berlin-Schönefeld",
"5|Berlin-Tegel",
"8|Bremen",
"9|Brüssel (B)",
"10|Dortmund",
"11|Dresden",
"12|Düsseldorf",
"14|Erfurt",
"15|Frankfurt",
"16|Frankfurt-Hahn",
"17|Friedrichshafen",
"18|Genf (CH)",
"19|Graz (A)",
"20|Hamburg",
"21|Hannover",
"23|Innsbruck (A)",
"24|Karlsruhe",
"27|Klagenfurt (A)",
"28|Köln-Bonn",
"29|Leipzig-Halle",
"30|Linz (A)",
"31|Lübeck",
"32|Lüttich (B)",
"33|Luxemburg",
"34|Maastricht - Aachen (NL)",
"90|Memmingen",
"36|München",
"37|Münster-Osnabrück",
"49|Niederrhein (Weeze)",
"38|Nürnberg",
"39|Paderborn",
"40|Rostock",
"41|Saarbrücken",
"42|Salzburg (A)",
"43|Schwerin",
"44|Strasbourg (F)",
"45|Stuttgart",
"77|Warschau (PL)",
"46|Wien (A)",
"47|Zürich (CH)",
"48|Zweibrücken"];
