/* Einstellungen Kalender */
var kalInputWidth = 104;
//var topDistanceHin = 125;
//var leftDistanceHin = 670;
//var topDistanceRueck = 125;
//var leftDistanceRueck = 670;

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 Erde-Suchformular definiert
*/
var arrOrte = [];
var IBE     = new TTIBE('IBE', port, 'bengine');

IBE.jsFiles = [
    '../../jslib/formulare/selectopt653.js',
    '../../jslib/core/datehelper.js',
    '../../jslib/core/zeitraum.js',
    '../../jslib/formulare/terminauswahl.js',
    '../../jslib/formulare/formbase.js',
    '../../jslib/core/reisende.js',
    '../../jslib/ttkalender/ferien.js',
    '../js/search/ttkalender.js'
];
    
IBE.initOnLoad = function(){
    var mustHave = [
        'FormBase',
        'termin_min_' + this.port,
        'termin_max_' + this.port,
        'Zeitraum',
        'Reisende',
        'Terminauswahl',
        'DateHelperLoaded',
        'g_oFerien',
        'Kalender'
    ];
    
    if (this.req['formular'] == '5') {
        var injObj = {
            SucheERDEKlein:[],
            Zeitraum:[],
            Reisende:[this.req['personen']]
        };
    } else {
        var injObj = {
            Zielauswahl:[],
            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();
};
//___________________________________________________________________

/**
*eigene Optionsfelder
*/
var optKategorie = [
    'beliebig;-1',
    '2 Sterne und mehr;0',
    '3 Sterne und mehr;1',
    '4 Sterne und mehr;2',
    '5 Sterne;3'
];

var optPreis = [
    'beliebig;-1',
    'bis 300 €;1',
    'bis 500 €;2',
    'bis 750 €;3',
    'bis 1000 €;4'
];

var optVerpflegungSpez = [
    'beliebig;-1',
    'nur Übernachtung (mind.);0',
    'Frühstück (mind.);1',
    'Halbpension (mind.);2',
    'Vollpension (mind.);3',
    'All Inclusive (mind.);4'
];    

var optZimmerFL = [
    'beliebig;-1',
    'Einzelzimmer;5',
    'Doppelzimmer;6',
    'Familienzimmer;2',
    'Bungalow;0',
    'Studio/Apartment/Suite;8',
    'Ferienwohnung;2_8192',
    'Ferienhaus;2_16384'
];

var optReisendeFL = {
    erw_short:['Erwachsener','Erwachsene'],
    kinder:['J.','J.']
};

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'        
];

var optDauerComvel = [
    "beliebig;-1",
    "exakt wie angegeben;0",   
    "1 Tag;6_1",   
    "2 Tage;6_2",
    "3 Tage;6_3",
    "4 Tage;6_4",
    "5 Tage;6_5",
    "6 Tage;6_6",
    "7 Tage;6_7",
    "8 Tage;6_8",
    "9 Tage;6_9",  
    "10 Tage;6_10",          
    "11 Tage;6_11", 
    "12 Tage;6_12", 
    "13 Tage;6_13", 
    "14 Tage;6_14", 
    "15 Tage;6_15",          
    "16 Tage;6_16", 
    "17 Tage;6_17", 
    "18 Tage;6_18", 
    "19 Tage;6_19",
    "20 Tage;6_20", 
    "21 Tage;6_21", 
    "> 22 Tage;13"
];

//___________________________________________________________________

/**
*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() {
        var bform = document.forms[this.formname];
        
        if (detail == 'termine') {
            this.BookingAction('termine');
        } else  {
            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';
                    
                    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;
        }
        bform.termin.value      = parseInt(getTimestampFromString(bform.oKalHin_input.value) / 1000);
        bform.ruecktermin.value = parseInt(getTimestampFromString(bform.oKalRueck_input.value) / 1000);
        
        return this.chkFormular();
    };

    //_______________________________________________________________

    /**
    *Formularchekcer
    */
    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;
            }
        }
        bform.submit();
        return false;
    };
    
    //_______________________________________________________________
    
    /**
    *Wird nach dem Laden der Seite ausgeführt
    */
    this.init = function() {
        if (!document.forms[this.formname]) {
            return;
        }

        /* --- 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({
                "preis":optPreis,
                "dauer":optDauerComvel,
                'kategorie':optKategorie,
                'kategorie_dis':optKategorie,
                'zimmer':optZimmerFL,
                'verpflegung':optVerpflegungSpez
            });
            
            if (typeof(optHbfges)!='undefined') {
                fillSels({
                    "hbfges":optHbfgesEX,
                    "hbfanz":optHbfanz,
                    "hbfempf":optHbfempf,
                    "hbfges_dis":optHbfgesEX,
                    "hbfanz_dis":optHbfanz,
                    "hbfempf_dis":optHbfempf
                });
            }
            
            fillReisende(optReisendeFL);
            
            setChecks([
                'familie_kinder',
                'wellness',
                'ski',
                'golf',
                'fparks',
                'wandern',
                'familie_kinder_dis',
                'wellness_dis',
                'ski_dis',
                'golf_dis',
                'fparks_dis',
                'wandern_dis'
            ]);
            
            if (this.req['formular'] == '5' && detail != 'termine') {
                showLaender();
                updateOrte();
            } else if (detail != 'termine') {
                UpdateRegionen();
            }
        }
            
        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 = ""; 
    }
}
