var clearBothDiv        = '<div class="clearBoth"><img src="/images/spacer.gif" width="0" height="0" alt="" /></div>';

function $(id) {
    if (typeof TT_USE_SPECIAL_DOLLAR_FUNCTION != 'undefined' && TT_USE_SPECIAL_DOLLAR_FUNCTION == true) {
        // is usedBy: KID 430700 (travelscout24)
        if (typeof jQuery != 'undefined' && jQuery) {
            if (jQuery(id).length > 0) {
                return jQuery(id);
            } else {
                if (typeof document.getElementById(id) != 'undefined' && document.getElementById(id) != null) {
                    return document.getElementById(id);
                } else {
                    return jQuery(id);
                }
            }
        } else {
            return document.getElementById(id);
        }
    } else {
        return document.getElementById(id);
    }
}

/*  id: id des HTML-Elements
 *  prop: Name der style-Eigenschaft, z.B. color
 */
function getStyle(id, prop) {                      
    var elem = document.getElementById(id); 
    //getComputedStyle klappt bei allen Browsern außer ...
    if (window.getComputedStyle) {
        var valStyle = window.getComputedStyle(elem, null).getPropertyValue(prop);           
    } else if (elem.currentStyle) {
        var valStyle = elem.currentStyle[prop]; 
    }          
    return valStyle;
}

function pageSkip(seiten,apage,sortierung,pageSkipOrt) {
    var anfang,ende;
    var ats = anzahl_treffer_seite;
    var strHTML         = '';
    var aktClassName    = '';
    var pfeilLinksBild  = '';
    var pfeilRechtsBild = '';
    
    if (pageSkipOrt == 'foot') {
        aktClassName    = 'tt_skipActFoot';
        pfeilLinksBild  = 'pfeil_lila_links_weiß';
        pfeilRechtsBild = 'pfeil_lila_rechts_weiß';
    } else if (pageSkipOrt == 'head') {
        aktClassName    = 'tt_skipActHead';
        pfeilLinksBild  = 'pfeil_weiß_links';
        pfeilRechtsBild = 'pfeil_weiß_rechts';
    }
    
    strHTML += '<div class="tt_skipText">SEITE</div>';
    
    if (apage > 1) {
        var zw = (apage - 2) * ats;
        strHTML += '<div onclick="skippen(\'' + zw + '\',\'' + sortierung + '\',\'' + ats + '\');" class="tt_skipArrow" title="Angebote der Seite ' + (apage - 1) + ' abrufen"><img class="tt_skipPfeilLinks" src="' + pfad_images + '/' + pfeilLinksBild + '.gif"></div>';
    }
    
    if (apage == 1) {
        strHTML += '<div onclick="skippen(\'' + 0 + '\',\'' + sortierung + '\',\'' + ats + '\');" class="tt_skipNumAct ' + aktClassName + '" title="Angebote der ersten Seite abrufen">1</div>';
    } else {
        strHTML += '<div onclick="skippen(\'' + 0 + '\',\'' + sortierung + '\',\'' + ats + '\');" class="tt_skipNum" title="Angebote der ersten Seite abrufen">1</div>';
    }
    
    
    //##############################################
    
    if (seiten > 4) {
        if (apage <= 3) {
            anfang = 2;
            ende = 3;
        } else if (apage > 3 && apage != seiten) {
            anfang = apage;
            ende   = apage;
        }
        
        if (seiten < 3) {
            anfang = 0;
            ende = -1;
        }
        
        if (apage > 3) {
            strHTML += '<div class="tt_skipPunkte">...</div>';
        }
    } else {
        anfang = 2;
        ende = seiten - 1;
    }
    
    for (t = anfang;t <= ende; t++) {
        zaehler=(t-1) * ats;
        
        if (t != apage) {
            strHTML += '<div onclick="skippen(' + zaehler + ',\'' + sortierung + '\',\'' + ats + '\');" class="tt_skipNum' + (t > 9 ? 'Breit' : '') + '" title="Angebote der Seite ' + t + ' abrufen">' + t + '</div>';
        } else {
            strHTML += '<div class="tt_skipNumAct' + (t > 9 ? 'Breit' : '') + ' ' + aktClassName + '">' + t + '</div>';
        }
    }
    
    if (apage < seiten - 1 && seiten > 4) {
        strHTML += '<div class="tt_skipPunkte">...</div>';
    }
    
    if (apage == seiten) {
        if (seiten > 4) {
            var zww = (seiten-2) * ats;
            strHTML += '<div onclick="skippen(\'' + zww + '\',\'' + sortierung + '\',\'' + ats + '\');" class="tt_skipNum' + (seiten > 9 ? 'Breit' : '') + '" title="Angebote der Seite ' + (seiten - 1) + ' abrufen">' + (seiten - 1) + '</div>';
        }
        var zww = (seiten-1) * ats;
        strHTML += '<div onclick="skippen(\'' + zww + '\',\'' + sortierung + '\',\'' + ats + '\');" class="tt_skipNumAct' + (seiten > 9 ? 'Breit' : '') + ' ' + aktClassName + '" title="Angebote der letzten Seite abrufen">' + seiten + '</div>';
    } else {
        var zww = (seiten-1) * ats;
        strHTML += '<div onclick="skippen(\'' + zww + '\',\'' + sortierung + '\',\'' + ats + '\');" class="tt_skipNum' + (seiten > 9 ? 'Breit' : '') + '" title="Angebote der letzten Seite abrufen">' + seiten + '</div>';
    }
    
    if (parseInt(apage) < parseInt(seiten)) {
        var zw = (apage) * ats;
        strHTML += '<div onclick="skippen(\'' + zw + '\',\'' + sortierung + '\',\'' + ats + '\');" class="tt_skipArrow" title="Angebote der Seite ' + (apage + 1) + ' abrufen"><img class="tt_skipPfeilRechts" src="' + pfad_images + '/' + pfeilRechtsBild + '.gif"></div>';
    }
    strHTML += clearboth;
    
    return strHTML;
}

