var kalInputWidth = 140;
var topDistanceHin = 1;
var leftDistanceHin = 0;
var topDistanceRueck = 1;
var leftDistanceRueck = 0;

var g_Pfad_KAL_IMG = "/kunden_parameter/weg_at2/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");
    //IBE.jsFiles = ['../jslib/ttkalender/ferien.js', 'js/search/ttkalender.js', 'js/udf_regionen'];
    IBE.jsFiles = ['../jslib/ttkalender/ferien.js', 'js/search/ttkalender.js', 'js/udf_regionen.js'];

    IBE.initOnLoad = function(){
        var bform = document.forms[this.formname];
        var mustHave = ['FormBase','termin_min_'+this.port,'termin_max_'+this.port,
                        'Zeitraum','Reisende','Terminauswahl','TTAFH','optSportangebot',
                        'optDauer','arrMarke_'+this.port,'DateHelperLoaded',
                        'g_oFerien', 'Kalender', 'UDFREG'];
        var injObj   = {SucheLMPS:[],Zeitraum:[],Reisende:[this.req['personen']]};
        if(this.req['formular']=='4')
            mustHave = mustHave.concat(['Zielauswahl','TTREGS_'+this.port]);
        else
            mustHave.push('TTFDRZ');
        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 optZimmerSpez = [
       "beliebig;-1",
       "Einzelzimmer;5",
       "Doppelzimmer;6",
       "Familienzimmer;2",
       "Bungalow;0",
       "Apartment;7",
       "Studio;2_2",
       "Suite;2_16",
       "Villa;2_256",
       "Superior;2_512",
       "Dreibettzimmer;2_1024",
       "Mehrbettzimmer;2_4096",
       "Ferienwohnung;2_8192",
       "Ferienhaus;2_16384",
       "Deluxe-Zimmer;2_32768",
       "Duplexzimmer;2_2048"
    ];
    
    var optReisende = {
        erw:["Erwachsener","Erwachsene"],
        kinder:["Jahre","Jahre"]
    };
    
    var optSportangebot=[
        "gro\xDFes Sportangebot;10",
        "Tennis;0",
        "Golf;1",
        "Squash;2",
        "Radsport;3",
        "Wassersport;4",
        "Tauchen;5",
        "Reiten;6",
        "Wandern;7",
        "Surfen;8",
        "egal;-1"
    ];
    
    var optDauer = [
        "beliebig;-1",
        "exakt wie angegeben;0",
        "1 Tag;6_1",
        "2 Tage;6_2",
        "3 Tage;6_3",
        "4 Tage;6_4",
        "5 - 8 Tage;10",
        "1 Woche;6_7",
        "9 - 12 Tage;7",
        "13 - 15 Tage;3",
        "2 Wochen;6_14",
        "16 - 22 Tage;12",
        "3 Wochen;6_21",
        "> 22 Tage;13"
    ];
    
    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"        
    ];
    

    //___________________________________________________________________

    /**
    *@constructor
    *@extends FormBase
    *@requires Terminauswahl
    *@requires Zielauswahl
    *@requires Reisende
    *@requires Kalender
    */

    function SucheLMPS(){
        FormBase.apply(this);
        Terminauswahl.apply(this);

        if(this.req['formular']=='4') Zielauswahl.apply(this,[]);

        //_______________________________________________________________

        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();
        };

        //_______________________________________________________________

        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 = '';
            }
            
            //checken, ob ein Reiseziel gesetzt werden muss
            var tmp_optZiel = bform.elements["udfregionen"].options;
            var tmp_optReg = bform.elements["region"].options;
            if(this.gfilt == false && tmp_optZiel.selectedIndex < 1 && tmp_optReg.selectedIndex > 0) {
                this.updateRegionChoice();    
            }
                        
            bform.submit();
            return false;
        };
        
        //_______________________________________________________________
        /*
          *updateRegionenList => ReiseZiel_onChange: Update der Regionsauswahl                    
          */
          this.updateRegionenList = function(doChange){
                if(typeof(doChange) == 'undefined') {
                    var doChange = 0;
                }                
                var zielSel = document.forms[this.formname].elements["udfregionen"];
                this.valZiel = zielSel.value; 
                
                // globale Variable "g_strZiel" updaten
                if(zielSel.selectedIndex>0){
                    this.strZiel=zielSel[zielSel.selectedIndex].text;
                } else {
                    this.strZiel="";    
                } 
                
                var kenner  = unescape(zielSel.value);
                if(kenner != '-1') {
                    var tmpRz = kenner.split('|');            
                    var rzRegions = tmpRz[1].split(',');    
                }
                
                this.gfilt = kenner!=-1;
                var opt = document.forms[this.formname].elements["region"].options;
                while(opt.length>1) {
                    opt[opt.length-1] = null;    
                } 
                
                for(var reg=0;reg<this.Regionen.length;++reg) {
                    var sr = this.Regionen[reg].split("|");
                    if(sr[1]<10000) {
                        if(kenner=='-1') {
                            opt[opt.length]=new Option(sr[0],sr[1]+"|"+sr[2]+"|"+sr[3]);    
                        } else if(typeof(rzRegions) != 'undefined') {
                            for(var rz=0;rz<rzRegions.length;++rz) {                            
                                if(sr[3] == rzRegions[rz]) {
                                    opt[opt.length]=new Option(sr[0],sr[1]+"|"+sr[2]+"|"+sr[3]);                                    
                                }    
                            }    
                        }
                    }    
                }  
                
                if(doChange == 1) {
                    //Wurde Region gewählt, ohne ein Reiseziel?                                         
                    if(typeof(this.preSelectedReg) != 'undefined' && this.preSelectedReg >= 0) {                          
                        var nrSelReg = 0;
                        for(i=0;i<opt.length;i++) {
                            if(opt[i].value.split("|")[0]==this.preSelectedReg){
                                opt.selectedIndex=i;
                                nrSelReg = i;
                                break;
                            }    
                        }
                    } else {
                        opt.selectedIndex=0;
                        this.strReg="";
                        this.valReg=-1;    
                    }                 
                } else {                    
                    if(opt.selectedIndex<0 || opt[opt.selectedIndex].value.split("|")[0]!=this.valReg){
                          for(i=0;i<opt.length;i++)
                            if(opt[i].value.split("|")[0]==this.valReg){
                              opt.selectedIndex=i;break;
                            }
                    
                          if(i==opt.length){
                            if(this.strReg!="")
                              opt[opt.length]=new Option(this.strReg+" (keine Ang.)",this.valReg+"|"+this.valZiel,true,true);
                            else{
                              opt.selectedIndex=0;this.valReg=-1;this.strReg="";
                            }
                          }
                    }
                }
                this.preSelectedReg = '-1'; 
          };
          
          //_______________________________________________________________
          /*
          *updateRegionChoice => Region_onChange: Updated die Zielauswahl          
          */
          this.updateRegionChoice=function(){
            var ropt=document.forms[this.formname].elements["region"].options;
            var kenner=ropt[ropt.selectedIndex].value.split("|");
                        
            // Globale Variable "g_nRegion" auf aktuellen Value setzen
            this.valReg=kenner[0];   
                 
            // Wenn eine Region ausgewählt ist:
            if(ropt.selectedIndex>0){
              // evtl enthaltene Klammerausdrücke werden weggeschnitten
              this.strReg = ropt[ropt.selectedIndex].text.replace(/([^(]*)\((.*)/,"$1");
            }else this.strReg="";
        
            /* Wenn kein Zielfilter gesetzt ist, aber eine Region selektiert ist,
               setze Das Ziel entsprechend. */
            this.preSelectedReg = '-1'; //merken, ob eine selektierte Region für 'updateRegionenList' mitgenommen wird                       
            if(this.gfilt==false && kenner[0]>=0){              
              try{
                var selZiel = '';
                var nrOptReg = 0;
                var optZiel = document.forms[this.formname].elements["udfregionen"].options;
                if(optZiel.selectedIndex == 0 && typeof(UDFREG) != 'undefined') {                    
                    for(var rz = 0; rz < UDFREG.length; rz++) {
                        //die ersten vier weglassen
                        if(rz > 3) {
                            var strTr = UDFREG[rz].split("|");
                            var arrTr = strTr[1].split(',');                            
                            for(var t = 0; t < arrTr.length; t++) {
                                if(arrTr[t] == kenner[2]) {
                                    this.strZiel = escape(UDFREG[rz]);
                                    this.valZiel=kenner[1];
                                    selZiel = this.strZiel;  
                                    nrOptReg = (rz+1);
                                    break;                                  
                                }    
                            }    
                        } 
                        if(selZiel != '') {
                            break;
                        }   
                    }    
                }
                
                var elZiel = document.forms[this.formname].elements["udfregionen"];                                
                elZiel.value = selZiel;     
                if(selZiel != '') {                    
                    this.preSelectedReg = kenner[0];
                }                            
                             
              }catch(e){}
            }
            
          };
        
        //_______________________________________________________________
        this.FillUdfRegionen = function(regList){
            var sel = this.req['udfregionen'] != 'undefined'? unescape(this.req['udfregionen']) : '';            
            //alert('sel:'+sel+'\ntopRegion:'+IBE.req["topRegion"]+'\nflugdauer:'+IBE.req["flugdauer"]+'\nzk:'+IBE.req["zielgebiets_kenner"]);
            
            //Deeplink?
            //Es wird hier versucht, trotz Abwesenheit einer udfregion etwas Sinnvolles zu selektieren
            if(sel == '' && typeof(TTREGS_654) != 'undefined' && IBE.req["topRegion"] >= 0) {
                var actTopReg = new Array();                        
                //deeplink ohne region
                if(IBE.req["topRegion"] >= 10000) {
                    //Array mit relevanten TopRegionen basteln
                    for(var j=0; j < TTREGS_654.length; j++) {
                        var arrRegs = TTREGS_654[j].split("|");
                        if(arrRegs[2] == IBE.req["topRegion"] && arrRegs[3] < 10000) {
                            actTopReg.push(arrRegs[3]);    
                        }    
                    }     
                } else if(IBE.req["topRegion"] < 10000) {
                    //deeplink mit region, aber ohne flugdauer                                               
                    //Array mit relevanten TopRegionen basteln
                    for(var j=0; j < TTREGS_654.length; j++) {
                        var arrRegs = TTREGS_654[j].split("|");
                        if(arrRegs[3] == IBE.req["topRegion"]) {
                            actTopReg.push(arrRegs[3]);    
                        }    
                    }    
                } 
                if(actTopReg.length > 0) {
                    //udf-regionen-Liste durchsuchen
                    for(var rz = 0; rz < regList.length; rz++) {
                        var strTr = regList[rz].split("|");
                        var arrTr = strTr[1].split(',');
                        var coHiTr = 0; //Zähler
                        if(strTr[0] != 'Beliebteste Reiseziele') {
                            //array mit aktuellen TopRegionen nach Übereinstimmungen
                            //mit udf-regionen checken                        
                            for(var a=0; a < actTopReg.length; a++) {
                                for(var t = 0; t < arrTr.length; t++) {
                                    if(arrTr[t] == actTopReg[a]) {
                                        coHiTr ++;  
                                        break;                                  
                                    }    
                                }    
                            }
                            //Treffer selektieren
                            if(coHiTr > 0) {
                                sel = regList[rz];
                                break;
                            }    
                        }                                    
                    }    
                }       
            }            
            
            // Erstes Element der Reisezielauswahlbox erstellen
            document.forms[this.formname].elements['udfregionen'].options[0] = new Option('beliebig','-1');
            var opt = document.forms[this.formname].elements['udfregionen'].options;            
            
            for(var i = 0; i < regList.length; i++){
                var sr = regList[i].split("|");

                if (sr[0] == 'Dom. Rep.') {
                    sr[0] = 'Dom. Republik';
                }

                opt[opt.length] = new Option(sr[0],escape(regList[i]));
                
                if (sel == regList[i]) {
                    opt[opt.length-1].selected = true;
                }
            }
            
            //Selecter Region?
            if(typeof(document.getElementById('region')) != 'undefined') {
                document.forms[this.formname].elements["region"].options[0] = new Option('beliebig',"-1");
                this.updateRegionenList();
            }
        };

        //_______________________________________________________________

        /**
        *Wird nach dem Laden der Seite ausgeführt
        */

        this.init = function(){
            if(!document.forms[this.formname]) return;

//            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();
            /* ------------------------ */

            // Formularfelder füllen
            with(this){
                fillSels({"sportangebot":optSportangebot,"preis":optPreis,"kategorie":optKategorie,"dauer":optDauer,"marke":window["arrMarke_"+this.port],"zimmer":optZimmerSpez,"verpflegung":optVerpflegung});
                if(typeof(optHbfges)!='undefined'){
                    fillSels({"hbfges":optHbfgesEX,"hbfanz":optHbfanz,"hbfempf":optHbfempf});
                }
                fillSelFromArrayStyled("abflughafen",TTAFH);
                fillReisende(optReisende);
                setChecks(['familie_kinder','strand','wellness','typ']);
                setBitChecks(['meer','zfilter']);
                //setTexts(['shotel']);
                this.FillUdfRegionen(UDFREG);
                                
                ttSendAfh();
                
            }

            try{
                if (typeof(document.getElementById('erster_termin')) != 'undefined') {
                    document.getElementById('erster_termin').innerHTML  = this.erster_termin;    
                }
                if (typeof(document.getElementById('letzter_termin')) != 'undefined') {
                    document.getElementById('letzter_termin').innerHTML = this.letzter_termin;    
                }                
            }
            catch(e){}

            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 = ""; 
    }
}

