/**
 * Datei zum Handlen der Formular-Lables 
 *
 * LICENSE: ...
 *
 * @copyright  2010 Traveltainment
 * @author     Guido Buchholz
 * @version    1.1
 * @link       http://www.vidado.com/booking/its/js/serach/ttLabels.js
 * @since      Datei vorhanden seit 19.02.2010
 * @license    ...
 */
 
/**
 * Globale Variablen
 * @ tmpErw {String} Zwischenspeicher fuer Erwachsenen-Berechnung
 * @ tmpChild {Array} Zwischenspeicher fuer Kinder-Berechnung
 * @ flagShowDiv {Boolean} Kenner, ob ein Div geoeffnet ist
 * @ flagLoad {Boolean} Kenner, ob die Regionen geladen sind
 * @ flagUThema {Boolean} Kenner, ob Uthema-Label geschrieben wurde
 * @ ttFlagWroteRegion {Boolean} Kenner, ob die Ziele in die Labels geschreiben wurden
 */
var tmpErw;
var tmpChild          = new Array();
var flagShowDiv       = false;
var flagLoad          = false;
var flagUThema        = false;
var ttFlagWroteRegion = false;


var ttLabels = {
    uThema : new Array(
        '0|beliebig',
        '1_10|Ski',
        '1_11|Urlaub in Deutschland',
        '1_16|Urlaub in &Ouml;sterreich',
        '2_1|Urlaub in den Bergen',
        '1_13|Badeurlaub Nord- &amp; Ostsee',
        '1_14|Badeurlaub am Mittelmeer',
        '1_15|Badeurlaub in der Ferne',
        '2_3|Familienurlaub',
        '1_12|Wellness',
        '2_4|St&auml;dtereisen'
    ),
    
    cats : new Array(
        '-1|beliebig',
        '0|mind. 2 Sterne',
        '1|mind. 3 Sterne',
        '2|mind. 4 Sterne',
        '3|mind. 5 Sterne'
    ),
    boards : new Array(
        '-1|beliebig',
        '0|Übernachtung',
        '1|Frühstück',
        '2|Halbpension',
        '3|Vollpension',
        '4|Alles inklusive'
    ),
    duration : new Array(
        '0|exakt wie angegeben',
        '-1|beliebig',
        '9|1 - 4 Tage',
        '10|5 - 8 Tage',
        '6_7|1 Woche',
        '7|9 - 12 Tage',
        '3|13 - 15 Tage',
        '6_14|2 Wochen',
        '12|16 - 22 Tage',
        '6_21|3 Wochen',
        '13|&gt; 22 Tage'
    ),
    zimmer : new Array(
        '-1|beliebig',
        '5|Einzelzimmer',
        '6|Doppelzimmer',
        '2|Familienzimmer',
        '0|Bungalow',
        '7|Studio/Apartment'
    ),
    hotelmarke : new Array(
        '-1|beliebig',
        '20|CLUB CALIMERA',
        '21|LTI Hotels',
        '17|Iberostar'
    ),
    preis : new Array(
        '-1|egal',
        '8_350|bis 350 Euro',
        '8_500|bis 500 Euro',
        '8_750|bis 750 Euro',
        '8_1000|bis 1000 Euro'
    ),    
    hbfges : new Array(
        '40|mind. 4.0 von 6.0',
        '50|mind. 5.0 von 6.0',
        '60|mind. 6.0 von 6.0'
    ),
    hbfanz : new Array(
        '2|mind. 2',
        '5|mind. 5',
        '10|mind. 10'
    ),
    hbfempf : new Array(
        '800|mind. 80 %',
        '900|mind. 90 %',
        '1000|mind. 100 %'
    ),
    hdetails : new Array(
        '0|Parkplatz vorhanden',
        '1|Internetzugang',
        '2|Hallenbad',
        '3|Zentrale Lage',
        '4|Wellness',
        '5|Fitness'
    ),
    order : new Array(
        '-1|Sortieren nach',
        '1|Preis',
        '2|Name',
        '3|Sterne',
        '4|Bewertung',
        '5|Entfernung'
    ),

    getLabel: function (src, value) {
        var firstVal = null;
        for (var i = 0; i < src.length; i++) {
            var tmp = src[i].split('|');
            if (tmp[0] == value) {
                if (src.toString().search(/exakt wie angegeben/) != '-1' && 
                    tmp[0].search(/6_/) != '-1' && flextime == '2') {
                    return 'exakt wie angegeben';
                } else {
                    return tmp[1];
                }
            } else if (i == 0) {
                firstVal = tmp[1];
            }
        }
        return firstVal;
    }
};

/**
 * Generiert ein Dropdown
 * @param int    divId      Die ID des umschliessenden Divs für den Schliessen-Button
 * @param int    divClassNr Die Zahl der Klasse der Rahmenelemente
 * @param string divName    Name der Klasse der inneren Elemente des Dropdowns
 * @param string title      Der Titel des Dropdowns
 * @param string content    Der HTML-Content des Dropdowns
 */
