/**
*@fileoverview In dieser Datei werden Hilfsfunktionen für das kleine LMPS-Suchformular definiert
*/

var clearBothDiv      = '<div class="clearBoth"><img src="/images/spacer.gif" width="0" height="0" alt="" /></div>';
var flagShowDiv       = false;

var g_oTermine     = {};
var oKalHin, oKalRueck;

var IBE = new TTIBE("IBE",port,"bengine");
IBE.jsFiles = [
    '../../jslib/formulare/selectopt654.js',
    '../../jslib/core/datehelper.js',
    '../../jslib/core/zeitraum.js',
    '../../jslib/formulare/terminauswahl.js',
    '../../jslib/formulare/formbase.js',
    '../../jslib/core/reisende.js',
    '../../jslib/ttkalender/ferien.js',
    'js/search/ttkalender.js'
];

IBE.initOnLoad = function(){
    var mustHave = [
        'FormBase',
        'termin_min_'+this.port,
        'termin_max_'+this.port,
        'Zeitraum',
        'Reisende',
        'Terminauswahl',
        'TTAFH',
        'optDauer',
        'optKategorie',
        'DateHelperLoaded',
        'Kalender',
        'g_oFerien',
        'arrMarke_' + this.port
    ];
    var injObj   = {SucheLMPSKlein:[],Zeitraum:[],Reisende:[this.req['personen']]};
    for(var i in mustHave){
        if(typeof(window[mustHave[i]])=='undefined'){
            window.setTimeout("IBE.initOnLoad()",20);return;
        }
    }
    this.inject(injObj);this.init();
};

//___________________________________________________________________
/**
 * Globale Variablen
 * @ TTAFHDLC {Array} Abflughaefen (Quelle ttafh.js), muss evtl. angepasst werden
 */
var TTAFHDLC = new Array (
    'Nord;NORD',
    'Süd;SUED',
    'West;WEST',
    'Ost;OST',
    'Altenburg-Nobitz;AOC',
    'Amsterdam (NL);AMS',
    'Basel-Mulhouse (CH);BSL',
    'Berlin Brandenburg;BER',
    'Berlin-Schönefeld;SXF',
    'Berlin-Tegel;TXL',
    'Billund (DK);BLL',
    'Bremen;BRE',
    'Brüssel (B);BRU',
    'Dortmund;DTM',
    'Dresden;DRS',
    'Düsseldorf;DUS',
    'Eindhoven (NL);EIN',
    'Enschede (NL);ENS',
    'Erfurt;ERF',
    'Frankfurt;FRA',
    'Frankfurt-Hahn;HNH',
    'Friedrichshafen;FDH',
    'Genf (CH);GVA',
    'Graz (A);GRZ',
    'Groningen (NL);GRQ',
    'Hamburg;HAM',
    'Hannover;HAJ',
    'Innsbruck (A);INN',
    'Karlsruhe;FKB',
    'Klagenfurt (A);KLU',
    'Köln-Bonn;CGN',
    'Leipzig/Halle;LEJ',
    'Linz (A);LNZ',
    'Lübeck;LBC',
    'Lüttich (B);LGG',
    'Luxemburg;LUX',
    'Maastricht - Aachen (NL);MST',
    'Memmingen;FMM',
    'München;MUC',
    'Münster-Osnabrück;FMO',
    'Niederrhein (Weeze);NRN',
    'Nürnberg;NUE',
    'Paderborn;PAD',
    'Rostock;ROS',
    'Saarbrücken;SCN',
    'Salzburg (A);SZG',
    'Schwerin;SZW',
    'Strasbourg (F);SXB',
    'Stuttgart;STR',
    'Warschau (PL);WAW',
    'Wien (A);VIE',
    'Zürich (CH);ZRH',
    'Zweibrücken;ZQW'
);

/**
*eigene Optionsfelder
*/
var optDauerEXP;