function mouseOver (element, changeColor, underline) {
    if (changeColor) {
        $(element).style.color = '#D1005D';
    }
    
    if (underline) {
        $(element).style.textDecoration = 'underline';
    }
}

function mouseOut (element, changeColor, underline) {
    if (changeColor) {
        $(element).style.color = '#000000';
    }
    
    if (underline) {
        $(element).style.textDecoration = 'none';
    }
}

function hideShowElement (element, headline, boxenart) {
    // boxenart: 1-Versicherung; 2-Mietwagen
    if (getStyle(element,'display') == 'none') {
        $(element).style.display = 'block';
        if (boxenart == 1) {
            if ($(element) != 'undefined') {
                resizeIframe('versbox', 'insContent');
            }
        } else if (boxenart == 2) {
            if ($(element) != 'undefined') {
                resizeIframe('box', 'rentalCarContainer');
            }
        }
        $(headline).className = 'tt_bucHeadlinebalkenAkt';
    } else {
        $(element).style.display = 'none';
        $(headline).className = 'tt_bucHeadlinebalkenInakt';
    } 
    return;   
}

function resizeIframe(pElem, hName) {
    var d = document;
    var f = d.frames ? d.frames[pElem] : d.getElementById(pElem);
    
    var p = f.document || f.contentWindow.document;
    var h = p.getElementById(hName);
    var hh = (document.all) ? h.scrollHeight : h.offsetHeight;
    
    $(pElem).style.height = hh + 'px';
}

function setInfobuttonActive(element, active) {
    jQuery(element)
        .toggleClass('tt_infobutton', !active)
        .toggleClass('tt_infobuttonAkt', active);
}
function setInfobuttonActiveAll(elementArray, activeArray) {
    for (c = 0;c < elementArray.length;c++){
        jQuery(elementArray[c])
            .toggleClass('tt_infobutton', !activeArray[c])
            .toggleClass('tt_infobuttonAkt', activeArray[c]);
    }
}

function seiten_replace(repl_vars) {
    location.replace('index.php?' + repl_vars);
}

function TrT_onL() {
    if (detail == 'termine') {
        document.bengine.detail.value = 'termine';
    } else if (detail == 'aktion') {
        seiten_replace(repl_vars);
    }
}

function fehlermeldung(fehlerhead, fehlertext, backbutton) {
    if (fehlerhead != 'noHead' && fehlerhead != 'undefined' && fehlerhead != '') {
        document.write('<div class="tt_hotHeader">');
        document.write('    <div class="tt_hotHeadlinebalken">');
        document.write('        <div class="tt_fehlerHead">');
        document.write(     fehlerhead);
        document.write('        </div>');
        document.write('    </div>');
        document.write('</div>');
        document.write('<div class="tt_fehler">');
        document.write(     fehlertext);
        document.write('</div>');
    } else {
        document.write('<div class="tt_fehlerNoHeader">');
        document.write(     fehlertext);
        document.write('</div>');
    }
    if (backbutton != '' && backbutton != 'undefined') {
        document.write('<div class="tt_fehlerBackButtonDiv">');
        document.write(     backbutton);
        document.write('</div>');
    }
    return;
}