function generateDropdown(divId, divClassNr, divName, title, content, fixedHeight) {
    var ttClass   = 'ttDiv' + divClassNr;
    var boxHeight = typeof fixedHeight != undefined && fixedHeight != '' ? ' style="height: ' + fixedHeight + ';"' : '';
    var frmHeight = typeof fixedHeight != undefined && fixedHeight != '' ? 'height: ' + fixedHeight + ';' : '';
    
    if (divName == '') {
        divName = 'Dropdown';
    }

    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"' + boxHeight + '><img src="/images/spacer.gif" alt="" border="0" width="1" height="1" /></div>';
    strAusgabe += '<div class="' + ttClass + 'CM ttIePngFix"' + boxHeight + '>';
    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;' + frmHeight + '"></iframe>';
    strAusgabe +=         '</div>';
    strAusgabe +=         '<div class="tt' + divName + 'Body">';
    strAusgabe +=             '<div class="tt' + divName + 'Headline">';
    strAusgabe +=                 '<div class="tt' + divName + 'HeadlineTitle">' + title + '</div>';
    strAusgabe +=                 '<div class="tt' + divName + 'HeadlineClose" onclick="flagShowDiv=false;document.getElementById(\'ttDiv' + divId + '\').style.display=\'none\';" title="schließen">x</div>';
    strAusgabe +=                 clearBothDiv;
    strAusgabe +=             '</div>';
    
    strAusgabe += content;
    
    if (title == 'Hotelbewertung' || title == 'Familienurlaub' || title == 'Sonstiges' || title == 'Hoteldetails') {
        strAusgabe +=         '<div class="ttUebernehmenArrow" onclick="flagShowDiv = false; document.getElementById(\'ttDiv' + divId + '\').style.display=\'none\';" onmouseover="this.className=\'ttUebernehmenArrowActive\'" onmouseout="this.className=\'ttUebernehmenArrow\'">';
        strAusgabe +=             '<img src="/images/spacer.gif" alt="" border="0" width="1" height="1">';
        strAusgabe +=         '</div>';
        strAusgabe +=         '<div class="ttUebernehmenTxt" onclick="flagShowDiv = false; document.getElementById(\'ttDiv' + divId + '\').style.display=\'none\';">';
        strAusgabe +=             '&Uuml;bernehmen';
        strAusgabe +=         '</div>';
        strAusgabe +=             clearBothDiv;
    }
    
    strAusgabe +=         '</div>';
    strAusgabe +=     '</div>';
    strAusgabe += '</div>';
    strAusgabe += '<div class="' + ttClass + 'RM ttIePngFix"' + boxHeight + '><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;
}

function generateRadioSelect(title, inputName, inputId, inputValue, onChange, checked) {
    var strAusgabe = '';
    strAusgabe += '<div class="ttDropdownCB"><input type="radio" name="' + inputName + '" id="' + inputId + '" value="' + inputValue + '" onchange="' + onChange + '" ' + (checked ? 'checked="checked" ' : '') + '/></div>';
    strAusgabe += '<div class="ttDropdownTxt"><label for="' + inputId + '">' + title + '</label></div>';
    strAusgabe += clearBothDiv;
    return strAusgabe;
}

function generateCheckboxSelect(title, inputName, inputId, inputValue, onChange, checked) {
    var strAusgabe = '';
    strAusgabe += '<div class="ttDropdownCB"><input type="checkbox" name="' + inputName + '" id="' + inputId + '" value="' + inputValue + '" onchange="' + onChange + '" ' + (checked ? 'checked="checked" ' : '') + '/></div>';
    strAusgabe += '<div class="ttDropdownTxt"><label for="' + inputId + '">' + title + '</label></div>';
    strAusgabe += clearBothDiv;
    return strAusgabe;
}

/**
 * Funktion zum Schreiben der Erwachsenen ins Label
 * @ anz {String} anzahl Erwachsene
 */
function setAdults(anz) {
    var erwValue = '25';
    
    for (var i = 1; i < anz; i++) {
        erwValue += ';25';
    }
    
    if (document.bengine.erwachsene && document.bengine.erwachsene.value != erwValue && detail == 'termine') {
        document.bengine.refresh.value = 1;
    }
     
    if (document.bengine.erwachsene) {
        document.bengine.erwachsene.value = erwValue;
    }
    
    // Problem der Search (max 8 Personen) handeln
    handle8PersProblem(anz);

    document.getElementById('ttQuicksearchAdults').innerHTML = anz + ' Pers.';
    
    tmpErw = anz;
    
    printAdults();
}

/**
 * Da die Search nur maximal 8 Personen suchen kann, muss bei 6 gewaehlten Erwachsenen
 * die Zahl der Kinder von 3 auf 2 beschränkt werden
 */