var optSportangebotEXP=[
    "Beliebig;-1",
    "Tennis;0",
    "Golf;1",
    "Squash;2",
    "Radsport;3",
    "Wassersport;4",
    "Tauchen;5",
    "Reiten;6",
    "Wandern;7",
    "Surfen;8"
];

if(nurflug == '1'){
    optDauerEXP = [
        "Beliebig;-1",
        "3 Tage;0",
        "7 Tage;1",
        "10 Tage;2",
        "14 Tage;3",
        "21 Tage;4"
    ];
} else {
    optDauerEXP = [
        "Beliebig;-1",
        "Wie angegebene Daten;0",
        "2 Tage;6_2",
        "3 Tage;6_3",
        "4 Tage;6_4",
        "5 - 8 Tage;10",
        "1 Woche;6_7",
        "9 - 12 Tage;7",
        "2 Wochen;6_14",
        "13 - 15 Tage;3",
        "3 Wochen;6_21",
        "16 - 22 Tage;12",
        "> 22 Tage;13"
    ];

    var optKategorieEXP = [
        "Beliebig;-1",
        "2 Sterne und mehr;0",
        "3 Sterne und mehr;1",
        "4 Sterne und mehr;2",
        "5 Sterne;3"
    ];
}

var optReisendeEXP = {
    erw_short:["",""],
    kinder:["Jah.","Jahre"]
};

var optVerpflegung = [
    "Beliebig;-1",
    "nur Übernachtung (mind.);0",
    "Frühstück (mind.);1",
    "Halbpension (mind.);2",
    "Vollpension (mind.);3",
    "All Inclusive (mind.);4"
];

var optLcfilterEXP = {
     combiLcfilter   : [ {name : 'beliebig', value : '-1'},
                         {name : 'inklusive Transfer', value :  '512;0'},
                         {name : 'ohne Transfer', value :  '512;512'},
                         {name : 'inklusive Mietwagen', value :  '1;1'}
                       ]
 };
//___________________________________________________________________

/**
*@constructor
*@extends FormBase
*@requires Terminauswahl
*@requires Zielauswahl
*@requires Reisende
*@requires Kalender
*/

//___________________________________________________________________

function checkZielgebiet(){
    var bform=document.bengine;
    
    try {
        if(bform.flugdauer.selectedIndex!=(bform.flugdauer.length-1) && bform.detail.value!='zielgebiet') {
            document.bengine.detail.value='zielgebiet';
        }
    } catch(e) {
        
    }
}

//___________________________________________________________________