var recStep = 0;
function ttInitCalendar(type) {
    if (typeof type == 'undefined') {
        var type = '';
    }
    var terminMin,terminMax;
    if (document.bengine.engine.value == 'erde') {
        if (typeof termin_min_653 == 'undefined') {
            if (recStep++ < 10) { // unendliche Rekursion verhindern
                setTimeout('ttInitCalendar(\'' + type + '\')', 100);
            }
            return;
        }
        terminMin = termin_min_653;
        terminMax = termin_max_653;
    } else {
        if (typeof termin_min_654 == 'undefined') {
            if (recStep++ < 10) { // unendliche Rekursion verhindern
                setTimeout('ttInitCalendar(\'' + type + '\')', 100);
            }
            return;
        }
        terminMin = termin_min_654;
        terminMax = termin_max_654;
    }
    
    if (typeof getParams.termin != 'undefined' && getParams.termin != '') {
        terminHin = getParams.termin;
    } else if (typeof terminKal != 'undefined' && terminKal != '') {
        //terminHin = terminKal;
    }

    if (typeof getParams.ruecktermin != 'undefined' && getParams.ruecktermin != '') {
        terminRueck = getParams.ruecktermin;
    } else if (typeof rueckterminKal != 'undefined' && rueckterminKal != '') {
        //terminRueck = rueckterminKal;
    }
    
    // beim Aufruf der Funktion aus dem multiForm muss der Termin neu gesetzt werden
    if (terminHin == '' || type == 'itemChange') {
        var oDate = new Date();
        if (document.bengine.engine.value == 'pauschal') {
            terminHin = parseInt(oDate.getTime() / 1000) + (86400 * min_termin_kunde_pa);
        } else if (document.bengine.engine.value == 'erde') {
            terminHin = parseInt(oDate.getTime() / 1000) + (86400 * min_termin_kunde_erde);
        } else {
            terminHin = parseInt(oDate.getTime() / 1000) + (86400 * min_termin_kunde_lami);
        }
    }
    if (terminRueck == '' || type == 'itemChange') {
        if (document.bengine.engine.value == 'pauschal') {
            terminRueck = terminHin + (86400 * max_termin_kunde_pa);
        } else if (document.bengine.engine.value == 'erde') {
            terminRueck = terminHin + (86400 * max_termin_kunde_erde);
        } else {
            terminRueck = terminHin + (86400 * max_termin_kunde_lami);
        }
    }
    
    document.bengine.termin.value      = terminHin;
    document.bengine.ruecktermin.value = terminRueck;
    
    // Such-Parameter initialisieren
    jQuery('#termin').val(terminHin);
    jQuery('#ruecktermin').val(terminRueck);
    
    pCalenderFrom = new TTCalendar({
        idFrom: 'idCalFrom',
        curDate: terminHin,
        callback: 'cbCalendarDay',
        idConnectedCal: 'idCalTo',
        dateFromMin: terminMin,
        callbackFooterContent : 'cbFooterContentFrom'
    });
    pCalenderFrom.showWeekNameBeforeDate(['So','Mo','Di','Mi','Do','Fr','Sa']);
    pCalenderFrom.setFormat('dd.mm.yy');

    pCalenderFrom.updateHolidays = function(state) {
        g_strFerienSelect = state;
        jQuery('#' + this.idElement).datepicker('option', 'buttonText', '');

        if (jQuery('#' + this.idElement)[0].nodeName == 'INPUT') {
            jQuery('#' + this.idElement).datepicker('show');
        }
        window.setTimeout("setPositionCalenderDiv('#idCalFrom')",400);
    }
    
    pCalenderTo = new TTCalendar({
        idFrom: 'idCalTo',
        curDate: terminRueck,
        callback: 'cbCalendarDay',
        dateFromMax: terminMax,
        callbackFooterContent : 'cbFooterContentTo'
    });

    pCalenderTo.updateHolidays  = function(state) {
        g_strFerienSelect = state;
        jQuery('#' + this.idElement).datepicker('option', 'buttonText', '');

        if (jQuery('#' + this.idElement)[0].nodeName == 'INPUT') {
            jQuery('#' + this.idElement).datepicker('show');
        }
        window.setTimeout("setPositionCalenderDiv('#idCalTo')",400);
    }
    
    pCalenderTo.showWeekNameBeforeDate(['So','Mo','Di','Mi','Do','Fr','Sa']);
    pCalenderTo.setFormat('dd.mm.yy');  
    
    //pCalenderFrom.setWeekNames(['SO','MO','DI','MI','DO','FR','SA']);
    //pCalenderTo.setWeekNames(['SO','MO','DI','MI','DO','FR','SA']);
    pCalenderFrom.show();
    pCalenderTo.show();
    
    $('#ui-datepicker-div').appendTo($('#body'));
}