function handle8PersProblem(anz) {
    var id          =   '#ttQuicksearchChild3';
    var cls_act     =   'ttQuicksearchSel66';
    var cls_act_in  =   cls_act + 'Inactive';
    
    if(anz == 6) {
        // Altersauswahl des dritten Kindes zuruecksetzen
        if(document.bengine.alter3.value != '-1' && document.bengine.alter3.value != '') {
            setchildren('3', -1);
        }
        
        // drittes Kind deaktivieren:
        
        // aktive CSS-Klasse entfernen
        $(id).removeClass(cls_act);
        // inaktive CSS-Klasse hinzufuegen
        $(id).addClass(cls_act_in);
        // Click-Event zum Anzeigen der Labels entfernen
        $(id).unbind('click');
    } else {
        // drittes Kind aktivieren:
        
        if(!$(id).hasClass(cls_act)) {
            // aktive CSS-Klasse hinzufuegen
            $(id).addClass(cls_act);
        }
        if($(id).hasClass(cls_act_in)) {
            // inaktive CSS-Klasse entfernen
            $(id).removeClass(cls_act_in);
        }
        $(id).click(function() {
            // Click-Event zum Anzeigen der Labels hinzufuegen
            showDivLabel('ttDiv8');
        });
    }
}

/**
 * Funktion zum Schreiben der Erwachsenen ins Div
 */
function printAdults() {
    var strAusgabe = '';

    strAusgabe += '<div class="ttErwSubline">';
    strAusgabe += '    Bei mehr als 6 Teilnehmern erstellt Ihnen das <a href="http://www.its.de/service-hilfe/kontakt/reiseberatung.php" target="_blank">Online-Service-Center</a> gerne ein individuelles Angebot.<br>Kinder unter 2 Jahren werden dabei nicht als Reiseteilnehmer gezählt und reisen kostenlos.';
    strAusgabe += '</div>';

    var val      = '';
    var per      = personen.split(';');
    var countPer = 0;
    
    for (var i = 0; i < per.length; ++i) {
        if (per[i] != '' && per[i] > 16) {
            countPer += 1;
        }
    }
    
    for (var i = 1; i <= 6; ++i) {
        if (i % 3 == 1) {
            strAusgabe += '<div class="ttDoubleCol' + (i == 1 ? 'Left' : 'Right') + '">';
        }
    
        var classBG = i == countPer && !tmpErw || tmpErw && parseInt(tmpErw) == i || countPer == 0 && i == 2 ? ' ttPersonLabelActive' : 'ttPersonLabel';
        strAusgabe += '<div class="' + classBG + '" onclick="setAdults(' + i + ');closeDivLabel(\'ttDiv5\');">' + i + '</div>';
        
        if (i % 3 == 0) {
            strAusgabe += '</div>';
        }
    }

    //$('#ttDiv5').html(generateDropdown(5, 5, 'Erw', 'Erwachsene', strAusgabe)); 
    document.getElementById('ttDiv5').innerHTML = generateDropdown(5, 5, 'Erw', 'Erwachsene', strAusgabe);
}

/**
 * Funktion zum Schreiben der Kinder in die Labels
 * @ child {String} Kind
 * @ age {String} Alter des Kindes
 */
function setchildren(child, age) {
    var strAge;
    
    // uebermitteltes Alter speichern
    if((child == 1 || child == 2 || child == 3) && document.bengine['alter' + child]) {
        if(document.bengine['alter' + child].value != age && detail == 'termine') {
            document.bengine.refresh.value = child;
        }
        document.bengine['alter' + child].value = (age != '' ? age : '-1');
    }
    
    // pruefen ob alle Kinderaltersangaben gesetzt sind
    for(var i = 1; i < 4; ++i) {
        if(document.bengine['alter' + i].value == '') {
            document.bengine['alter' + i].value = '-1';
        }
        tmpChild[i] = document.bengine['alter' + i].value;
        // Ausgabe Label
        if (tmpChild[i] == -1) {
            strAge = 'Alter';
        } else if (tmpChild[i] == 1) {
            strAge = '< 2 J.';
        } else {
            strAge = tmpChild[i]+' J.';
        }
        document.getElementById('ttQuicksearchChild' + i).innerHTML = strAge;
    }

    var c = children.split(';');
    for (var i = 0; i <= c.length; i ++) {
        if (i + 1 == child) {
            c[i] = age;
        }
    }
    children = '';
    for (var i = 0; i < c.length; i ++) {
        children += c[i] + ';';
    }
    children = children.substring(0, children.length - 1);
    
    // Aufbau Labels
    printChildren();
}

/**
 * Funktion zum Schreiben der Kinder in die Divs
 */
