    /**
    *@fileoverview In dieser Datei werden Hilfsfunktionen für das LMPS Suchformular definiert
    */
    
    /* Einstellungen Kalender */
    var inputClass = 'ttkalInput';
    var leftDistance = 360;
    var topDistance = 110;
    
    var IBE = new TTIBE("IBE",port,"bengine");
    IBE.jsFiles = ['../jslib/formulare/selectopt654.js','../jslib/core/datehelper.js',
                   '../jslib/core/zeitraum.js','../jslib/formulare/terminauswahl.js',
                   '../jslib/formulare/formbase.js','../jslib/core/reisende.js',    
                   'js/search/tt_kalender_11_08_22.js','../jslib/ttkalender/' + ferien_js,
                   '../js/ttAirportMultiChoice.js',
				   '../js/ttMapForAirportMultiChoice.js',
				    '../js/ttafh_dlc_' + KID + '.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','TTAFHDLC','TTAirportMultiChoice'];
        var injObj   = {SucheLMPS:[],Zeitraum:[],Reisende:[this.req['personen']]};
        if(this.req['formular']=='4')
            mustHave = mustHave.concat(['Zielauswahl','TTREGS_'+this.port,'optZimmer2']);
        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 optReisendeBR = {
        erw:["Erwachsener","Erwachsene"],
        kinder:["J.","J."]
    };

	//___________________________________________________________________
	
    /**
    *Mehrfachauswahl-Abflughäfen 
    */

    function ttSetAfhFromSelect(afh) { 
        if (afh != '-1' && afh != '-2') {
            abflughafen                                 = afh;
            document.forms.bengine.abflughafen.value    = afh;
        } else if (afh == '-1') {
            abflughafen                                 = '-1';
            document.forms.bengine.abflughafen.value    = '-1'; 
        } else if (afh == '-2') {
            abflughafen                                 = '-1';
            document.forms.bengine.abflughafen.value    = '-1'; 
            showDptAirport();
        }
    }

    function FillTextAbflugro() {
        var bform = document.forms['bengine'];
        var dlcArr = bform.abflughafen.value;
        var dlc = dlcArr.split(",");  
        ttMultiAirport.setNewArea(TTAFHDLC_REG);
	    ttMultiAirport.setNewArea(TTAFHDLC_D);
	    ttMultiAirport.setNewArea(TTAFHDLC_EU);
        ttMultiAirport.setNewArea(TTAFHDLC_CH);
        ttMultiAirport.setNewArea(TTAFHDLC_AT);
        ttMultiAirport.init(TTAFHDLC);  
        var ret = ttMultiAirport.getNameForDlc(dlc[0]);
        if(dlc.length > 1) ret += ' ...';
        if(ret == "") ret = "-1";  
        bform.abflughafAli.value = ret;     
        if(!isNaN(dlcArr) && dlcArr != "") {  
            tmpAbflughafen = TTAirportMultiChoice.prototype.transformId(dlcArr);
            bform.abflughafAli.value = tmpAbflughafen;  
        }  
    }
    
    //___________________________________________________________________

    /**
    *@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;
            
            /*
            if (detail) {
                if (bform.detail.value == '') {
                    bform.detail.value = detail;  
                }
            } else {
                detail = bform.detail.value;
            }
            */
                   
            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(this.req['termin']>this.req['ruecktermin']){
            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 (jQuery(".ui-autocomplete").attr("active") == 1) {
                return false;
            }
            
            bform.submit();
            return false;
        };

        //_______________________________________________________________

        /**
        *Füllt eine Selectbox mit den Daten eines Arrays.
        *Die Arrayelemente müssen dafür wie folgt aussehen: "label;value"
        *@param {String} selname Name der zu füllenden Selectbox
        *@param {Array} arrdata Array der die Daten enthält
        */ 
        this.fillSelFromArray = function(selname,arrdata){
            var sb = document.forms[this.formname].elements[selname] || 0;
            if(!sb || sb.type!='select-one') return;
            var sel = this.req[selname]!='undefined'?this.req[selname]:'';
            for(var i=0;i<arrdata.length;i++){
                var lbl = arrdata[i].split(';')[0];
                var val = arrdata[i].split(';')[1];
                sb.options[sb.options.length] = new Option(lbl,val);
                if(val==sel) sb.options[sb.options.length-1].selected=true;
                if(val=='-2') sb.options[sb.options.length-1].disabled=true;
            }
        };
        
        //_______________________________________________________________

        /**
        *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,"marke":window["arrMarke_"+this.port],'ferientermine':optBundeslaender});
                fillSelFromArrayStyled("abflughafAli", TTAFH);    
                fillReisende(optReisendeBR);
                setRadios(['kategorie','zimmer','verpflegung','preis']);
                setChecks(['familie_kinder','strand','wellness','typ']);
                fillBitSels({"zimmer2":optZimmer2});
                setBitChecks(['meer','zfilter']);
                setTexts(['shotel','abflughafen']);      
                UpdateRegionen();
                FillTextAbflugro();
                initSuggestBoxes(); 
                if (abflughafen != '' && abflughafen != '-1') {
                    var mehrAuswahl = abflughafen.split(',');
                    if (mehrAuswahl.length > 1) {
                        if (abflughafen == 'SXF,TXL,BER') {
                            for (i = 0; i < document.getElementsByName('abflughafAli')[0].length; ++i) {
                                if (document.getElementsByName('abflughafAli')[0].options[i].value == abflughafen) {
                                    document.getElementsByName('abflughafAli')[0].options[i].selected = true;
                                    break;
                                }
                            }
                        } else {
                            document.getElementsByName('abflughafAli')[0].selectedIndex = 1;
                        }
                    } else {
                        for (i = 0; i < document.getElementsByName('abflughafAli')[0].length; ++i) {
                            if (document.getElementsByName('abflughafAli')[0].options[i].value == abflughafen) {
                                document.getElementsByName('abflughafAli')[0].options[i].selected = true;
                                break;
                            }
                        }
                    }
                    document.getElementById('abflughafen').value = abflughafen;
                }                  
            }

            var buttons = document.getElementsByName('btnFinden');
            for(var i=0;i<buttons.length;i++){
                try{
                    buttons[i].setAttribute("src",imgPfad+"/forms/form4submit.gif");
                }
                catch(e){}
            }   
	        //-- multiAirport initiieren -------        
	        ttMultiAirport.setMap(true);
	        ttMultiAirport.mouseMoveEffects = true;
	        ttMultiAirport.init(TTAFHDLC);            
        };
    }

    //___________________________________________________________________
    
    function ferienOnChange(selBox){
        g_strFerienSelect = selBox.value;
        oKalHin.updateCalendar();
        oKalRueck.updateCalendar();
    }

    //___________________________________________________________________
    
    function ferienartOnChange(selBox){
        g_strFerienartSelect = selBox.value;
        oKalHin.updateCalendar();
        oKalRueck.updateCalendar();
    }

    //___________________________________________________________________
    
    function setFlexTime(elem) {  
        var bform = document.forms['bengine'];
        var value = elem.value;
        if (value == 0) {
            bform.flextime.value = 2; 
        } else {
            bform.flextime.value = ""; 
        }
    }    
    
    //___________________________________________________________________
    
    function initSuggestBoxes() {  
        var drDest = new TTSuggestBoxDestination(
            {
                label:      'Ziel / Sehenswürdigkeit',
                source:     TTSuggestBox.SRCLAPA,    
                numberOfSuggests:   10,      
                highlight:          1,
                categorize:         1,
                port:               654,   
                anyElement: {
                    label:          'Alle Reiseziele',
                    showOnNoResult: false
                },
                noResultElement: {
                    show:  true,
                    label: 'Keine Ergebnisse gefunden',
                    value: 'Alle Reiseziele'
                }
            },
            KID
        );
        
        // Callbacks
        drDest.setCallback('open', function() {     
            jQuery(".ui-autocomplete").css("z-index","999");
            jQuery(".ui-autocomplete").css("width","170px");           
            jQuery(".ui-autocomplete").attr("active", 1);   
        });   
        
        drDest.setCallback('close', function() {     
            if (jQuery(".ui-autocomplete").attr("active") != 2 && document.bengine.suggestDestination.value != '') {    
                jQuery(".ui-autocomplete-input").val("Ziel / Sehenswürdigkeit");                                    
            } 
            jQuery(".ui-autocomplete").attr("active", 0);
        });   
        
        drDest.setCallback('select', function(elem) {                
             jQuery(".ui-autocomplete").attr("active", 2);
        });                
        
         // Dreamreader in DOM einhängen
        drDest.appendTo(jQuery('#ttDestinationDreamreader'));    
    }
    
    /*
    function setTimeforKalender(elem) {
        var bform = document.forms['bengine'];
        var value = elem.value;
        
        document.getElementById('oKalHin_input').value = '' + bform.ktag.value + '.' + bform.kmonat.value + '';
        document.getElementById('oKalRueck_input').value = '' + bform.rueckktag.value + '.' + bform.rueckkmonat.value + '';
        
        g_oTermine.tsSelTerminHin   = getTimestampFromString('' + bform.ktag.value + '.' + bform.kmonat.value + '');
        g_oTermine.tsSelTerminRueck = getTimestampFromString('' + bform.rueckktag.value + '.' + bform.rueckkmonat.value + '');
        
            //alert(this.termin_hin);
        
            oKalHin.updateCalendar();
            oKalRueck.updateCalendar();
    }
    */    
