/* Einstellungen Kalender */
var kalInputWidth = 104;
//var topDistanceHin = 0;
//var leftDistanceHin = 0;
//var topDistanceRueck = 0;
//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 kleine LMPS-Suchformular definiert
*/
var IBE = new TTIBE("IBE",port,"bengine");
IBE.jsFiles = ['../jslib/ttkalender/ferien.js', 'js/search/ttkalender.js', 'js/udf_regionen.js'];

IBE.initOnLoad = function(){
    var mustHave = ['FormBase','termin_min_'+this.port,'termin_max_'+this.port,'Zeitraum','Reisende','Terminauswahl','TTAFH',
                    'optDauer','DateHelperLoaded','g_oFerien', 'Kalender','UDFREG'];
    var injObj   = {SucheLMPSKlein:[],Zeitraum:[],Reisende:[this.req['personen']]};
    mustHave = mustHave.concat(['Zielauswahl','TTREGS_'+this.port]);
    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 optZimmer = [
   "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_short:["Erwachsener","Erwachsene"],
    kinder:["J.","J."]
};
    
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 SucheLMPSKlein(){
    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;
            }
        }
        
        //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 {
                        if (this.valZiel.search(/Nahstrecke/) != '-1' || 
                            this.valZiel.search(/Mittelstrecke/) != '-1' || 
                            this.valZiel.search(/Fernstrecke/) != '-1') {
                                opt[opt.length] = new Option(strSelRegion, 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 == '' || sel == '-1') && typeof(TTREGS_654) != 'undefined') {
            //Zielgebiet ohne udfregion
            if(sel == '' && IBE.req["flugdauer"] >= 10000 && detail == 'zielgebiet' && typeof(strTopRegions) != 'undefined') {
                var arrTopRegions = strTopRegions.split(',');
                var actTopReg = new Array();
                //Array mit relevanten TopRegionen basteln
                for(var j=0; j < arrTopRegions.length; j++)
                {
                    if(arrTopRegions[j] < 10000){
                        actTopReg.push(arrTopRegions[j]);
                    }
                }
                //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
                    //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 ++;                                    
                            }    
                        }    
                    }
                    //Treffer selektieren
                    if(coHiTr == actTopReg.length) {
                        sel = regList[rz];
                        break;
                    }    
                }  
            } else if(detail == 'hotel' || detail == 'termine') {
                //udf=beliebig + eine topRegion gesetzt 
                if(sel == '-1' && IBE.req["topRegion"] >= 0) {                        
                    //udf-regionen-Liste durchsuchen
                    for(var rz = 0; rz < regList.length; rz++) {
                        var strTr = regList[rz].split("|");
                        var arrTr = strTr[1].split(',');  
                        //aktuelle TopRegion nach Übereinstimmung mit 
                        //udf-regionen (ohne 'Beliebteste...') checken
                        if(strTr[0] != 'Beliebteste Reiseziele') {                                                        
                            for(var t = 0; t < arrTr.length; t++) {
                                if(arrTr[t] == IBE.req["topRegion"]) {
                                    sel = regList[rz];
                                    break;                                    
                                }    
                            }    
                        } 
                        if(sel != '-1') {
                            break;
                        }
                    }    
                } else if(sel == '' && 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;
                                }    
                            }                                    
                        }    
                    }   
                } //else if(sel == '' && IBE.req["topRegion"] >= 0)        
            }    
        }
        
        // 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();
        }
    };

    //_______________________________________________________________

    this.init = function(){
        if(!document.bengine) 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){
            if (nurflug == 1) {
                dauert();
                fillSels({'preis':optPreis});
            } else {
                fillSels({'preis':optPreis,'kategorie':optKategorie,'kategorie_dis':optKategorie,"dauer":optDauer,'zimmer':optZimmer,'verpflegung':optVerpflegung});
            }
            if(typeof(optHbfges)!='undefined'){
                fillSels({"hbfges":optHbfgesEX,"hbfanz":optHbfanz,"hbfempf":optHbfempf,"hbfges_dis":optHbfgesEX,"hbfanz_dis":optHbfanz,"hbfempf_dis":optHbfempf});
            }
            fillSelFromArrayStyled('abflughafen',TTAFH);
            fillReisende(optReisende);
            setChecks(['strand', 'strand_dis']);                
            if (detail != 'termine') {
                this.FillUdfRegionen(UDFREG);
            }
        }

        var buttons = document.getElementsByName('btnFinden');
        for(var i=0;i<buttons.length;i++){
            try{
                buttons[i].setAttribute("src",imgPfad+"/teaser/quicksuche/button_aktualisieren.gif");
            }
            catch(e){}
        }
        
        isTTIBEready = true;
    };

          
}

//___________________________________________________________________

function BookingAction(param){
    IBE.BookingAction(param);
}

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 = ""; 
    }
}