function printChildren() {
    var val        = '';
    var child      = children.split(";");
    var countChild = 0;
    var ageChild   = new Array();
    var flagChild  = new Array();
    
    for (var i = 0; i < child.length; i ++) {
        if (child[i] != 25) {
            ageChild[countChild] = child[i];
            countChild += 1;
        }
    }
    
    for(var i = 0; i < 3; i ++) {
        flagChild[i] = ageChild[i] ? ageChild[i] : '-1';
    }
    
    for (var k = 1; k <= 3; k ++) {
        var numK = k + 5;
        var strAusgabe = '';

        for (var i = 1; i <= 16; i ++) {
	        if (i == 1 || i == 9) strAusgabe += '<div class="ttDoubleCol' + (i == 1 ? 'Left' : 'Right ttDoubleColRightChild') + '">';
	        if (i == 1) {
	            // Kein Kind
	            var classBG = !tmpChild[k] && (!ageChild[k - 1] || -1 == ageChild[k - 1]) || tmpChild[k] == -1 ? ' ttPersonLabelActive' : 'ttPersonLabel';
                strAusgabe += '<div class="' + classBG + '" onclick="setchildren(\'' + k + '\', -1);closeDivLabel(\'ttDiv' + numK + '\');">---</div>';
	        }
	    
            var classBG = !tmpChild[k] && ageChild[k - 1] && i == ageChild[k - 1] || tmpChild[k] == i ? ' ttPersonLabelActive' : 'ttPersonLabel';
	        strAusgabe += '<div class="' + classBG + '" onclick="setchildren(\'' + k + '\', ' + i + ');closeDivLabel(\'ttDiv' + numK + '\');">' + (i == 1 ? '&lt; 2' : i) + ' Jahre</div>';
	
	        if (i == 8 || i == 16) strAusgabe += '</div>';
        }
        //$('#ttDiv' + numK).html(generateDropdown(numK, 6, 'Kind', 'Kind ' + k, strAusgabe));
        document.getElementById('ttDiv' + numK).innerHTML = generateDropdown(numK, 6, 'Kind', 'Kind ' + k, strAusgabe);
    }
}

function setFlexTime(elem) {
    var bform = document.forms['bengine'];
    
    if (elem == "0") {
        bform.flextime.value = '2'; 
    } else if (flagLoad) {
        bform.flextime.value = ''; 
    }
}  
/**
 * Funktion zum Schreiben der Reisedauer ins Label
 * @ dur {String} Wert der Reisedauer
 */
function setDuration(dur) {
    if (document.bengine.dauer.value != dur && detail == 'termine') {
        document.bengine.refresh.value = 1;
    }
    
    if (document.bengine.dauer) {
        if (dur != "0") {
            document.bengine.dauer.value = dur;
        }
    }
    
    setFlexTime(dur);
    
    var strDuration = ttLabels.getLabel(ttLabels.duration, dur);
    
    if (strDuration.length > 15) {
        strDuration = strDuration.substring(0, 13) + '...';
    }
    
    //$('#ttQuicksearchDuration').html(strDuration);
    document.getElementById('ttQuicksearchDuration').innerHTML = strDuration;
    
    printDuration();
}

/**
 * Funktion zum Schreiben der Reisedauer ins Div
 */
function printDuration() {
    var strAusgabe = '';
    
    var tmpDurTop = ttLabels.duration[0].split('|');
    
    var classBGTop = flextime == 2 ? ' ttStdLabelActive ttStdLabelFirst' : 'ttStdLabel ttStdLabelFirst';
    strAusgabe += '<div class="' + classBGTop + '" onclick="setDuration(\'' + tmpDurTop[0] + '\');closeDivLabel(\'ttDiv4\');">' + tmpDurTop[1] + '</div>';
    
    for (var i = 1; i < ttLabels.duration.length; i ++) {
        var tmpDur = ttLabels.duration[i].split('|');
        if (i == 1 || i == 6) strAusgabe += '<div class="ttDoubleCol' + (i == 1 ? 'Left' : 'Right') + '">';
        
        var classBG = dauer == tmpDur[0] || i == 1 && (!dauer || dauer == '') ? ' ttStdLabelActive' : 'ttStdLabel';
        strAusgabe += '<div class="' + classBG + '" onclick="setDuration(\'' + tmpDur[0] + '\');closeDivLabel(\'ttDiv4\');">' + tmpDur[1] + '</div>';
        
        if (i == 5 || i == 10) strAusgabe += '</div>';
    }

    //$('#ttDiv4').html(generateDropdown(4, 4, 'Dauer', 'Reisedauer', strAusgabe, '184px')); //
    //$('#ttDiv4').html(generateDropdown(4, 4, 'Dauer', 'Reisedauer', strAusgabe)); 
    
    document.getElementById('ttDiv4').innerHTML = generateDropdown(4, 4, 'Dauer', 'Reisedauer', strAusgabe, '184px');
}

/**
 * Funktion zum Schreiben der Hoteldetails ins Label
 * @ value {String} Wert des Details
 */
