    /**
    *@fileoverview In dieser Datei werden Hilfsfunktionen für das Erde-Suchformular definiert
    *@author Guido Fünders, fuenders@traveltainment.de
    */

/*
var optFirstRegSelectFTI = {
  ziel:"Beliebig",
  region:"Beliebig"
}
*/

    var IBE = new TTIBE("IBE",port,"bengine");
    var arrOrte = [];
    IBE.jsFiles = ['../../jslib/formulare/selectopt653.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 = ['Zielauswahl','FormBase','termin_min_'+this.port,'termin_max_'+this.port,'Zeitraum','Reisende','Terminauswahl',
                        'arrMarke_'+this.port,'DateHelperLoaded','g_oFerien', 'TTKalender'];

        var injObj   = {SucheERDE:[],Zeitraum:[],Reisende:[this.req['personen']],Zielauswahl:[]};
        
        if(this.req['formular']=='4')
            mustHave = mustHave.concat(['TTREGS_'+this.port,'optZielOrt','optThemes']);
        else if(this.req['formular']=='5')
            mustHave.push('arrLaender');
        else
            mustHave = mustHave.concat(['TTRZ_ERDE','optZielOrt','optThemes']);
            
        for(var i = 0; i < mustHave.length; ++i){
            if(typeof(window[mustHave[i]])=='undefined'){
                window.setTimeout("IBE.initOnLoad()",20);return;
            }
        }
        this.inject(injObj); this.init();
    };
    
    //__________________________________________________________________________
    
    /**
    *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;
                }
            }
        }
    }
    
    //__________________________________________________________________________
    
var optReisendeFTI = {
    erw:["",""],
    kinder:["",""]
};

var optPreisFTI = [
    "Beliebig;-1",
    "bis 300 €;300",
    "bis 500 €;500",
    "bis 750 €;750",
    "bis 1000 €;1000"
];

var MyOptHbwAnz = [
    "Beliebig;0",
    "mind. 2;2",
    "mind. 3;3",
    "mind. 5;5",
    "mind. 10;10",
    "mind. 20;20",
    "mind. 30;30"
];

var MyOptHbwGes = [
    "Beliebig;0",
    "mind. 3.0/6.0;30",
    "mind. 4.0/6.0;40",
    "mind. 5.0/6.0;50",
    "mind. 6.0/6.0;60"
];

var MyOptHbwEmpf = [
    "Beliebig;0",
    "mind. 80%;800",
    "mind. 90%;900",
    "mind. 100%;1000"
];
    
    //__________________________________________________________________________
    
    /**
    *@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=this.req['termin'];
            bform.ruecktermin.value=this.req['ruecktermin'];
            return this.chkFormular();
        };
        
        //______________________________________________________________________      
      
        /**
        *Formularchekcer
        */
        this.chkFormular = function(){
            var bform=document.forms[this.formname];
            if(this.req['termin']>this.req['ruecktermin']){
                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;
                }
            }
            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){
                dauert();
                fillReisende(optReisendeFTI);
                InitDays(1);
                InitMonth(1);
                InitDays(0);
                InitMonth(0);
                //UpdateDate('k');
                //UpdateDate('rueckk');
                setRadios(['verpflegung','zimmer','kategorie']);
                if(this.req['formular']=='4'){
                    fillSels({"preis":optPreisFTI,"zielOrt":optZielOrt,"marke":window["arrMarke_"+this.port],"uthema":optThemes,'ferientermineKalHin':optBundeslaender,'ferientermineKalRueck':optBundeslaender});
                    setTexts(['shotel']);
                    UpdateRegionen();
                    if(typeof(optHbfges)!='undefined'){
                      fillSels({"hbfges":MyOptHbwGes,"hbfanz":MyOptHbwAnz,"hbfempf":MyOptHbwEmpf});
                    }
                    
                }else if(this.req['formular']=='5'){
                    if(!this.is_land(this.req['selLand'])){this.req['selLand']="39";}
                    fillSels({"marke":window["arrMarke_"+this.port]});
                    showLaender();
                    updateOrte();
                    setTexts(['shotel','preis']);
                }
            }
            
            g_strFerienSelect = document.forms[this.formname].ferientermineKalHin.value;
        
            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 TTKalender('oKalHin', 'hin');
            oKalRueck = new TTKalender('oKalRueck', 'rueck');
            oKalHin.init();
            oKalRueck.init();
        
            try{
              document.getElementById('erster_termin').innerHTML  = this.erster_termin;
              document.getElementById('letzter_termin').innerHTML = this.letzter_termin;
            }catch(e){}
            
            var buttons = document.getElementsByName('btnFinden');
            var imgname = "btn_angebote_finden";
            try{
                for(var i=0;i<buttons.length;i++){
                    buttons[i].setAttribute("src",imgPfad+"/forms/"+imgname+".gif");
                }
            }catch(e){}
                
            setSels();
            isTTIBEready = true;
        };
    }
    
    function ferienOnChange(selBox){
      g_strFerienSelect = selBox.value;
      document.bengine.ferientermine.value = selBox.value;
      if (selBox.id == 'ferientermineKalHin') {
          //alert("document.bengine.ferientermineKalRueck.options[selBox.value]: " + document.bengine.ferientermineKalHin.selectedIndex + document.bengine.ferientermineKalRueck.options[2]);
          document.bengine.ferientermineKalRueck.options[document.bengine.ferientermineKalHin.selectedIndex].selected = 'selected';
      } else {
          document.bengine.ferientermineKalHin.options[document.bengine.ferientermineKalRueck.selectedIndex].selected = 'selected';
      }
      oKalHin.updateCalendar();
      oKalRueck.updateCalendar();
    }