function SucheLMPSKlein(){
    FormBase.apply(this);
    //Terminauswahl.apply(this);

    //_______________________________________________________________

    this.BookingAction = function(detail){
        var bform, duration;

        bform    = document.forms[this.formname];

        disformelements('str_termine','Laender_Ref_ID','startposition','strError');
        bform.showresult.value='1';
        if (detail) {
            bform.detail.value=detail;
        }

        bform.termin.value      = parseInt(getTimestampFromString(bform.oKalHin_input.value) / 1000);
        bform.ruecktermin.value = parseInt(getTimestampFromString(bform.oKalRueck_input.value) / 1000);

        duration = bform.dauer.value;
        if (duration == '0') {
            bform.flextime.value = "2";
        } else {
            bform.flextime.value = "";
        }

        return this.chkFormular();
    };

    //_______________________________________________________________

    this.chkFormular = function(){
        var bform=document.forms[this.formname];

        if (bform.termin.value > bform.ruecktermin.value) {
            //if(this.req['termin']>this.req['ruecktermin']){
            alert("Ihr Rückreisedatum liegt vor dem Hinreisedatum");
            return false;
        }

        if (bform.abflughafen.value == '') {
            bform.abflughafen.value = abflughafen ? abflughafen : '';
        }

        bform.submit();
        return false;
    };

    //_______________________________________________________________

    this.init = function(){
        var defaultLabel = "Beliebig;-1", defaultLabel2 = "Beliebig;0";
        
        if(!document.bengine) return;

        // Kleine Korrekturen der Vorgaben (Default-Label soll immer "Beliebig" sein)
        optPreis[0]       = defaultLabel;
        optHbfges[0]      = defaultLabel2;
        optHbfanz[0]      = defaultLabel2;
        optHbfempf[0]     = defaultLabel2;
        optVerpflegung[0] = defaultLabel;
        optZimmer[0]      = defaultLabel;

        // Formularfelder füllen
        //--- Kalender starten --------------------------------------
        g_oTermine.tsTerminMin      = this.termin_min * 1000;
        g_oTermine.tsTerminMax      = this.termin_max * 1000;
        g_oTermine.tsSelTerminHin   = getTimestampFromString(this.termin_hin);
        g_oTermine.tsSelTerminRueck = getTimestampFromString(this.termin_rueck);

        oKalHin   = new Kalender('oKalHin', 'hin');
        oKalRueck = new Kalender('oKalRueck', 'rueck');

        oKalHin.init();
        oKalRueck.init();
        
        with(this){
            if(nurflug == '1') {
                fillSels({
                    'dauer'         : optDauer
                });
            } else {
                fillSels({
                    'dauer'         : optDauerEXP,
                    'kategorie'     : optKategorieEXP,
                    'verpflegung'   : optVerpflegung,
                    'zimmer'        : optZimmer
                });

                if (detail != "termine") {
                    fillSels({
                        "hbfges"        : optHbfges,
                        "hbfanz"        : optHbfanz,
                        "hbfempf"       : optHbfempf,
                        "preis"         : optPreis,
                        "sportangebot"  : optSportangebotEXP
                    });

                    // ----- Hotelname -----
                    setTexts(['shotel']);

                    // ----- Besondere Vorlieben -----
                    setChecks(['strand', 'sportmoeglichkeiten', 'familie_kinder', 'typ', 'wellness']);
                }
            }

            fillSels({
                'ferientermine' : optBundeslaender,
                'marke'         : window['arrMarke_' + this.port]
            });

            fillSelFromArray('abflughafen', TTAFH);
            fillReisende(optReisendeEXP);
        }

        // Reisedauer anpassen (falls flextime!)
        if (typeof window.flextime != 'undefined' && window.flextime == '2') {
            document.bengine.dauer.value = '0';
        }

        //--- ABFLUGHAEFEN ----------------------------------------
        printAFH();
        var strAbflughafen;
        if (abflughafen.search(/;/) == '-1') {
            if (abflughafen == '' || abflughafen == '-1') {
                document.getElementById('ttQuicksearchAfh').value = 'Beliebig';
            } else {
                if (abflughafen.search(',') != '-1') {
                    strAbflughafen = abflughafen;

                    if (abflughafen.length > 12) {
                        strAbflughafen = abflughafen.substring(0, 12) + '...';
                    }

                    document.getElementById('ttQuicksearchAfh').value = strAbflughafen;
                } else {
                    for (var i = 0; i < TTAFHDLC.length; i ++) {
                        var tmp = TTAFHDLC[i].split(';');

                        if (abflughafen == tmp[1]) {
                            document.getElementById('ttQuicksearchAfh').value = tmp[0];

                            break;
                        }
                    }
                }
            }
        }

        // ----- Transfer-Checkbox anzeigen/initialisieren -----
        this.setFormsForLcfilter(optLcfilterEXP);

        // ----- Finden-Button anzeigen -----
        var buttons = document.getElementsByName('btnFinden');
        for (i = 0; i < buttons.length; i++) {
            try {
                buttons[i].setAttribute("src",imgPfad+"/newqsm/aktualisieren.gif");
            }
            catch(e){}
        }

        // Set tracking code (ignore any errors)
        try {
            
        } catch (e) {
            // Do nothing
        }
    };

}

//___________________________________________________________________

function BookingAction(param){
    IBE.BookingAction(param);
}

/**
 * Funktion zum Ausblenden eines Divs
 * @ div {Int} Index des Divs
 */