function setHDetails(value) {
    hdetails_kenner = toggleBit(hdetails_kenner, value);
    if (document.bengine.hdetails_kenner.value != hdetails_kenner && detail == 'termine') {
        document.bengine.refresh.value = 1;
    }
    document.bengine.hdetails_kenner.value = hdetails_kenner;
    
    // Bitwerte den entsprechenden Well- und Hotelbits zuweisen
    switch(value) {
        // Parkplatz vorhanden
        case 0:
            wellbit4 = toggleBit(wellbit4, 13);
            document.bengine.WellBit4.value = wellbit4;
            break;

        // Internetzugang
        case 1:
            wellbit4 = toggleBit(wellbit4, 14);
            document.bengine.WellBit4.value = wellbit4;
            break;

        // Hallenbad
        case 2:
            hotelbit = toggleBit(hotelbit, 1);
            document.bengine.HotelBit.value = hotelbit;
            break;

        // Zentrale Lage
        case 3:
            hotelbit2 = toggleBit(hotelbit2, 5);
            document.bengine.HotelBit2.value = hotelbit2;
            break;

        // Wellness
        case 4:
            hotelbit1 = toggleBit(hotelbit1, 11);
            document.bengine.HotelBit1.value = hotelbit1;
            break;

        // Fitness
        case 5:
            hotelbit = toggleBit(hotelbit, 12);
            document.bengine.HotelBit.value = hotelbit;
            break;

    }
    
    if (getSelectedBitText(hdetails_kenner, ttLabels.hdetails) == '') {
        $('#ttQuicksearchHDetails').html('Hoteldetails');
    } else {
        printLabelText('ttQuicksearchHDetails', getSelectedBitText(hdetails_kenner, ttLabels.hdetails));
    }

    printHDetails();
}

/**
 * Funktion zum Schreiben der Hoteldetails ins Div
 */
function printHDetails() {
    var strAusgabe = '';
    
    for (var i = 0; i < ttLabels.hdetails.length; i ++) {
        var tmp = ttLabels.hdetails[i].split('|');
        var url_value = Number(hdetails[tmp[0]][2]);
        strAusgabe += generateCheckboxSelect(tmp[1], 'hdetails' + tmp[0], 'cbHDetails_' + tmp[0], tmp[0], 'setHDetails(' + tmp[0] + ');', checkBit(hdetails_kenner, tmp[0]));
    }
    
    $('#ttDiv40').html(generateDropdown(40, 40, 'Hoteldetails', 'Hoteldetails', strAusgabe));
}

/**
 * Funktion zum Schreiben der Kategorie ins Label
 * @ value {String} Wert der Kategorie
 */
function setCategory(value) {
    if (category != value && detail == 'termine') {
        document.bengine.refresh.value = 1;
    }
    
    category = value;
    
    //$('#ttQuicksearchKategorie').html(ttLabels.getLabel(ttLabels.cats, value));
    document.getElementById('ttQuicksearchKategorie').innerHTML = ttLabels.getLabel(ttLabels.cats, value);
    
    printCategory();
}

/**
 * Funktion zum Schreiben der Kategorie ins Div
 */
function printCategory() {
    var strAusgabe = '';
    
    for (var i = 0; i < ttLabels.cats.length; i ++) {
        var tmp = ttLabels.cats[i].split('|');
        strAusgabe += generateRadioSelect(tmp[1], 'kategorie', 'cbCategory_' + tmp[0], tmp[0], 'setCategory(' + tmp[0] + ');closeDivLabel(\'ttDiv9\');', category == tmp[0]);
    }
    
    //$('#ttDiv9').html(generateDropdown(9, 9, 'Kategorie', 'Hotelkategorie', strAusgabe));
    document.getElementById('ttDiv9').innerHTML = generateDropdown(9, 9, 'Kategorie', 'Hotelkategorie', strAusgabe);
}

/**
 * Funktion zum Schreiben der Verpflegung ins Label
 * @ value {String} Wert der Verpflegung
 */
function setBoard(value) {
    if (verpflegung != value && detail == 'termine') {
        document.bengine.refresh.value = 1;
    }
    
    verpflegung = value;
    
    //$('#ttQuicksearchVerpflegung').html(ttLabels.getLabel(ttLabels.boards, value));
    document.getElementById('ttQuicksearchVerpflegung').innerHTML = ttLabels.getLabel(ttLabels.boards, value);
    
    printBoard();
}

/**
 * Funktion zum Schreiben der Verpflegung ins Div
 */
function printBoard() {
    var strAusgabe = '';
    
    for (var i = 0; i < ttLabels.boards.length; i ++) {
        var tmp = ttLabels.boards[i].split('|');
        strAusgabe += generateRadioSelect(tmp[1], 'verpflegung', 'cbBoard_' + tmp[0], tmp[0], 'setBoard(' + tmp[0] + ');closeDivLabel(\'ttDiv10\');', verpflegung == tmp[0]);
    }
    
    //$('#ttDiv10').html(generateDropdown(10, 10, 'Verpf', 'Verpflegung', strAusgabe));
    document.getElementById('ttDiv10').innerHTML = generateDropdown(10, 10, 'Verpf', 'Verpflegung', strAusgabe);
}

