var kalInputWidth = 140;
var topDistanceHin = 1;
var leftDistanceHin = 0;
var topDistanceRueck = 1;
var leftDistanceRueck = 0;

var g_Pfad_KAL_IMG = "/kunden_parameter/weg_tt/ibe_v2/images/kalender/";
var g_oTermine     = {};
var oKalHin, oKalRueck;
var oImages = {
  '/kalender/pfeil_links'       : new Image(),
  '/kalender/pfeil_links_over'  : new Image(),
  '/kalender/pfeil_rechts'      : new Image(),
  '/kalender/pfeil_rechts_over' : new Image()
};
for(var imgName in oImages) {
  oImages[imgName].src = imgPfad + imgName + ".gif";
}
    /**
    *@fileoverview In dieser Datei werden Hilfsfunktionen für das LMPS Suchformular definiert
    */
    var IBE = new TTIBE("IBE",port,"bengine");
    var arrOrte = [];
    IBE.jsFiles = ['../../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',
            'arrMarke_' + this.port,
            'DateHelperLoaded',
            'g_oFerien',
            'Kalender'
        ];
        
        var injObj = {
            SucheERDE:[],
            Zeitraum:[],
            Reisende:[this.req['personen']]
        };
        
        if (this.req['formular'] == '4') {
            mustHave = mustHave.concat([
                'Zielauswahl',
                'TTREGS_' + this.port,
                'optZielOrt'
            ]);
        } else if (this.req['formular'] == '5') {
            mustHave.push('arrLaender');
        } else {
            mustHave = mustHave.concat([
                'Zielauswahl',
                'TTRZ_ERDE',
                'optZielOrt'
            ]);
        }

        for (var i in mustHave) {
            if (typeof(window[mustHave[i]]) == 'undefined') {
                window.setTimeout('IBE.initOnLoad()', 20);
                return;
            }
        }
        
        this.inject(injObj);
        this.init();
    };

    //___________________________________________________________________

    /**
    *eigene Optionsfelder
    */

    var optPreis = [
        "beliebig;-1",
        "bis 300 €;1",
        "bis 500 €;2",
        "bis 750 €;3",
        "bis 1000 €;4"
    ];

    var optKategorie = [
        "beliebig;-1",
        "2 Sterne und mehr;0",
        "3 Sterne und mehr;1",
        "4 Sterne und mehr;2",
        "5 Sterne;3"
    ];

    var optVerpflegung = [
        "beliebig;-1",
        "nur Übernachtung (mind.);0",
        "Frühstück (mind.);1",
        "Halbpension (mind.);2",
        "Vollpension (mind.);3",
        "All Inclusive (mind.);4"
    ];    
    
    var optReisende = {
        erw:["Erwachsener","Erwachsene"],
        kinder:["Jahre","Jahre"]
    };
    
    var optHbfgesEX=[
        "beliebig;0",
        "min. 3.0 von 6.0;30",
        "min. 4.0 von 6.0;40",
        "min. 5.0 von 6.0;50"        
    ];
    
    var optZimmerSpez = [
        'beliebig;-1',
        'Einzelzimmer;5',
        'Doppelzimmer;6',
        'Familienzimmer;2',
        'Bungalow;0',
        'Studio/Apartment/Suite;8', 
        'Ferienwohnung;2_8192',
        'Ferienhaus;2_16384'
    ];

    var optDauerComvel = [
        "beliebig;-1",
        "exakt wie angegeben;0",   
        "1 Tag;6_1",   
        "2 Tage;6_2",
        "3 Tage;6_3",
        "4 Tage;6_4",
        "5 Tage;6_5",
        "6 Tage;6_6",
        "7 Tage;6_7",
        "8 Tage;6_8",
        "9 Tage;6_9",  
        "10 Tage;6_10",          
        "11 Tage;6_11", 
        "12 Tage;6_12", 
        "13 Tage;6_13", 
        "14 Tage;6_14", 
        "15 Tage;6_15",          
        "16 Tage;6_16", 
        "17 Tage;6_17", 
        "18 Tage;6_18", 
        "19 Tage;6_19",
        "20 Tage;6_20", 
        "21 Tage;6_21", 
        "> 22 Tage;13"
    ];
    
    //___________________________________________________________________

    /**
    *Wird nur bei Formular 5 verwendet. Wird aufgerufen, nachdem eine Javascript-Ortsdatei
    *in den Iframe geladen wurde aktualisiert die Ortsauswahlbox entsprechend
    */
    function showOrte(){
        var i,lbl,val;
        var tmp  = [];
        var expr = new RegExp(" "+IBE.req['orte_IFF']+"$","");
        var selectbox = document.getElementById("selOrte");
        if(selectbox){
            for(i=selectbox.length-1;i>0;i--) selectbox.options[i] = null;
            for(i=0;i<arrOrte.length;i++){
                tmp = arrOrte[i].split('#');
                val = tmp[0];lbl = tmp[1];
                selectbox.options[i+1] = new Option(lbl,val);
                if(IBE.req['orte_IFF']!="" && expr.exec(val)!=null){
                    selectbox.options[i+1].selected =true;
                }
            }
        }
    }

    //___________________________________________________________________

    /**
    *@constructor
    *@extends FormBase
    *@requires Terminauswahl
    *@requires Zielauswahl
    *@requires Reisende
    *@requires Kalender
    */

    function SucheERDE(){
        FormBase.apply(this);
        Terminauswahl.apply(this);
        if(this.req['formular']=='4') Zielauswahl.apply(this,[]);
        if(this.req['formular']=='2') Zielauswahl.apply(this,[]);

        //_______________________________________________________________

        /**
        *Ändert die Bilder entsprechend der Thema-Auswahl (Formular 4)
        */
        this.chgImg=function(){
            var val= imgThemeId[document.forms[this.formname].uthema.value];
            if(document.images["f1"].src!=window.location.protocol+'//'+window.location.hostname+this.req['imgPfad']+"/forms/theme/"+val+"_1."+this.req['imgFormat']){
                  fImg1 = new Image();fImg2 = new Image();
                  fImg1.src = this.req['imgPfad']+"/forms/theme/"+val+"_1."+this.req['imgFormat'];
                  fImg2.src = this.req['imgPfad']+"/forms/theme/"+val+"_2."+this.req['imgFormat'];
                  document.images["f1"].src= fImg1.src;
                  document.images["f2"].src= fImg2.src;
                  document.forms[this.formname].ziel.focus();
            }
        };

        //_______________________________________________________________

        /**
        *Prüft auf gültige LänderID
        */
        this.is_land = function(idland){
            var expr = new RegExp(idland+"#","");
            for(var i=0;i<arrLaender.length;i++){
                if(expr.exec(arrLaender[i])!=null) return true;
            }
            return false;
        }

        //_______________________________________________________________

        /**
        *Nur bei Formular 5: Füllt die Land-Selectbox
        */
        this.showLaender = function(){
            var i,lbl,val,sel;
            var tmp= [];
            var selectbox = document.getElementById("selLaender");
            for(i=selectbox.length-1;i>=0;i--) selectbox.options[i] = null;
            for(i=0;i<arrLaender.length;i++){
                tmp = arrLaender[i].split('#');
                val = tmp[0];lbl = tmp[1];
                selectbox.options[i] = new Option(lbl,val);
                if(IBE.req['selLand']==val){
                    selectbox.options[i].selected = true;
                    this.req['orte_max']=tmp[2];
                }
            }
        }

        //_______________________________________________________________

        /**
        *nur bei Formular 5 verwendet. Läd eine neue Orte-Javascript Datei in den Iframe
        *nachdem die Datei geladen ist wird die globale Funktion "showOrte()" aufgerufen,
        *die die Ortsauswahlbox entsprechend aktualisiert
        */
        this.updateOrte = function(){
            var aktLand    = document.getElementById("selLaender").value;
            var tmp  = arrLaender[document.getElementById("selLaender").selectedIndex].split('#');
            this.req['orte_max'] = tmp[2];
            var iFrameOrte = document.getElementById("iframeOrte");
            iFrameOrte.src = "../../js/iff_orte/getOrte_js.php?selLand="+aktLand;
        }

        //_______________________________________________________________

        /**
        *booking_action
        */
        this.booking_action = function(){
            var bform=document.forms[this.formname];
            if(this.req['orte_IFF']!=0 && bform.formular.value=='4'){
                if(document.forms[this.formname].zielOrt.value != '-1'){
                    var splitter = document.forms[this.formname].zielOrt.value.split(' ');
                    bform.topRegion.value = splitter[0];
                    bform.IFFOrt.value    = splitter[1];
                    this.BookingAction('hotel');
                }
                else{
                    bform.topRegion.value = '';
                    bform.IFFOrt.value = '-1';
                    this.BookingAction('zielgebiet');
                }
            }
            else if(bform.formular.value=='5'){
                if(document.forms[this.formname].zielOrt.value!=""){
                    var tmp = document.forms[this.formname].zielOrt.value.split(' ');
                    bform.topRegion.value = tmp[0];
                    bform.IFFOrt.value = tmp[1];
                    this.BookingAction('hotel');
                }
                else{
                    alert("Bitte wählen Sie einen Ort aus.");
                }
            }
            else
                this.BookingAction('zielgebiet');
        };

        //_______________________________________________________________

        /**
        *BookingAction
        */
        this.BookingAction = function(detail){
            var bform=document.forms[this.formname];
            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);
            return this.chkFormular();
        };

        //_______________________________________________________________

        /**
        *Formularchekcer
        */
        this.chkFormular = function(){
            var bform=document.forms[this.formname];
            if(bform.termin.value > bform.ruecktermin.value){
                alert("Ihr Rückreisedatum liegt vor dem Hinreisedatum");
                return false;
            }
            var tmpy=bform.zimmer2;
            if(typeof(tmpy)!='undefined'){
                    if(bform.zimmer[6].checked==true && bform.zimmer2.selectedIndex==0){
                    alert("Bitte wählen Sie ein Zimmertypen aus.");
                    bform.zimmer2.focus()
                    return false;
                }
            }
            if (bform.shotel.value == 'Hotelname eingeben...') {
                bform.shotel.value = '';
            }
            bform.submit();
            return false;
        };

        //_______________________________________________________________

        /**
        *Wird nach dem Laden der Seite ausgeführt
        */
        this.init = function(){
            if(!document.forms[this.formname]) return;
            
            // Formularfelder füllen
            with(this){
                fillReisende(optReisende);
                fillSels({"preis":optPreis,"dauer":optDauerComvel,"kategorie":optKategorie,"zimmer":optZimmerSpez,"verpflegung":optVerpflegung,"marke":window["arrMarke_"+this.port]});
                setChecks(['familie_kinder','wellness','ski','golf','fparks','wandern']);
                setBitChecks(['meer','zfilter']);
                if(typeof(optHbfges)!='undefined'){
                    fillSels({"hbfges":optHbfgesEX,"hbfanz":optHbfanz,"hbfempf":optHbfempf});
                }
                if(this.req['formular']=='4'){
                    fillSels({"zielOrt":optZielOrt});                    
//                    setTexts(['shotel','shotel_dis']);
                    UpdateRegionen();
                }
                else if(this.req['formular']=='5'){
                    if(!this.is_land(this.req['selLand'])){this.req['selLand']="39";}                    
                    showLaender();
                    updateOrte();
                    //setTexts(['shotel']);
                }
            }

//            g_strFerienSelect = document.forms[this.formname].ferientermine.value;

            /* --- 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();
            /* ------------------------ */
            
            var buttons = document.getElementsByName('btnFinden');
            for(var i=0;i<buttons.length;i++){
                try{
                    buttons[i].setAttribute("src",imgPfad+"/angebote_finden.gif");
                }
                catch(e){}
            }
            
            isTTIBEready = true;
        };
    }