function closeDivLabel(div) {
    if (div == 'cal') {
        var i = 1;

        while (document.getElementById('ttDiv' + i)) {
            document.getElementById('ttDiv' + i).style.display = 'none';

            i += 1;
        }
    } else {
        document.getElementById(div).style.display = 'none';
    }

    flagShowDiv = false;
}

/**
 * Funktion zum Einbleden eines Divs
 * @ div {Int} Index des Divs
 */
function showDivLabel(div) {
    saveKal();

    if (div == flagShowDiv) {
        jQuery('#' + div).hide("fast");

        flagShowDiv = false;
    } else {
        var i = 1;

        while (document.getElementById('ttDiv' + i)) {
            jQuery('#ttDiv' + i).hide("fast");

            i += 1;
        }

        jQuery('#' + div).show("fast");

        flagShowDiv = div;
    }
}

/**
 * Funktion zur Ermittlung der DLCs
 * @ str {String} Name des Abflughafens
 * @ return {String} Ermittelter DLC
 */
function getDLC(str) {
    var tmpArr = new Array()

    for (i = 0; i < TTAFHDLC.length; i ++) {
        tmpArr = TTAFHDLC[i].split(';');

        if (str == tmpArr[0]) {
            return tmpArr[1];
            break;
        }
    }
}

/**
 * Funktion zum Checken des Formular-Elements 'mafh'
 */
function fillAFH() {
    var c,cc;

    var tmp_afhArr = new Array();
    tmp_afhArr     = abflughafen.split(',');

    for (c = 0; c < document.bengine.mafh.length; c ++) {
        for (cc = 0; cc < tmp_afhArr.length; cc ++) {
            var tmp = document.bengine.mafh[c].value.split(';')[0] || '';

            if (tmp_afhArr[cc] == tmp) {
                document.bengine.mafh[c].checked = true;

                break;
            }
        }
    }
}

/**
 * Funktion zum Unchecken des Formular-Elements 'mafh'
 */
function killAFH() {
    for (c = 1; c < document.bengine.mafh.length; c ++) {
        document.bengine.mafh[c].checked = false;
    }

    //document.bengine.abflughafen.value = strAbflughaefen;
}

function checkKillBeliebig(id) {
    if (id.checked) {
        document.bengine.mafh[0].checked = false;
    }
}

/**
 * Funktion zum Fuellen des Formular-Elements 'abflughafen'
 * und zum Ausblenden des AFH-Divs
 */
function sendAFH(loc_status) {
    var strAbflughaefen = '';

    var cc = 0;

    for (var c = 1; c < document.bengine.mafh.length; c ++) {
        if (document.bengine.mafh[c].checked == true) {
            var tmp          = document.bengine.mafh[c].value.split(';')[0] || '';
            strAbflughaefen += tmp + ',';

            cc ++;
        }
    }

    if (strAbflughaefen == '') {
        strAbflughaefen = '-1';

        if (document.bengine.abflughafen.value != strAbflughaefen && detail == 'termine') {
            document.bengine.refresh.value = 1;
        }

        document.bengine.abflughafen.value = strAbflughaefen;
    } else {
        var len         = strAbflughaefen.length - 1;
        strAbflughaefen = strAbflughaefen.substr(0, len);

        if (cc > 1) {
            if (document.bengine.abflughafen.value != strAbflughaefen && detail == 'termine') {
                document.bengine.refresh.value = 1;
            }

            document.bengine.abflughafen.value = strAbflughaefen;
        } else if (cc == 1) {
            for (i = 0; i < TTAFHDLC.length; i ++) {
                tmpArr = TTAFHDLC[i].split(';');

                if (tmpArr[1] == strAbflughaefen) {
                    for (ii = 0; ii < TTAFH.length; ii ++) {
                        tmpArr2 = TTAFH[ii].split(';');

                        if (tmpArr2[0] == tmpArr[0]) {
                            xx = ii + 2;

                            if (document.bengine.abflughafen.value != strAbflughaefen && detail == 'termine') {
                                document.bengine.refresh.value = 1;
                            }

                            document.bengine.abflughafen.value = strAbflughaefen;

                            var flagAFH = tmpArr[0].replace(/ - /g, '-');

                            break;
                        }
                    }
                }
            }
        }
    }

    if (strAbflughaefen != '-1' && strAbflughaefen.length > 12) {
        strAbflughaefen = strAbflughaefen.substring(0, 12) + '...';
    }

    if (flagAFH) {
        flagAFH = flagAFH.replace('Luxemburg', 'Luxemburg (L)');
    }

    var currentValue = document.getElementById('ttQuicksearchAfh').value;
    var newValue     = strAbflughaefen == '-1' ? 'Beliebig' : (strAbflughaefen.search(/,/) == '-1' && flagAFH ? flagAFH : strAbflughaefen);

    document.getElementById('ttQuicksearchAfh').value = newValue;

    // Click-Tracking, when value has changed.
    if (newValue != currentValue) {
        tt_omniClickTrack(document.getElementById('ttQuicksearchAfh'), '3PP:TT:SrchWzd:DepFrom');
    }

    if (typeof loc_status == 'undefined') {
        document.getElementById('ttDiv1').style.display = 'none';
    }
}