//function setPositionCalenderDiv(element) {
//    $('#ui-datepicker-div').offset(
//        { top   : parseInt($(element).offset().top) + parseInt($(element).outerHeight()),
//          left  : parseInt($(element).offset().left) + 1 }) ;
//}
function setPositionCalenderDiv(element) {
    var positionElem = jQuery(element).position();
    $('ui-datepicker-div').style.top = parseInt(positionElem.top + 50) + 'px'
}
function cbFooterContentFrom() {
    var str = '';
    str += '<div class="searchLabelHoliDays">Ferien im Bundesland anzeigen</div>';
    str += '    <div class="searchBoardHoliDay">';
    str += '        <select id="idSearchHolidays" sType="ferien" class="iepngfix" onchange="pCalenderFrom.updateHolidays(this.options[this.selectedIndex].value);">';
    str += getHolidayOptions();
    str += '        </select>';
    str += '    </div>';
    str += '    <div style="padding: 5px 0 0;">';
    str += '        <div class="ui-datepicker-holiday ui-datepicker-holidaylegend">29</div> Ferien';
    str += '    </div>';
    str += '    <div style="padding: 5px 0 0; text-transform: uppercase;">';
    str += '        Angaben ohne Gewähr';
    str += '    </div>';
    str += '    <div class="clear"></div>';
    return str;
}

function cbFooterContentTo() {
    var str = '';
    str += '<div class="searchLabelHoliDays">Ferien im Bundesland anzeigen</div>';
    str += '    <div class="searchBoardHoliDay">';
    str += '        <select id="idSearchHolidays" sType="ferien" class="iepngfix" onchange="pCalenderTo.updateHolidays(this.options[this.selectedIndex].value);">';
    str += getHolidayOptions();
    str += '        </select>';
    str += '    </div>';
    str += '    <div style="padding: 5px 0 0;">';
    str += '        <div class="ui-datepicker-holiday ui-datepicker-holidaylegend">29</div> Ferien';
    str += '    </div>';
    str += '    <div style="padding: 5px 0 0; text-transform: uppercase;">';
    str += '        Angaben ohne Gewähr';
    str += '    </div>';
    str += '    <div class="clear"></div>';
    return str;
}

function getHolidayOptions() {
    var itemsHolidays = [
        {key:'BW', val:'Baden-W&uuml;rttemberg'},
        {key:'BY', val:'Bayern'},
        {key:'BE', val:'Berlin'},
        {key:'BB', val:'Brandenburg'},
        {key:'HB', val:'Bremen'},
        {key:'HH', val:'Hamburg'},
        {key:'HE', val:'Hessen'},
        {key:'MV', val:'Mecklenburg-Vorp.'},
        {key:'NDS', val:'Niedersachsen'},
        {key:'NRW', val:'Nordrhein-Westfalen'},
        {key:'RP', val:'Rheinland-Pfalz'},
        {key:'SL', val:'Saarland'},
        {key:'SN', val:'Sachsen'},
        {key:'SA', val:'Sachsen-Anhalt'},
        {key:'SH', val:'Schleswig-Holstein'},
        {key:'TH', val:'Thüringen'}];
    str = ''; 
    for (var i = 0; i < itemsHolidays.length; i++) {
        if (g_strFerienSelect == itemsHolidays[i].key) {
            str += '<option value="'+itemsHolidays[i].key+'" selected="selected">'+itemsHolidays[i].val+'</option>';
        } else {
            str += '<option value="'+itemsHolidays[i].key+'">'+itemsHolidays[i].val+'</option>';
        }
    }
    return str;
}

/**
 * wird aufgerufen, wenn ein Tag im Kalender ausgewählt wurde
 * 
 * @param {Object} date
 * @param {Object} id
 */ 
function cbCalendarDay(date, id) {
    var aDate = date.split('-');
    var oDate = new Date(aDate[0], parseFloat(aDate[1]) - 1, aDate[2]);
    
    /* wenn Hintermin, dann auch Rücktermin setzen (wegen Überschneidungen) */
    if (id == 'idCalFrom') {
        var aDateTo = jQuery('#idCalTo').attr('date').split('-');
        var oDateTo = new Date(aDateTo[0], parseFloat(aDateTo[1]) - 1, aDateTo[2]);
        
        document.bengine.termin.value      = oDate.getTime() / 1000;
        document.bengine.ruecktermin.value = oDateTo.getTime() / 1000;
    } else {
        document.bengine.ruecktermin.value = oDate.getTime() / 1000;
    }
}

