    
    var optFirstRegSelectTS = {
        ziel:"beliebig",
        region:"beliebig"
    }
    
    var IBE = new TTIBE("IBE",port,"bengine");
    IBE.jsFiles = [];
    
    IBE.initOnLoad = function(){
        var mustHave = ['Zielauswahl','TTREGS_'+this.port,'FormBase','termin_min_'+this.port,'termin_max_'+this.port,'Zeitraum',
                         'Reisende','Terminauswahl','TTAFH','optDauer','optKategorie'];
        var injObj   = {Zielauswahl:[optFirstRegSelectTS],SucheLMPSKlein:[],Zeitraum:[],Reisende:[this.req['personen']]};
        for(var i in mustHave){
            if(typeof(window[mustHave[i]])=='undefined'){
                window.setTimeout("IBE.initOnLoad()",20);return;
            }
        }
        this.inject(injObj); this.init();
    };

    //__________________________________________________________________________
    
    function updateHiddenFields(){
        var bform       = document.bengine;
        var udfregionen = '';
        var iffort      = '';
        var topregion   = '';
        var destname    = '';
        var daction     = '';
        var dvalue      = '';
        var topregions  = '';
        bform.abflughafen.value = "";
        bform.IFFOrt.value = "";
        
        var arTmp  = [];
        var arDest = bform.DESTINATION.value==""?[]:bform.DESTINATION.value.split('@@');
        
        if(bform.DESTINATION.value!=""){    
            // Destinations verarbeiten
            for(var i=0;i<arDest.length;i++){
                arTmp      = arDest[i].split('|');
                if(arTmp.length<4)
                continue;
                destname   = arTmp[0];
                daction    = arTmp[1];
                dvalue     = arTmp[2];
                topregions = arTmp[3].replace(/;/g,",");
                if(typeof(daction)=='undefined')
                continue;                
                if(destname!=""){
                    udfregionen += destname+"|"+topregions+";";
                    if(daction=='2'){ // Liste von IFFOrten
                        iffort += dvalue+";";
                    }
                }
            }
            // ggf. letztes Semikolon entfernen
            if(udfregionen!='')
                udfregionen = udfregionen.replace(/(.*)(;)$/,"$1");
            if(iffort!='')
                iffort      = iffort.replace(/(.*)(;)$/,"$1");
            
            // Dreamreaderfeld mit vorhandener Destination fuellen
            if(bform.DESTINATION.value != ""){
                var ergSearch = bform.DESTINATION.value.search(/\|/);
            }
            if(!(bform.DESTINATION.value != "" && ergSearch == '-1')){
                bform.udfregionen.value = udfregionen;
            }
            
            if(arDest.length<=1){
                if(iffort.split(";").length<=20)
                    bform.IFFOrt.value = iffort;
                else
                    bform.IFFOrt.value = "";
            }
        }
        else{
            bform.udfregionen.value = "";
        }
        if(bform.abflughafendr.value!=""){
            bform.abflughafen.value = bform.abflughafendr.value.split(';').join(',');
        }
        
        bform.ziel.value="-1";
        //alert("input_DESTINATION -> "+bform.input_DESTINATION.value+"\nreglabel_save -> "+bform.reglabel_save.value);
        if(bform.input_DESTINATION.value != bform.reglabel_save.value){
            bform.region.value="-1";                        
        }
        bform.drSuche.value = "1";
        bform.afhlabel.value = escape(bform.input_DEPAIRPORT.value);
        bform.reglabel.value = escape(bform.input_DESTINATION.value);
    };

    //__________________________________________________________________________
    
    function toggleInfoText(id){
        var bubble = $(id);
            if(bubble.style.visibility=="hidden"){
            $('infotextFlug').style.visibility="hidden";
            $('infotextZiel').style.visibility="hidden";
            for(var i = 0; i <= 7; i ++){
                document.getElementById("qfDiv"+i).style.visibility = 'hidden';
            }
            bubble.style.visibility="visible";
        }
        else{
            bubble.style.visibility="hidden";
            for(var i = 0; i <= 7; i ++){
                document.getElementById("qfDiv"+i).style.visibility = 'visible';
            }            
        }
    }

    //__________________________________________________________________________

    function onAjaxSuccess(){}
    function onAjaxError(){}
    function logSuche(){
        var bform=document.bengine;
        var s_typ         = 0;
        var s_abflughafen = "";
        var s_reiseziel   = "";
        var s_region      = "";
    
        if($('rzselect').style.display=='block'){
            s_typ = 1;
            s_abflughafen = escape(bform['input_DEPAIRPORT'].value);
            s_reiseziel   = escape(bform['input_DESTINATION'].value);
        }
        else{
            s_abflughafen = escape(bform['abflughafen_alt'].options[bform['abflughafen_alt'].options.selectedIndex].text);
            s_reiseziel   = escape(bform['ziel'].options[bform['ziel'].options.selectedIndex].text);
            s_region      = escape(bform['region'].options[bform['region'].options.selectedIndex].text);
        }
        
        var req = new TTAjaxRequest('suchlog.php',{
            async:false,
            params:'typ='+s_typ+'&abflughafen='+s_abflughafen+'&reiseziel='+s_reiseziel+'&region='+s_region
        });
    }
    
    //__________________________________________________________________________
    
    /**
    *eigene Optionsfelder
    */
    var optPreisTS = [
        "beliebig;-1",
        "bis 300 €;1",
        "bis 500 €;2",
        "bis 750 €;3",
        "bis 1000 €;4"
    ];
    
    var optKategorieTS = [
        "beliebig;-1",
        "2 Sterne und mehr;0",
        "3 Sterne und mehr;1",
        "4 Sterne und mehr;2",
        "5 Sterne;3"
    ];
    
    var optZimmerTS = [
        "beliebig;-1",
        "Einzelzimmer;5",
        "Doppelzimmer;6",
        "Familienzimmer;2",
        "Bungalow;0",
        "Studio/Apartment/Suite;7"
    ];
    
    var optDauerTS=[
        "beliebig;-1",
        "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 optVerpflegungTS = [
        "beliebig;-1",
        "nur Übernachtung (mind.);0",
        "Frühstück (mind.);0",
        "Halbpension (mind.);2",
        "Vollpension (mind.);3",
        "All Inclusive (mind.);4"
    ];
    
    var optReisendeTS = {
        erw_short:["Erwachsener","Erwachsene"],
        kinder:["J.","J."]
    };
    
    //___________________________________________________________________
    
    /**
    *@constructor
    *@extends FormBase
    *@requires Terminauswahl
    *@requires Zielauswahl
    *@requires Reisende
    *@requires Kalender
    */
    
    function SucheLMPSKlein(){
        FormBase.apply(this);
        Terminauswahl.apply(this);
        
        //_______________________________________________________________
        
        this.showKalender = function(strTyp){
            if(strTyp=='hin' && typeof(kalender_rueck)!='undefined') kalender_rueck.close();
            else if(strTyp=='rueck' && typeof(kalender_hin)!='undefined') kalender_hin.close();
            var top=screen.height;
            var left=screen.width;
            var posx=((left/2)-100);
            var posy=((top/2)-180);
            var wndName = 'kalender_'+strTyp+'__'+this.formname+'__'+this.name;
            if(typeof(t3url)!='undefined'){
                var infowin = window.open(t3url+'booking/'+ordner_name+'/kalender.html',wndName,'width=200,height=230,scrollbars=no,screenX='+posx+',screenY='+posy+',left='+posx+',top='+posy);
            }
            else{
                var infowin = window.open('kalender.html',wndName,'width=200,height=230,scrollbars=no,screenX='+posx+',screenY='+posy+',left='+posx+',top='+posy);
            }
            infowin.focus();
        };
        
        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=this.req['termin'];
            bform.ruecktermin.value=this.req['ruecktermin'];    
            
            if($('rzselect').style.display=='block'){
                var felder = {
                    input_DEPAIRPORT  : ["abflughafendr","Der von Ihnen eingegebene Abflughafen ist uns leider nicht bekannt."],
                    input_DESTINATION : ["DESTINATION","Das von Ihnen eingegebene Reiseziel ist uns leider nicht bekannt."]
                };
                updateHiddenFields();
                
                if(bform['input_DEPAIRPORT'].value != '' &&
                   bform['input_DEPAIRPORT'].value != drAfh.InputFieldDefaultValue &&
                   (bform['abflughafendr'].value=='-1' || bform['abflughafendr'].value=='')){
                    alert(felder['input_DEPAIRPORT'][1]);
                    bform['input_DEPAIRPORT'].focus()
                    return false;
                }        
                if(bform['input_DESTINATION'].value != '' &&
                   bform['input_DESTINATION'].value != drRZ.InputFieldDefaultValue &&
                   (bform['DESTINATION'].value=='-1' || bform['DESTINATION'].value=='')){
                    alert(felder['input_DESTINATION'][1]);
                    bform['input_DESTINATION'].focus();
                    return false;
                }
                bform.abflughafendr.value = "";
                bform.DESTINATION.value = "";
            }
            else{
                bform.abflughafen.value = bform.abflughafen_alt.value;
                bform.drSuche.value = "0";
                bform.afhlabel.value = "";
                bform.reglabel.value = "";
                bform.udfregionen.value = "";
                bform.IFFOrt.value = "";
                bform.tt_nb_trackziel.value = bform.ziel.options[bform.ziel.selectedIndex].text;
            }            
            return this.chkFormular();
        };
        
        //_______________________________________________________________
        
        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;
                }
            }
            //logSuche();
            bform.submit();
            return false;
        };
        
        //_______________________________________________________________
      
        this.init = function(){
            if(!document.bengine) return;
            // Formularfelder füllen
            with(this){
                fillSels({'dauer':optDauerTS,'preis':optPreisTS,'kategorie':optKategorieTS,'kategorie_dis':optKategorieTS,'zimmer':optZimmerTS,'verpflegung':optVerpflegungTS});
                fillSelFromArray('abflughafen_alt',TTAFH);
                fillReisende(optReisendeTS);
                InitDays(1);
                InitMonth(1);
                InitDays(0);
                InitMonth(0);
                UpdateDate('k');
                UpdateDate('rueckk');
                setChecks(['strand','strand_dis','wellness','wellness_dis','familie_kinder','familie_kinder_dis','sportmoeglichkeiten','sportmoeglichkeiten_dis','typ','typ_dis']);
                setBitChecks(['meer','meer_dis','zfilter']);
                setTexts(['shotel']);
                UpdateRegionen();
            }
            drInit();
            try{
                var buttons = document.getElementsByName('btnFinden');
                var imgname = this.req['formular']==4?"button_suche":"button_suche";  
                for(var i=0;i<buttons.length;i++){
                    buttons[i].setAttribute("src",imgPfad+"/forms/"+imgname+".gif");
                    buttons[i].onmouseover = function(){this.src=imgPfad+"/forms/"+imgname+"_over.gif";};
                    buttons[i].onmouseout = function(){this.src=imgPfad+"/forms/"+imgname+".gif";};      
                }
            }
            catch(e){}
        };
        
    }

    //___________________________________________________________________

    function toggleAuswahl(alt){
        if(alt==1){
            $('rzselect').style.display="none";
            $('altrzselect').style.display="block";
        }
        else{
            $('rzselect').style.display="block";
            $('altrzselect').style.display="none";
        }
    }

    //___________________________________________________________________

    function drInit(){
        drAfh.init();
        drRZ.init();
    }

    //___________________________________________________________________

    function onAjaxError(){}
    
    TTDR.Ajax.Port = "654";
    TTDR.Ajax.Url  = '../../jslib/ttdr/suggest.php';
    
    // Abflughafen
    var drAfh    = new TTDR.DreamReader('DEPAIRPORT');
    drAfh.Name = 'abflughafendr';
    drAfh.InputFieldDefaultValue = 'beliebig';
    drAfh.SuggestHighlightColor = '#EAF0FC';
    drAfh.EH.onAjaxError = onAjaxError;
    
    // Reiseziel
    var drRZ    = new TTDR.DreamReader('DESTINATION');
    drRZ.InputFieldDefaultValue = 'Alle Reiseziele';
    drRZ.SuggestHighlightColor = '#EAF0FC';
    drRZ.EH.onAjaxError = onAjaxError;
    
    //___________________________________________________________________
    
    function BookingAction(param){
        IBE.BookingAction(param);
    }
    
    //___________________________________________________________________
    
    function setDreamreaderInput(abflughafen, afh, reiseziel){
        document.forms.bengine.input_DEPAIRPORT.value = abflughafen != "" ? abflughafen : "beliebig";
        document.forms.bengine.abflughafendr.value = afh != "" ? afh : "";
        document.forms.bengine.input_DESTINATION.value = reiseziel != "" ? reiseziel : "Alle Reiseziele";
        document.forms.bengine.DESTINATION.value = reiseziel != "" ? reiseziel : "Alle Reiseziele";        
    }