/**
 * Funktion zum Schreiben des AFH-Divs. In 'columns' laesst sich die Anzahl der
 * Spalten aendern.
 * 
 * @return false
 */
function printAFH() {
    var i, strAusgabe, tmpArr, afhNameArr, afhDLCArr, countAfh, columns, max, z, s, akt, akt2;

    strAusgabe = '';
    tmpArr     = new Array();
    afhNameArr = new Array();
    afhDLCArr  = new Array();

    if (TTAFH[0] != '') {
        var mouseAfhEvents = '';

        for (i = 0; i < TTAFH.length; i ++) {
            tmpArr        = TTAFH[i].split(';');
            afhNameArr[i] = tmpArr[0].replace(/ - /g, '-');
            afhDLCArr[i]  = getDLC(tmpArr[0]) + ';' + tmpArr[1];
        }

        countAfh  = afhNameArr.length;
        columns = 3;
        max     = Math.ceil(countAfh / columns);
        akt     = 0;
        akt2    = 1;

        strAusgabe += '<div class="ttAfhContent">';
        strAusgabe += '    <div class="ttAfhCB"><input type="checkbox" class="ttAfhCheckbox" name="mafh" id="mafh_0" value="-1" onclick="killAFH(); sendAFH(1);"></div>';
        strAusgabe += '    <div class="ttAfhTxt"><label for="mafh_0" class="ttAfhTextlabel"' + mouseAfhEvents +'>beliebiger Abflughafen</label></div>';
        strAusgabe += '    <div class="clearBoth"><img src="/images/spacer.gif" alt="" width="0" height="0"></div>';
        strAusgabe += '    <div class="ttAfhTopSep"></div>';

        for (z = 0; z < max; z ++) {
            for (s = 0; s < columns; s ++) {
                akt = z + (s * max);

                if (afhDLCArr[akt] != '' && afhDLCArr[akt] != undefined) {
                    strAusgabe += ' <div class="ttAfhCB"><input type="checkbox" class="ttAfhCheckbox" name="mafh" id="mafh_' + akt2 + '" value="' + afhDLCArr[akt] + '" onclick="checkKillBeliebig(this); sendAFH(1);"></div>';
                    strAusgabe += ' <div class="ttAfhTxt"><label for="mafh_' + akt2 + '" class="ttAfhTextlabel"' + mouseAfhEvents +'>' + afhNameArr[akt] + '</label></div>';

                    akt2 += 1;
                }
            }

            strAusgabe += '         <div class="clearBoth"><img src="/images/spacer.gif" alt="" width="0" height="0"></div>';
        }

        strAusgabe += '             <div class="ttAfhSpacer"><img src="/images/spacer.gif" alt="" width="0" height="0"></div>';
        strAusgabe += '             <div class="ttAfhSenden">';
        strAusgabe += '                 <div class="ttAfhSendenText" onclick="flagShowDiv = false; sendAFH();"></div>';
        strAusgabe += '                 <div class="clearBoth"><img src="/images/spacer.gif" alt="" width="0" height="0"></div>';
        strAusgabe += '             </div>';
        strAusgabe += '         </div>';
        strAusgabe +=       clearBothDiv;

        jQuery('#ttDiv1').html(generateDropdown(1, 1, 'Afh', strAusgabe));
        fillAFH();
    }
    return false;
}


