    /**
    *@fileoverview In dieser Datei werden Hilfsfunktionen für das kleine LMPS-Suchformular definiert
    */
    
    /* Einstellungen Kalender */
    var g_Pfad_KAL_IMG = "/kunden_parameter/"+ordner_name+"/ibe_v2/images/kalender/";
    var g_oTermine     = {};
    var oKalHin, oKalRueck;
    var oImages = {
        'pfeil_links'       : new Image(),
        'pfeil_links_over'  : new Image(),
        'pfeil_rechts'      : new Image(),
        'pfeil_rechts_over' : new Image()
    };
    var oDefInfoText = {
        hin_kurz:["Früheste Hinreise am"],  // Header Anreise
        rueck_kurz:["Späteste Rückreise am"],  // Header Rückreise
        hin_lang:["Früheste Hinreise korrigieren<br>oder Daten übernehmen."],  // Header Anreise
        rueck_lang:["Späteste Rückreise korrigieren<br>oder Daten übernehmen."],  // Header Rückreise
        bl_text:["Wählen Sie Ihr Bundesland"]  // Text Bundesland-Info
    };
    
    for(var imgName in oImages) {
        oImages[imgName].src = g_Pfad_KAL_IMG + imgName + ".gif";
    }
    
    //___________________________________________________________________
    
    function handleKinderinfo(show){
        var ki = document.getElementById('tt_qs_kindinfo_bubble');
        ki.style.backgroundImage = 'url("/kunden_parameter/ferienwelt2/ibe_v2/images/bubble/ganz_text.png")';
        ki.style.top = '-202px';
        var kh = document.getElementById('oKalHin_input');
        var kr = document.getElementById('oKalRueck_input');
        var rd = document.getElementById('reisedauer');
        kh.style.width = show ? '119px' : '170px';
        kr.style.width = show ? '119px' : '170px';
        rd.style.width = show ? '145px' : '196px';
        ki.style.display = show ? 'block' : 'none';
    }

    //___________________________________________________________________

    var slider = {
        curPos: 0,
        startDrag: function(e){
            document.onmousemove = function(e) { slider.drag(e); };
            document.onmouseup   = function(e) { slider.endDrag(e); };
        },
        
        endDrag: function(e){
            document.onmousemove = null;
            document.onmouseup   = null;
        },
        
        drag: function(e) {
            var e      = (e) ? e : window.event;
            var posX   = (e.clientX) ? (e.clientX-5) : (e.pageX-5);
            posX       = isNaN(posX) ? -5 : posX;
            var refObj = document.getElementById('preis_div');
            var ttpreis;
            var refObjX = refObj.offsetLeft;
            var oParent = refObj.offsetParent;
            while (oParent) {
                refObjX += oParent.offsetLeft;
                oParent  = oParent.offsetParent;
            }
            posX -= refObjX;

            this.curPos = posX;
            if (posX > -5 && posX <= (refObj.offsetWidth - 10)) {
                document.getElementById('pslider_button').style.left = posX+"px";
                //--- Preisausgabe ------------------------
                if(posX * 5.6 > 10 && posX * 5.6 <= 1000){
                    for(var i = 0; i < 10; i ++){
                        if((parseInt(posX * 5.6) + i) % 10 == 0){
                            ttPreis = parseInt(posX * 5.6) + i;
                            break;
                        }
                    }                    
                }
                else if(posX * 5.6 <= 10){
                    ttPreis = 10;
                }
                else if(posX * 5.6 > 1000){
                    ttPreis = "beliebig";
                }
                document.getElementById('tt_qs_preisright').innerHTML = ttPreis != 'beliebig' ? "maximal bis € "+ttPreis+",-" : 'beliebig';
                if(posX >= 0) {
                    document.getElementById('pslider_highlight').style.width = posX+"px";
                }
                document.forms.bengine.preis.value = ttPreis != 'beliebig' ? "8_"+ttPreis : "";
                //-----------------------------------------
            }
        }
    };
    
    function setPreis(preis){
        if(preis != ''){
            var ttPreis = preis.split("_");
            var preisValue = "maximal bis € "+ttPreis[1]+",-";
        }
        else{
            var preisValue = "beliebig";
        }
        document.getElementById('tt_qs_preisright').innerHTML = preisValue;
        document.getElementById('pslider_button').style.left = preisValue != 'beliebig' ? (parseInt(Number(ttPreis[1]) / 5.6))+"px" : "186px";
        document.getElementById('pslider_highlight').style.width = preisValue != 'beliebig' ? (parseInt(Number(ttPreis[1]) / 5.6))+"px" : "194px";
        document.getElementById('pslider_button').style.display = "block";
    }

    //___________________________________________________________________

    var optFirstRegSelectFW = {
        ziel:"beliebig",
        region:"beliebig"
    }

    var IBE = new TTIBE("IBE",port,"bengine");
    var arrOrte = [];
    IBE.jsFiles = ['../js/tt_kalender.js'];

    IBE.initOnLoad = function(){
        var mustHave = ['FormBase','termin_min_'+this.port,'termin_max_'+this.port,'Zeitraum','Reisende','Terminauswahl',
                         'Kalender','DateHelperLoaded'];        
        if(this.req['formular']=='5')
            var injObj   = {SucheERDEKlein:[],Zeitraum:[],Reisende:[this.req['personen']]};
        else
            var injObj   = {Zielauswahl:[optFirstRegSelectFW],SucheERDEKlein:[],Zeitraum:[],Reisende:[this.req['personen']]};        
        if(this.req['formular']=='4')
            mustHave = mustHave.concat(['Zielauswahl','TTREGS_'+this.port,'optZielOrt','optThemes']);
        else if(this.req['formular']=='5')
            mustHave.push('arrLaender');
        else
            mustHave = mustHave.concat(['Zielauswahl','TTRZ_ERDE','optZielOrt','optThemes']);
            
        for(var i in mustHave){
            if(typeof(window[mustHave[i]])=='undefined'){
                window.setTimeout("IBE.initOnLoad()",20);return;
            }
        }
        this.inject(injObj); this.init();
    };

    //___________________________________________________________________

    /*--- KATEGORIE-Funktionen --------------------------------------- */
    function highlightKatImages(id) {
        var maxStern = id.search("-1") != '-1' ? -1 : parseInt(id.replace(/stern_(\d)/, "$1"));
        for (var i = 0; i<=4; i++) {
            document.getElementById('stern_' + i).firstChild.src = (i <= maxStern) ? imgPfad + "/Skyscraper/Suche/stern_aktiv.gif" : imgPfad + "/Skyscraper/Suche/stern_inaktiv.gif";
        }
    }

    function setKategorie(kat) {
        if (typeof(kat) != 'undefined') {
            document.bengine.kategorie.value = kat;
        }
        var kategorie = document.bengine.kategorie.value;
        var katImages = document.getElementsByName('kat_sterne');
        kategorie++;
        for (var i = 0; i <= 4; i++) {
            document.getElementById('stern_' + i).firstChild.src = (kategorie >= parseInt( document.getElementById('stern_' + i).id.replace(/stern_(\d)/, "$1"))) ?
            imgPfad + "/Skyscraper/Suche/stern_aktiv.gif" :
            imgPfad + "/Skyscraper/Suche/stern_inaktiv.gif";
        }
        if(document.bengine.kategorie.value == '-1'){
            document.getElementById('stern_0').firstChild.src = imgPfad + "/Skyscraper/Suche/stern_inaktiv.gif";
        }
    }

    //___________________________________________________________________

    /**
    *eigene Optionsfelder
    */
    var optPreisFW = [
        "egal;-1",
        "bis 300 €;8_300",
        "bis 500 €;8_500",
        "bis 750 €;8_750",
        "bis 1000 €;8_1000"
    ];

    var optKategorieFW = [
        "egal;-1",
        "2;0",
        "3;1",
        "4;2",
        "5;3"
    ];
    
    var optThemesFW = [
        "beliebig;0",
        "Golf;1_9",
        "Wellness;1_12",
        "Wanderurlaub;2_1",
        "Romantik / Gourmet;2_2",
        "Ski;1_10",
        "Badeurlaub Nord- & Ostsee;1_13",
        "Badeurlaub am Mittelmeer;1_14",
        "Badeurlaub in der Ferne;1_15",
        "Familienurlaub;2_3",
        "Urlaub in Deutschland;1_11",
        "Urlaub in Österreich;1_16",
        "Städtereisen;2_4",
        "Freizeitparks;2_5",
        String.fromCharCode(160,160)+"Disneyland Paris (FR);1_1",
        String.fromCharCode(160,160)+"Legoland Billund (DK);1_2",
        String.fromCharCode(160,160)+"Legoland Deutschland;1_3",
        String.fromCharCode(160,160)+"Movie Park Germany;1_4",
        String.fromCharCode(160,160)+"Phantasialand;1_5",
        String.fromCharCode(160,160)+"Heidepark Soltau;1_6",
        String.fromCharCode(160,160)+"Hansa Park;1_7",
        String.fromCharCode(160,160)+"Europa Park;1_8"
    ];

    var optReisendeFW = {
        erw_short:["Erwachsener","Erwachsene"],
        kinder:["J.","J."]
    };
    //___________________________________________________________________
    
    /**
    *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;
                }
            }
        }
    }
    
    //___________________________________________________________________

    /**
    *@constructor
    *@extends FormBase
    *@requires Terminauswahl
    *@requires Zielauswahl
    *@requires Reisende
    *@requires Kalender
    */

    function SucheERDEKlein(){
        FormBase.apply(this);
        Terminauswahl.apply(this);

        /**
        *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(uttemaItem){
            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';
                    alert('BookingAction("zielgebiet")');
                    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;
            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);
            if(typeof(bform.shotel) != 'undefined' && (bform.shotel.value=='Hotelname' || bform.shotel.value=='Kreuzfahrtname' || bform.shotel.value=='Rundreisename'))
                bform.shotel.value='';
            return this.chkFormular();
        };

        //_______________________________________________________________
        
        /**
        *Formularchecker
        */
        
        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;
                }
            }
            bform.submit();
            return false;
        };

        //_______________________________________________________________

        this.init = function(){
            if(!document.bengine) return;
            var bform=document.forms.bengine;
            
            /* --- 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', 'all', 1, 2); //'div-Name(nicht ändern!)', 'typ(hin/rück)', 'Ferien(-1=nein/all=alle Bundesländer), Anzahl sichtbarer Monate, Termin-Wahl-Art(1=klassisch,2=Zeitraum)'
            oKalRueck = new Kalender('oKalRueck', 'rueck', 'all', 1, 2);
            oKalHin.init();
            oKalRueck.init(); 
            
            /* --- Kategorie ---------- */
            if(detail != 'termine'){
                for (var i = 0; i<=4; i++) {
                    document.getElementById('stern_' + i).onmouseover = function(){
                        if(this.id.search("0") != '-1'){
                            highlightKatImages("stern_1");
                        }
                        else{
                            highlightKatImages(this.id);
                        }
                    }
                    document.getElementById('stern_' + i).onclick = function(){
                        if(this.id.search("0") == '-1'){
                            var kat = parseInt(this.id.replace(/stern_(\d)/, "$1"));
                            if (kat == 0) {
                                kat = 2;
                            }
                            kat--;
                            setKategorie(kat);
                        }
                    }
                }
            }
            
            // Formularfelder füllen
            with(this){
                dauert();
                fillReisende(optReisendeFW);
                if(this.req['formular']=='4'){
                    fillSels({'zielOrt':optZielOrt,'marke':window['arrMarke_'+this.port],'kategorie':optKategorieFW,'kategorie_dis':optKategorieFW,'zimmer':optZimmer,'verpflegung':optVerpflegung,'uthema':optThemesFW});
                    setTexts(['shotel']);
                    UpdateRegionen();
                }
                else if(this.req['formular']=='5'){
                    if(!this.is_land(this.req['selLand'])){this.req['selLand']="39";}
                        fillSels({'marke':window['arrMarke_'+this.port],'preis':optPreisFW,'kategorie':optKategorieFW,'zimmer':optZimmerFW,'verpflegung':optVerpflegung});
                        showLaender();
                        updateOrte();
                        setTexts(['shotel']);
                    }
                }
            var buttons = document.getElementsByName('btnFinden');
            for(var i=0;i<buttons.length;i++){
                try{
                    buttons[i].setAttribute("src",imgPfad+"/Skyscraper/Suche/anpassen.gif");
                }
                catch(e){}
            }
        };

    }

    //___________________________________________________________________

    function BookingAction(param){
        IBE.BookingAction(param);
    }
