/**
 * @fileoverview In dieser Datei werden Hilfsfunktionen für das LMPS Suchformular definiert
 */

var kalInputWidth     = 124;
var topDistanceHin    = 0;
var leftDistanceHin   = -10;
var topDistanceRueck  = 0;
var leftDistanceRueck = -10;

var g_Pfad_KAL_IMG = '/kunden_parameter/its/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 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',
        'Terminauswahl',
        'TTAFH',
        'arrMarke_' + this.port,
        'DateHelperLoaded',
        'Kalender',
        'g_oFerien'
    ];
    
    var injObj = {
        SucheLMPS:[],
        Zeitraum:[]
    };
    
    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();
};

/**
 * @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;
        }
        
        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;
        }
        
        /*
        if(zimmer == '-1' && document.getElementById('zimmerCheck').checked) {
            alert('Bitte wählen Sie ein Zimmertypen aus.');
            
            showDivLabel('ttDiv11');
            
            return false;
        }*/
        
        if (bform.abflughafen.value == '') {
            bform.abflughafen.value = abflughafen ? abflughafen : '';
        }
        
        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(
                {
                    'ferientermine': optBundeslaender,
                    'marke': window["arrMarke_"+this.port]
                }
            );
            
            setRadios(
                [
                    'kategorie',
                    'zimmer',
                    'verpflegung',
                    'preis'
                ]
            );
            
            setChecks(
                [
                    'familie_kinder',
                    'strand',
                    'typ'
                ]
            );
            
            setBitChecks(
                [
                    'meer',
                    'zfilter'
                ]
            );
            
            setTexts(
                [
                    'shotel',
                    'shotel_dis'
                ]
            );
            
            setFormsForLcfilter(optLcfilter);
        }
        setLabels();
        writeLabels();
        checkTransferChkbox();
        if(showQSDetails == 1) {
            // Details zusammenbauen
            showSelectedDetailsText();
            // Details anzeigen
            $('#ttPosQuicksearchSelectedDetails').fadeIn(400);
        }
        if (extendedSearch == '1') {
            $('#ttQuicksearchExtendButton').hide();
            $('#ttQuicksearchSubmitButton').hide();
            $('#ttPosQuicksearchDetails').show();
        }


        try {
            document.getElementById('erster_termin').innerHTML  = this.erster_termin;
            document.getElementById('letzter_termin').innerHTML = this.letzter_termin;
        } catch(e){}
        
        var buttons = document.getElementsByName('btnFinden');
        
        for (var i = 0; i < buttons.length; i ++) {
            try {
                buttons[i].setAttribute('src', imgPfad + 'submit' + (i == 0 ? '' : '_big') + '.png');
            } catch(e){}
        }
        
        if (detail == 'termine') {
            ibeAjaxOnReady();
        }
    };        
}