/**
 * Funktion zum Schreiben der Zimmertypen ins Label
 * @value {String} Wert des Zimmertyps
 */
function setRoom(value) {
    if (zimmer != value && detail == 'termine') {
        document.bengine.refresh.value = 1;
    }
    
    zimmer = value;
    
    //$('#ttQuicksearchZimmer').html(ttLabels.getLabel(ttLabels.zimmer, value));
    document.getElementById('ttQuicksearchZimmer').innerHTML = ttLabels.getLabel(ttLabels.zimmer, value);
    
    printRoom();
}

/**
 * Funktion zum Schreiben der Zimmertypen ins Div
 */
function printRoom() {
    var strAusgabe = '';
    
    for (var i = 0; i < ttLabels.zimmer.length; i ++) {
        var tmp = ttLabels.zimmer[i].split('|');
        strAusgabe += generateRadioSelect(tmp[1], 'zimmer', 'cbRoom_' + tmp[0], tmp[0], 'setRoom(' + tmp[0] + ');closeDivLabel(\'ttDiv11\');', zimmer == tmp[0]);
    }
    
    //$('#ttDiv11').html(generateDropdown(11, 11, 'Zimmer', 'Zimmertyp', strAusgabe));
    document.getElementById('ttDiv11').innerHTML = generateDropdown(11, 11, 'Zimmer', 'Zimmertyp', strAusgabe);
}

/**
 * Funktion zum Schreiben der Hotelmarke ins Label
 * @value {String} Wert der Hotelmarke
 */
function setHotelmarke(value) {
    if (hotelbit != value && detail == 'termine') {
        document.bengine.refresh.value = 1;
    }
    
    //hotelbit = value == '-1' ? 0 : Math.pow(2, value);
    hotelbit = value == '-1' ? '' : Math.pow(2, value);
    document.bengine.HotelBit1.value = hotelbit;
    
    //printLabelText('ttQuicksearchHotelmarke', getSelectedBitText(hotelbit, ttLabels.hotelmarke) || 'Hotelmarke');
    
    //printHotelmarke();
}

/**
 * Funktion zum Schreiben der Hotelmarke ins Div
 */
function printHotelmarke() {
    var strAusgabe = '';

    for (var i = 0; i < ttLabels.hotelmarke.length; i ++) {
        var tmp = ttLabels.hotelmarke[i].split('|');
        strAusgabe += generateRadioSelect(tmp[1], 'hotelmarke', 'cbHMarke_' + tmp[0], tmp[0], 'setHotelmarke(' + tmp[0] + ');closeDivLabel(\'ttDiv33\');', (hotelbit == 0 && tmp[0] == '-1') || checkBit(hotelbit, tmp[0]));
    }
    
    //$('#ttDiv12').html(generateDropdown(12, 12, 'HMarke', 'Hotelmarke', strAusgabe));
    //document.getElementById('ttDiv33').innerHTML = generateDropdown(33, 33, 'HMarke', 'Hotelmarke', strAusgabe);
}

/**
 * Funktion zum Schreiben des Preises ins Label
 * @value {String} Wert des Preises 
 */
function setPreis(value) {
     if (preis != value && detail == 'termine') {
        document.bengine.refresh.value = 1;
    } 
     
    preis = value; 
     
    document.getElementById('ttQuicksearchPreis').innerHTML = ttLabels.getLabel(ttLabels.preis, value);  
    //$('#ttQuicksearchPreis').html(ttLabels.getLabel(ttLabels.preis, value));

    printPreis();
}

/**
 * Funktion zum Schreiben der Preises ins Div
 */
function printPreis() {
    var strAusgabe = '';

    for (var i = 0; i < ttLabels.preis.length; i ++) {
        var tmp = ttLabels.preis[i].split('|');
        if(preis == "") preis = "-1";
        strAusgabe += generateRadioSelect(tmp[1], 'preis', 'cbPreis_' + tmp[0], tmp[0], 'setPreis(\'' + tmp[0] + '\');closeDivLabel(\'ttDiv12\');', preis == tmp[0]); 
    }
    
    //$('#ttDiv12').html(generateDropdown(12, 12, 'Preis', 'Preis', strAusgabe));
    document.getElementById('ttDiv12').innerHTML = generateDropdown(12, 12, 'Preis', 'Reisebudget', strAusgabe);
}


/**
 * Funktion zum Schreiben der HBW ins Label
 */