/**
 * Generiert ein Dropdown
 *
 * @param divId       Die ID des umschliessenden Divs fuer den Schliessen-Button
 * @param divClassNr  Die Zahl der Klasse der Rahmenelemente
 * @param divName     Name der Klasse der inneren Elemente des Dropdowns
 * @param content     Der HTML-Content des Dropdowns
 */
function generateDropdown(divId, divClassNr, divName, content) {
    var ttClass   = 'ttDiv' + divClassNr;

    var strAusgabe = '';
    strAusgabe += '<div class="ttDiv1LT ttIePngFix"><img src="/images/spacer.gif" alt="" border="0" width="1" height="1" /></div>';
    strAusgabe += '<div class="' + ttClass + 'CT ttIePngFix"><img src="/images/spacer.gif" alt="" border="0" width="1" height="1" /></div>';
    strAusgabe += '<div class="ttDiv1RT ttIePngFix"><img src="/images/spacer.gif" alt="" border="0" width="1" height="1" /></div>';
    strAusgabe += clearBothDiv;
    strAusgabe += '<div class="' + ttClass + 'LM ttIePngFix"><img src="/images/spacer.gif" alt="" border="0" width="1" height="1" /></div>';
    strAusgabe += '<div class="' + ttClass + 'CM ttIePngFix">';
    strAusgabe +=     '<div class="tt' + divName + 'Container">';
    strAusgabe +=         '<div class="tt' + divName + 'Iframe">';
    strAusgabe +=             '<iframe src="about:blank" border="0" frameborder="0" style="background-color: #fff;"></iframe>';
    strAusgabe +=         '</div>';
    strAusgabe +=         '<div class="tt' + divName + 'Body">';
    strAusgabe +=             '<div class="tt' + divName + 'Headline">';
    strAusgabe +=                 '<div class="tt' + divName + 'HeadlineClose" onmouseover="jQuery(this).addClass(\'tt' + divName + 'HeadlineCloseHover\');" onmouseout="jQuery(this).removeClass(\'tt' + divName + 'HeadlineCloseHover\');" onclick="flagShowDiv=false;document.getElementById(\'ttDiv' + divId + '\').style.display=\'none\';" title="Schlie&szlig;en">Schlie&szlig;en</div>';
    strAusgabe +=                 clearBothDiv;
    strAusgabe +=             '</div>';
    strAusgabe +=          content;
    strAusgabe +=         '</div>';
    strAusgabe +=     '</div>';
    strAusgabe += '</div>';
    strAusgabe += '<div class="' + ttClass + 'RM ttIePngFix"><img src="/images/spacer.gif" alt="" border="0" width="1" height="1" /></div>';
    strAusgabe += clearBothDiv;
    strAusgabe += '<div class="ttDiv1LB ttIePngFix"><img src="/images/spacer.gif" alt="" border="0" width="1" height="1" /></div>';
    strAusgabe += '<div class="' + ttClass + 'CB ttIePngFix"><img src="/images/spacer.gif" alt="" border="0" width="1" height="1" /></div>';
    strAusgabe += '<div class="ttDiv1RB ttIePngFix"><img src="/images/spacer.gif" alt="" border="0" width="1" height="1" /></div>';
    strAusgabe += clearBothDiv;

    return strAusgabe;
}

