/**
 * In dieser Datei werden Hilfsfunktionen für das LMPS Suchformular definiert
 */

var kalInputWidth     = 86;
var topDistanceHin    = 1;
var leftDistanceHin   = 0;
var topDistanceRueck  = 1;
var leftDistanceRueck = 0;

var g_Pfad_KAL_IMG = '/kunden_parameter/condor2/ibe_v2/images/forms/';
var g_oTermine     = {};

var oKalHin, oKalRueck;

var oImages = {
    '/forms/pfeil_links'       : new Image(),
    '/forms/pfeil_links_over'  : new Image(),
    '/forms/pfeil_rechts'      : new Image(),
    '/forms/pfeil_rechts_over' : new Image()
};

for (var imgName in oImages) {
    oImages[imgName].src = imgPfad + imgName + '.gif';
}

var optFirstRegSelectCon = {
    ziel:"beliebig",
    region:"beliebig"
}

var IBE     = new TTIBE('IBE', port, 'bengine');
IBE.jsFiles = ['../jslib/ttkalender/ferien.js', 'js/search/ttkalender.js'];

IBE.initOnLoad = function() {
    var bform = document.forms[this.formname];
    
    var mustHave = [
        'FormBase',
        'termin_min_'+this.port,
        'termin_max_'+this.port,
        'Zeitraum',
        'Reisende',
        'Terminauswahl',
        'optSportangebot',
        'optDauer',
        'arrMarke_' + this.port,
        'DateHelperLoaded',
        'g_oFerien',
        'Kalender'
    ];
    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();
};

//__________________________________________________________________________

var MyOptReisende = {
    erw:['Erw.', 'Erw.'],
    kinder:['Jahre', 'Jahre']
};

var MyOptKategorie = [
    'beliebig;-1',
    '2 Sterne oder mehr;0',
    '3 Sterne oder mehr;1',
    '4 Sterne oder mehr;2',
    '5 Sterne;3'
];

var MyOptSportangebot = [
    'beliebig;-1',
    'Tennis;0',
    'Golf;1',
    'Squash;2',
    'Radsport;3',
    'Wassersport;4',
    'Tauchen;5',
    'Reiten;6',
    'Wandern;7',
    'Surfen;8',
    'großes Sportang.;10'
]

var MyOptHbwAnz = [
    "beliebig;0",
    "min. 2;2",
    "min. 3;3",
    "min. 5;5",
    "min. 10;10",
    "min. 20;20",
    "min. 30;30"
];

var MyOptHbwGes = [
    "beliebig;0",
    "mind. 3 von 6;30",
    "mind. 4 von 6;40",
    "mind. 5 von 6;50",
    "6 von 6;60"
];

var MyOptHbwEmpf = [
    "beliebig;0",
    "mind. 80%;800",
    "mind. 90%;900",
    "mind. 100%;1000"
];

var MyOptZimmer = [
	"beliebig;-1",
	"mind. Einzelzimmer;5",
	"mind. Doppelzimmer;6",
	"mind. Familienzimmer;2",
	"mind. Bungalow;0",
	"mind. Apartment;7"
	];

var MyOptVerpflegung = [
	"beliebig;-1",
	"mind. nur \xDCbernachtung;0",
	"mind. Fr\xFChst\xFCck;1",
	"mind. Halbpension;2",
	"mind. Vollpension;3",
	"mind. All Inclusive;4"
	];



//__________________________________________________________________________

/**
 * @constructor
 * @extends FormBase
 * @requires Terminauswahl
 * @requires Zielauswahl
 * @requires Reisende
 * @requires Kalender
 */

//__________________________________________________________________________

var topRegionen;
function ttCheckTopRegChanges () {
    var bform   = document.forms.bengine;
    topRegionen = document.getElementById('topRegionen').value;
    
    //if (topRegionen != '-1' && topRegionen != bform.topRegion.value) {
    if (topRegionen != '-1' && topRegionen != ttTopRegion) {
        if (bform.topRegion) {
            bform.topRegion.value  = topRegionen;
            bform.topRegion2.value = topRegionen;
        } else {
            bform.topRegion2.value = topRegionen;
        }
        bform.detail.value    = 'hotel';
    } else if (bform.detail.value != '') {
        ttCheckRegChanges();
    }
}
    
//__________________________________________________________________________

function ttCheckRegChanges () { 
    if (document.bengine.nurflug != 'undefined' && document.bengine.nurflug.value == 1) {
        var fel = document.bengine.flugdauer;
        
        if (fel.options[fel.selectedIndex].value != flugdauer) {
            document.bengine.detail.value             = 'zielgebiet';
            document.bengine.zielgebiets_kenner.value = '-1';
            
            if (document.bengine.topRegion) {
                document.bengine.topRegion.value = '';
            }
            
            document.bengine.topRegion2.value = '';
        }
    } else {
        
        var ropt         = document.bengine.elements['region'].options;
        var kennerRegSel = ropt[ropt.selectedIndex].value.split('|');
        
        if (kennerRegSel[0] != IBE.req.zielgebiets_kenner) {
            document.bengine.changeReg.value = 1;
            
            if (document.bengine.topRegion) {
                document.bengine.topRegion.value = '';
            }
            
            document.bengine.topRegion2.value = '';
        }
    }
}