function setHBW(_hbfges, _hbfanz, _hbfempf) {
    if ((hbfges != _hbfges || hbfanz != _hbfanz || hbfempf != _hbfempf) && detail == 'termine') {
        document.bengine.refresh.value = 1;
    }
    
    hbfges  = _hbfges;
    hbfanz  = _hbfanz;
    hbfempf = _hbfempf;
    
    if (hbfges == 0 && hbfanz == 0 && hbfempf == 0) {
        //$('#ttQuicksearchHbw').html('beliebig');
        document.getElementById('ttQuicksearchHbw').innerHTML = 'beliebig';
    } else {
        var ltext = new Array();
        if (hbfges != 0)  ltext.push('Gesamtbewertung');
        if (hbfanz != 0)  ltext.push('Anzahl der Bewertungen');
        if (hbfempf != 0) ltext.push('Weiterempfehlungen');
        printLabelText('ttQuicksearchHbw', ltext.join(', '))
    }
    
    printHBW();
}

/**
 * Funktion zum Schreiben der HBW ins Div
 */
function printHBW() {
    var strAusgabe = '';
    if (hbfges == '') hbfges = 0;
    if (hbfanz == '') hbfanz = 0;
    if (hbfempf == '') hbfempf = 0;
    
    strAusgabe += '<div class="ttHbwBeliebig">';
    //strAusgabe += generateRadioSelect('beliebig', 'hbfreset', 'cbHBWreset', 0, 'setHBW(0, 0, 0);closeDivLabel(\'ttDiv13\');', hbfges == 0 && hbfanz == 0 && hbfempf == 0);
    strAusgabe += generateRadioSelect('beliebig', 'hbfreset', 'cbHBWreset', 0, 'setHBW(0, 0, 0);', hbfges == 0 && hbfanz == 0 && hbfempf == 0);
    strAusgabe += '</div>';

    strAusgabe += '<div class="ttHbwGroupLabel">Gesamtbewertung</div>'; 
    for (var i = 0; i < ttLabels.hbfges.length; i ++) {
        var tmp = ttLabels.hbfges[i].split('|');
        strAusgabe += generateRadioSelect(tmp[1], 'hbfges', 'cbHbfGes_' + tmp[0], tmp[0], 'setHBW(' + tmp[0] + ', ' + hbfanz + ', ' + hbfempf + ');', hbfges == tmp[0]);
    }
    
    strAusgabe += '<div class="ttHbwGroupLabel">Anzahl der Bewertungen</div>'; 
    for (var i = 0; i < ttLabels.hbfanz.length; i ++) {
        var tmp = ttLabels.hbfanz[i].split('|');
        strAusgabe += generateRadioSelect(tmp[1], 'hbfanz', 'cbHbfAnz_' + tmp[0], tmp[0], 'setHBW(' + hbfges + ', ' + tmp[0] + ', ' + hbfempf + ');', hbfanz == tmp[0]);
    }

    strAusgabe += '<div class="ttHbwGroupLabel">Weiterempfehlungen</div>'; 
    for (var i = 0; i < ttLabels.hbfempf.length; i ++) {
        var tmp = ttLabels.hbfempf[i].split('|');
        strAusgabe += generateRadioSelect(tmp[1], 'hbfempf', 'cbHbfEmpf_' + tmp[0], tmp[0], 'setHBW(' + hbfges + ', ' + hbfanz + ', ' + tmp[0]+ ');', hbfempf == tmp[0]);
    }

    //$('#ttDiv13').html(generateDropdown(13, 13, 'Hbw', 'Hotelbewertung', strAusgabe, '428px'));
    document.getElementById('ttDiv13').innerHTML = generateDropdown(13, 13, 'Hbw', 'Hotelbewertung', strAusgabe, '428px');
}

function getSelectedBitText(bit, values) {
    var res = new Array();
    for (var i = 0; i < values.length; i ++) {
        var tmp = values[i].split('|');
        if (checkBit(bit, tmp[0])) {
            res.push(tmp[1]);
        }
    }
    return res.join(', ');    
}

function printLabelText(elemId, value) {
    if (value.length < 13) {
        //$('#' + elemId).html(value);
        document.getElementById(elemId).innerHTML = value;
    } else {
        var valueShort = value.substring(0, 12) + '...';
        //$('#' + elemId).html(short);
        document.getElementById(elemId).innerHTML = valueShort;
        
        //$('#' + elemId).attr('title', value);
    }
}

/**
 * Toggelt das angegebene Bit.
 * @param int bit   Der Bitwert
 * @param int value Das Bit das umgesetzt werden soll (wenn vorher 1 dann 0, ansonsten 1).
 */
function toggleBit(bit, value) {
    return bit ^ Math.pow(2, value);
}

/**
 * Prüft ob das angegebene Bit gesetzt ist.
 * @param int bit   Der Bitwert
 * @param int value Das Bit das im Bitwert geprüft werden soll.
 */
function checkBit(bit, value) {
    return bit & Math.pow(2, value);
}


/**
 * Funktion zum Schreiben der Hotelsortierung ins Label
 * @ value {String} Wert der Sortierung
 */