function erwOneLess(element, targetTxt) {
    var selIndex = element.selectedIndex;

    if (selIndex > 0) {
        element.selectedIndex = selIndex - 1;
    }

    document.getElementById(targetTxt).innerHTML = element.options[element.selectedIndex].text;
}
function erwOneMore(element, targetTxt) {
    var selIndex = element.selectedIndex;

    if (selIndex < element.length-1) {
        element.selectedIndex = selIndex + 1;
    }

    document.getElementById(targetTxt).innerHTML = element.options[element.selectedIndex].text;
}

function katOneLess() {
    var element = document.bengine.kategorie;
    var selIndex = element.selectedIndex;

    if (selIndex >= 0) {
        if (selIndex == 1) {
            element.selectedIndex = selIndex - 2;
        }
        else {
            element.selectedIndex = selIndex - 1;
        }        
    }
        
    document.getElementById('katTxt').innerHTML = (element.selectedIndex + 1) == 0 ? 'beliebig' : (element.selectedIndex + 1) == 5 ? 'ab 5 Sterne' : 'ab ' + (element.selectedIndex + 1) + ' Sterne';
    document.getElementById('katImg').src = imgPfad + '/sterne/' + (element.selectedIndex + 1) + '.gif';
}
function katOneMore(element, targetTxt) {
    var element = document.bengine.kategorie;
    var selIndex = element.selectedIndex;

    if (selIndex < element.length-1) {
        if (selIndex < 0) {
            element.selectedIndex = selIndex + 2;
        }
        else {
            element.selectedIndex = selIndex + 1;
        }
    }
    
    document.getElementById('katTxt').innerHTML = (element.selectedIndex + 1) == 1 ? 'beliebig' : (element.selectedIndex + 1) == 5 ? 'ab 5 Sterne' : 'ab ' + (element.selectedIndex + 1) + ' Sterne';
    document.getElementById('katImg').src = imgPfad + '/sterne/' + (element.selectedIndex + 1) + '.gif';
}

function setKatByClick(kat) {
    var element = document.bengine.kategorie;
    element.selectedIndex = kat;
    document.getElementById('katTxt').innerHTML = (element.selectedIndex + 1) == 0 ? 'beliebig' : (element.selectedIndex + 1) == 5 ? 'ab 5 Sterne' : 'ab ' + (element.selectedIndex + 1) + ' Sterne';
    document.getElementById('katImg').src = imgPfad + '/sterne/' + (element.selectedIndex + 1) + '.gif';
}

function setFlexTime(elem) {
    var bform = document.forms['bengine'];
    var value = elem.value;
    if (value == 0) {
        bform.flextime.value = 2; 
    } else {
        bform.flextime.value = ""; 
    }
}