function showMZettel(mcookie) {
    if(!mcookie && mcookie=='' && mcookie=='undefined'){

        mcookie = document.cookie.match(/TTIBEV3=(\w*)/);

        mcookie = mcookie[1];
    }
    mWin = window.open("/kunden_parameter/booking/merkzettel/merkzettel_0508.php?url="+encodeURIComponent(url)+"&KSIDN=TTIBEV3&KC="+mcookie+"&KID=990001&merkzettel_aktion=show&ons="+ordner_name+"&onkp="+ordner_name+"&HID=882815","mWin","width=650,height=450,top=100,left=200,scrollbars=yes,dependent=yes");
    if(mWin)
        return true;
    else
        return false;
}
function writeToMZ(MType,MZid,str_merklink) {
    if(!mcookie && mcookie=='' && mcookie=='undefined') {

        mcookie = document.cookie.match(/TTIBEV3=(\w*)/);

        mcookie = mcookie[1];
    }
    if(detail=="hotel") {
        for(wtm_c=0;wtm_c<regionen_2.length;wtm_c++) {
            if(regionen_2[wtm_c][0]==MZid) {
                var mzueb = regionen_2[wtm_c];

               var str_merklink='/kunden_parameter/booking/merkzettel/merkzettel_0508.php?KID=882815&HID=882815&abpr='+mzueb[1]+'&kategorie='+mzueb[4]+'&ort='+mzueb[7]+'&hn='+encodeURIComponent(mzueb[6])+'&hbws='+mzueb[17]+'&hatt='+mzueb[14]+'&mzusatz=&url='+url+'&KSIDN=TTIBEV3&DT='+strtyp+'&merkzettel_aktion=safe&ons='+ordner_name+'&onkp='+ordner_name+'&KC='+mcookie+'&Laender_Ref_ID='+mzueb[3]+'&merklink=&uebergabe='+encodeURIComponent(uebergabe+'&IFF='+mzueb[2]+'&zielgebiets_kenner='+mzueb[10]+'&detail=termine&showresult='+mzueb[11]+'&startposition_hotel='+mzueb[12]+'&nurflug='+nurflug+'&VBit='+mzueb[16]);

                new Ajax.Request(str_merklink, {
                      method: 'get',
                      onSuccess: function(rpns) {
                        if(mWin!='undefined'&&mWin)
                            mWin.location.reload();
                        return true;
                      }
                  });
            }
            else
                continue;
        }
        return false;
    } else if(detail == "termine") {
        if(MType=="hotel") {
            var ar_hotd = str_hinfo.split("#");
            var str_merklink='/kunden_parameter/booking/merkzettel/merkzettel_0508.php?KID=882815&HID=882815&abpr='+abpr+'&kategorie='+mstern+'&ort='+ar_hotd[1]+'&hn='+ar_hotd[0]+'&hbws='+hbws+'&hatt='+hatt+'&url='+url+'&KSIDN=TTIBEV3&DT='+strtyp+'&merkzettel_aktion=safe&ons='+ordner_name+'t&onkp='+ordner_name+'&KC='+mcookie+'&Laender_Ref_ID='+Laender_Ref_ID+'&merklink=&uebergabe='+encodeURIComponent(uebergabe+skip_and_order+'&nurflug='+nurflug+'&detail=termine');
            new Ajax.Request(str_merklink, {
                      method: 'get',
                      onSuccess: function(rpns) {
                        if(mWin!='undefined'&&mWin)
                            mWin.location.reload();
                        return true;
                      }
                  });
        } else if(MType=="termine") {
        //if MType == termine
            new Ajax.Request('/kunden_parameter/booking/merkzettel/merkzettel_0508.php?merkzettel_aktion=safe&KID=882815&merklink=1&DT='+strtyp+'&url='+url+'&ons='+ordner_name+'&onkp='+ordner_name+'&KSIDN=TTIBEV3&KC='+mcookie+'&'+str_merklink, {
                      method: 'get',
                      onSuccess: function(rpns) {
                        if(mWin!='undefined'&&mWin)
                            mWin.location.reload();
                        return true;
                      }
                  });
        }
        //~ else
            //~ return false;
    } else {
        return false;
    }
}