function setOrder(value) {
    order = '-1';
    
    switch (value) {
        case 1 :
            order = 'by_price';
            break;
        
        case 2 :
            order = 'by_name';
            break;
        
        case 3 :
            order = 'by_sterne';
            break;
        
        case 4 :
            order = 'by_hbw';
            break;
        
        case 5 :
            order = 'by_distance';
            break;
            
        default :
            break;
    }
    
    document.getElementById('ttQuicksearchSortList').innerHTML = ttLabels.getLabel(ttLabels.order, value);
    document.getElementById('sel_htl_sort').value = order;
}

/**
 * Funktion zum Schreiben der Kategorie ins Div
 */
function printOrder() {
    var strAusgabe = '';
    
    if (order == '') {
        order = 0;
    }
    
    for (var i = 0; i < ttLabels.order.length; i ++) {
        var tmp = ttLabels.order[i].split('|');
        
        var curOrder = 'by_distance';
        
        switch (tmp[0]) {
            case '-1' :
                curOrder = '-1';
                break;
                
            case '1' :
                curOrder = 'by_price';
                break;
                
            case '2':
                curOrder = 'by_name';
                break;
                
            case '3':
                curOrder = 'by_sterne';
                break;
                
            case '4' :
                curOrder = 'by_hbw';
                break;
                
            case '5' :
                curOrder = 'by_distance';
                break;
            
            default :
                curOrder = '-1';
                break;
        }
        
        var strLabel = 'beliebig';
        
        if (tmp[1] != 'Sortieren nach') {
            strLabel = tmp[1];
        }
        
        strAusgabe += generateRadioSelect(strLabel, 'sortierung', 'cbOrder_' + tmp[0], tmp[0], 'setOrder(' + tmp[0] + '); TT_GoogleMap.hotelListe.sortItems(); closeDivLabel(\'ttDiv16\');', order == curOrder);
    }
    
    document.getElementById('ttDiv16').innerHTML = generateDropdown(16, 16, 'Sortierung', 'Hotelsortierung', strAusgabe, 210);
}

/**
 * Funktion zum initialen Schreiben der Labels
 */
function setLabels() {
    //--- REISEDAUER ------------------------------------------
    setDuration(dauer);

    //--- ERWACHSENE ------------------------------------------
    var per      = personen.split(';');
    var countPer = 0;
    
    for (var i = 0; i < per.length; i ++) {
        if (per[i] != '' && per[i] > 16) {
            countPer += 1;
        }
    }
    
    document.getElementById('ttQuicksearchAdults').innerHTML = (countPer > 0 ? (countPer) : '2') + ' Pers.';
    
    //--- KINDER ----------------------------------------------
    setchildren();
    
    // Problem der Search (max 8 Personen) handeln
    handle8PersProblem(countPer);

    //--- KATEGORIE -------------------------------------------------
    setCategory(category);

    //--- HOTELDETAILS-------------------------------------------------
    setHDetails();

    //--- VERPFLEGUNG -----------------------------------------------
    setBoard(verpflegung);

    //--- ZIMMERTYP -------------------------------------------------
    setRoom(zimmer);
    
    //--- PREIS -------------------------------------------------
    setPreis(preis);        

    //--- HBW -------------------------------------------------------
    setHBW(hbfges, hbfanz, hbfempf);
}

/**
 * Funktion zum Einblenden eines Divs
 * @ div {Int} Index des Divs
 */
function showDivLabel(div) {
    hideKal();
    
    if (div == flagShowDiv) {
        $('#' + div).hide();
        
        flagShowDiv = false;
    } else {
        var i = 4;
        
        while (document.getElementById('ttDiv' + i)) {
            $('#ttDiv' + i).hide();
            i++;
        }
        $('#ttDiv40').hide(); // Hoteldetails
        $('#ttDiv16').hide(); // Sortieren nach
        $('#ttDiv17').hide(); // Suchzentrum aendern
        
        $('#' + div).slideDown();
        
        flagShowDiv = div;
    }
}

/**
 * Funktion zum Ausblenden eines Divs
 * @ div {Int} Index des Divs
 */
function closeDivLabel(div) {
    if (div == 'cal') {
        var i = 4;
        
        while (document.getElementById('ttDiv' + i)) {
            $('#ttDiv' + i).hide();
            //document.getElementById('ttDiv' + i).style.display = 'none';
            
            i += 1;
        }
    } else {
        $('#' + div).hide();
        //document.getElementById(div).style.display = 'none';
    }
    
    flagShowDiv = false;
}

/**
 * Funktion zum Einblenden des Submit-Buttons
 */
function showSubmit() {
    if (extendedSearch != '1') {
        document.getElementById('ttQuicksearchSubmitButton').style.display = 'block';
    }
}

/**
 * Funktion zum Aufrufen der print-Funktionen der Divs
 */
function writeLabels() {
    printAdults();
    printChildren();
    printHDetails();
    window.setTimeout('showSubmit();', 20);
}