/**
 * Frontendbehandlung fuer Buttongrafik "Weitere Suchoptionen". Es existieren
 * 4 Zustaende der Buttongrafik. Diese Funktion wechselt die Zustaende beim Event
 * "onclick". Folgende Zustaende sind definiert in der Buttongrafik:
 *
 * - Normalzustand bei eingeklappten Extra-Optionen (ohne CSS-Klasse)
 * - Hoverzustand bei eingeklappten Extra-Optionen (quickFinderExtParamButtonHover)
 * - Normalzustand bei ausgeklappten Extra-Optionen (quickFinderExtParamButtonSelected)
 * - Hoverzustand bei ausgeklappten Extra-Optionen (quickFinderExtParamButtonSelectedHover)
 *
 * Die Funktion benoetigt keine Parameter.
 *
 * @example <img id="quickFinderExtParamButtonID" src="/images/spacer.gif" width="126" height="13" alt="Weitere Suchoptionen" onclick="toggleWeitereSuchoptionen();" onmouseover="toggleWeitereSuchoptionenHover(1);"  onmouseout="toggleWeitereSuchoptionenHover(0);" />
 *
 * @return void
 */
function toggleWeitereSuchoptionen () {
    // Toggle display
    jQuery(".quickFinderExtParams").slideToggle("fast", function () {
        // Fuer Click-Tracking: Es gibt für den Toggle-Button 2 verschiedene
        // Referrer-IDs, die ebenfalls abwechseln müssen
        var rfrrObj= document.getElementById("quickFinderExtParamButtonID");
        var rfrrID = jQuery("#quickFinderExtParamButtonID").attr('rfrrID');

        tt_omniClickTrack (rfrrObj, rfrrID);

        if (rfrrID == '3PP:TT:SrchWzd:ShowMore') {
            rfrrID = '3PP:TT:SrchWzd:Hide';
        } else {
            rfrrID = '3PP:TT:SrchWzd:ShowMore';
        }

        jQuery("#quickFinderExtParamButtonID").attr('rfrrID', rfrrID);
    });

    // Buttongrafik austauschen
    if (jQuery("#quickFinderExtParamButtonID").hasClass("quickFinderExtParamButtonSelected")) {
        jQuery("#quickFinderExtParamButtonID").removeClass("quickFinderExtParamButtonSelected");
    } else {
        jQuery("#quickFinderExtParamButtonID").addClass("quickFinderExtParamButtonSelected");
    }

    // Hovergrafik wechseln
    if (jQuery("#quickFinderExtParamButtonID").hasClass("quickFinderExtParamButtonSelectedHover")) {
        jQuery("#quickFinderExtParamButtonID").removeClass("quickFinderExtParamButtonSelectedHover").addClass("quickFinderExtParamButtonHover");
    } else if (jQuery("#quickFinderExtParamButtonID").hasClass("quickFinderExtParamButtonHover")) {
        jQuery("#quickFinderExtParamButtonID").removeClass("quickFinderExtParamButtonHover").addClass("quickFinderExtParamButtonSelectedHover");
    }
}

/**
 * Fontendbehandlung fuer Buttongrafik "Weitere Suchoptionen". Es existieren
 * 4 Zustaende der Buttongrafik. Diese Funktion wechselt die Zustaende bei den
 * Events "onmouseover", bzw. "onmouseout". Folgende Zustaende sind definiert:
 *
 * - Normalzustand bei eingeklappten Extra-Optionen (ohne CSS-Klasse)
 * - Hoverzustand bei eingeklappten Extra-Optionen (quickFinderExtParamButtonHover)
 * - Normalzustand bei ausgeklappten Extra-Optionen (quickFinderExtParamButtonSelected)
 * - Hoverzustand bei ausgeklappten Extra-Optionen (quickFinderExtParamButtonSelectedHover)
 *
 * @param modus 0 - Wird beim Event "onmouseout" uebergeben
 *              1 - Wird beim Event "onmouseover" uebergeben
 *
 * @example <img id="quickFinderExtParamButtonID" src="/images/spacer.gif" width="126" height="13" alt="Weitere Suchoptionen" onclick="toggleWeitereSuchoptionen();" onmouseover="toggleWeitereSuchoptionenHover(1);"  onmouseout="toggleWeitereSuchoptionenHover(0);" />
 *
 * @return void
 */