//__________________________________________________________________________

//---Wenn ein Reiseziel ausgewählt wird, wird das Feld Top Regionen ausgegraut,
//---da sich die Ergebnissmengen sonst überschneiden!
function checkForValue(obj) {
    if (obj.ziel.options[obj.ziel.selectedIndex].value != '-1') {
        document.getElementById('topRegionen').options[0].selected = true;
        document.getElementById('topRegionen').disabled  = true;
    } else {
        document.getElementById('topRegionen').disabled  = false;
    }
}

function SucheLMPS() {

    FormBase.apply(this);
    Terminauswahl.apply(this);

    if (this.req['formular'] == '4') {
        Zielauswahl.apply(this,[optFirstRegSelectCon]);
    }
    
    //______________________________________________________________________
    
    this.fillReisende = function(optUsrPersLbl){
        var defPersLbl = {
            kinder : ['Jah.', 'Jah.']
        };
        
        var optPersLbl = optUsrPersLbl || defPersLbl;
        var strPers    = this.Personen;
        var bform      = document.forms[this.formname];
        var elems      = ['alter1', 'alter2','alter3'];
        
        for (var i = 0; i < elems.length; ++ i) {
            if (bform[elems[i]]) {
                bform[elems[i]].options[0] = new Option(' --- ', '-1');
                bform[elems[i]].options[1] = new Option('< 2 ' + optPersLbl['kinder'][0], '1');
                
                for (var j = 2; j <= 16; j ++) {
                    bform[elems[i]].options[j] = new Option(j + ' ' + optPersLbl['kinder'][1], j);
                }
                
                if (this.AlterKinder[i] && this.AlterKinder[i] != '-1') {
                    bform[elems[i]].value = this.AlterKinder[i];
                }
            }
        }
    };
    
    //______________________________________________________________________

    this.BookingAction = function(detail) {
        var bform              = document.forms[this.formname];
        bform.showresult.value = '1';
        
        if (detail) {
            bform.detail.value = detail;
        } else if (bform.topRegion && topRegionen != '-1' && topRegionen != bform.topRegion.value) {
            bform.detail.value = 'hotel';
        } else if (bform.detail.value == '') {
            bform.detail.value = 'zielgebiet';
        }
        
        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;
            }
        }
        
        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 fuellen --------------------------------
        
        with(this) {
            fillSels({
                'dauer'            : optDauer, 
                'kategorie'        : MyOptKategorie,
                'kategorie_dis'    : MyOptKategorie,
                'zimmer'           : MyOptZimmer,
                'zimmer_dis'       : MyOptZimmer,
                'verpflegung'      : MyOptVerpflegung,
                'verpflegung_dis'  : MyOptVerpflegung,
                'sportangebot'     : MyOptSportangebot,
                'sportangebot_dis' : MyOptSportangebot,
                'marke'            : window['arrMarke_'+this.port]
            });
            
            if (typeof(MyOptHbwGes) != 'undefined' && 
                typeof(MyOptHbwAnz) != 'undefined' && 
                typeof(MyOptHbwEmpf) != 'undefined') {
                    fillSels({
                        'hbfges'      : MyOptHbwGes,
                        'hbfges_dis'  : MyOptHbwGes,
                        'hbfanz'      : MyOptHbwAnz,
                        'hbfanz_dis'  : MyOptHbwAnz,
                        'hbfempf'     : MyOptHbwEmpf,
                        'hbfempf_dis' : MyOptHbwEmpf});
            }
            
            fillReisende(MyOptReisende);
            
            setChecks([
                'strand',
                'wellness',
                'familie_kinder',
                'typ'
            ]);
            
            setBitChecks([
                'meer',
                'zfilter'
            ]);
            
            setTexts([
                'shotel',
                'shotel_dis',
                'scode',
                'scode_dis'
            ]);
            
            UpdateRegionen();
        }
        
        if (document.getElementsByName('ziel')[0].options[document.getElementsByName('ziel')[0].selectedIndex].value != -1) {
            document.getElementById('topRegionen').disabled = true;
        }
        
        window.setTimeout('setLabels();', 20);
        window.setTimeout('writeLabels();', 300);

        try{
            var buttons = document.getElementsByName('btnFinden');
            var imgname = this.req['formular'] == 4 ? 'formsubmit' : 'formsubmit';
            for (var i = 0; i < buttons.length; i ++) {
                buttons[i].setAttribute('src', imgPfad + '/forms/' + imgname + '.jpg');
            }
        }
        catch(e) {}
    };
}