function toggleWeitereSuchoptionenHover(modus) {
    var hoverClass;

    // Aktueller Status?
    if (jQuery("#quickFinderExtParamButtonID").hasClass("quickFinderExtParamButtonSelected")) {
        hoverClass = "quickFinderExtParamButtonSelectedHover";
    } else {
        hoverClass = "quickFinderExtParamButtonHover";
    }

    // Welches Event?
    if (modus == 1) {
        jQuery("#quickFinderExtParamButtonID").addClass(hoverClass);
    } else if (modus == 0) {
        jQuery("#quickFinderExtParamButtonID").removeClass("quickFinderExtParamButtonHover quickFinderExtParamButtonSelectedHover");
    }
}

/**
 * Frontendbehandlung fuer die Selectbox "Verpflegung" in Kombination mit der
 * Checkbox "all_inclusive", die voneinander abhaengig gemacht werden. Aufgerufen
 * wird diese Funktion jeweils durch das "onchange"-Event des HTML-Elements.
 *
 * Folgende Regeln sind implementiert:
 * - Ist "Beliebig" in der Selectbox "verpflegung" ausgewählt:
 *   -> Checkbox: Klickbar, aber nicht gecheckt
 * - Ist "All Inclusive" in der Selectbox "verpflegung" ausgewählt:
 *   -> Checkbox: Klickbar und gecheckt
 * - In allen anderen Optionen der Selectbox "verpflegung":
 *   -> Checkbox: Nicht klickbar, nicht gecheckt
 * - Wird Checkbox "all_inclusive" gecheckt:
 *   -> Selectbox wird auf den Wert "All inclusive" gesetzt
 * - Wird Checkbox "all_inclusive" ent-checkt:
 *   -> Selectbox wird auf den Wert "Beliebig" gesetzt.
 *
 *   @param id : Name des geaenderten Elements ("verpflegung" / "all_inclusive")
 *
 *   @return void
 *
 */
function checkForVerpflegungAllInclusive (id) {
    var jQV, jQAI;

    jQV    = jQuery ("#verpflegung");
    jQAI   = jQuery ("#all_inclusive");

    if (id == "verpflegung") {
        switch (jQV.val()) {
            case '-1':
                jQAI.removeAttr("disabled").removeAttr("checked");
                break;
            case '4' :
                jQAI.removeAttr("disabled").attr("checked", true);
                break;
            default  :
                jQAI.attr("disabled", true).removeAttr("checked");
        }
    } else if (id == "all_inclusive") {
        jQV.val(jQAI.attr("checked") ? "4" : "-1");
    }
}

function ferienOnChange(selBox){
  g_strFerienSelect = selBox.value;
  oKalHin.updateCalendar();
  oKalRueck.updateCalendar();
}


function ferienartOnChange(selBox){
  g_strFerienartSelect = selBox.value;
  oKalHin.updateCalendar();
  oKalRueck.updateCalendar();
}

/**
 * Function for RFRR ID tracking (Omniture)
 * Will be used to bind to input fields and selectboxes. (onchange)
 * Clicktracking can be switch on and off by defining the JavaScript-variable
 * 'ttDontClickTrack=true;'
 *
 * @param obj Fireing object
 * @param rfrrID Rfrr ID for New Search Wizard on TT page
 */
function tt_omniClickTrack (obj, rfrrID) {
    if (typeof ttDontClickTrack == 'undefined' || ttDontClickTrack === false) {
        try {
          s_exp               = s_gi (s_exp_account);
          s_exp.linkTrackVars = 'prop16,eVar28';
          s_exp.linkTrackVars = 'prop16,eVar28';
          s_exp.prop16        = rfrrID;
          s_exp.eVar28        = rfrrID;
          s_exp.tl(obj,'o', 'RFRRActionLink');
        } catch (e) {
            // just catch, don't do something else.
        }
    }
}

