window.addEvent('domready', function() {
    initAjax();
    initNewTabSheet(); // pio: karty na step4 na podstawie klasy TabNawigation
    initPoradnikNawigation(); // pio: pokaz/ukryj dla poradnika na podstawie klasy TabNawigation
    initAdvSearch(); // pio: pokaz/ukryj wyszukiwarka 'zaawansowana' - klasa AdvSearch w ejuventur.js
    activateDetailView(); // szczegoly na step4
    initNewsletter2();
    initGalleryNav();
    initBasket();
    // initFriendlyURL();
    initRezerwacja(); // pio: przeladowanie formularza w 'nowej rezerwacji'; klasa ReservActualisation w _class.js
    initSearch();
    initEwniosek();

});


function initSearch() {
	var f = $('step1');
    if (f) {
        var oConfig = {
            transport: {
                blank: {name: 'dowolny', value: '0'}
            },
            kraj: {
                blank: {name: 'dowolny', value: '0'}
            },
            wyjazd: {
                blank: {name: 'dowolny', value: '0'}
            },
            kategoria: {
                blank: {name: 'dowolna', value: '0'}
            },
            advSerachFormid: 'step1a',
            formElements: { // te pola beda ustawiane z url'a
                step1: ['tripTransport2', 'tripCountryName', 'tripStartflight', 'tripTrip_range', 'tripFrom', 'tripDays', 'tripPrice', 'tripHotel_category', 'tripTransport', 'tripOperator', 'trip_onlyLM', 'trip_onlyFM'],
                step1a: ['nazwaKodHotelu']
            }
        };
    	var s = new SearchEngine(f, oConfig);
        s.init();
    }
}

function initFriendlyURL() {
    aFormIds = ['step1','step1a'];    
    var url = new FriendlyURL();
    url.initSearch(aFormIds);
}


function initEwniosek() {
    var id = 'wniosek'; 
    var form = document.getElementById(id);
    if (form != null) {
        /* VALIDACJA */
        var stale = [       
            {name: 'tripName', clientName: 'nazwa wycieczki', rules: {notNull: 1}},   
            {name: 'reservationNumber', clientName: 'numer rezerwacji', rules: {notNull: 1}},   
            {name: 'tripPrice', clientName: 'cena wycieczki', rules: {notNull: 1, number: 1}},   
            {name: 'creditAmount', clientName: 'kwota kredytu', rules: {notNull: 1, number: 1}},
            {name: 'creditPeriod', clientName: 'okres w miesiącach', rules: {notNull: 1, number: 1}},
            {name: 'firstName', clientName: 'imię', rules: {notNull: 1, onlyLetters: 1, maxSize: 20}},
            {name: 'lastName', clientName: 'nazwisko', rules: {notNull: 1, onlyLetters: 1, maxSize: 40}},
            // {name: 'pesel', clientName: 'PESEL', rules: {notNull: 1, number: 1, size: 11}},
            // {name: 'seriaDowodu', clientName: 'seria dowodu', rules: {notNull: 1, onlyLetters: 1, minSize: 2, maxSize: 3}},
            // {name: 'numerDowodu', clientName: 'numer dowodu', rules: {notNull: 1, number: 1, minSize: 5, maxSize: 8}},
            // {name: 'dataDowodu', clientName: 'data wydania dowodu', rules: {notNull: 1, dateFormat: '.'}},            
            {name: 'adresUlica', clientName: 'ulica (adres zameldowania)', rules: {notNull: 1, onlyLetters: 1, maxSize: 70, minSize: 2}},
            {name: 'adresNumerDomu', clientName: 'numer domu (adres zameldowania)', rules: {notNull: 1, maxSize: 5}},
            {name: 'adresNumerMieszkania', clientName: 'numer mieszkania (adres zameldowania)', rules: {maxSize: 5}},
            {name: 'adresMiejscowosc', clientName: 'miejscowość (adres zameldowania)', rules: {notNull: 1, onlyLetters: 1, maxSize: 60}},
            {name: 'adresKodPrefix', clientName: 'kod pocztowy prefix (adres zameldowania)', rules: {notNull: 1, number: 1, size: 2}},
            {name: 'adresKodNumber', clientName: 'kod pocztowy sufix (adres zameldowania)', rules: {notNull: 1, number: 1, size: 3}},
            {name: 'adresStatus', clientName: 'status mieszkania (adres zameldowania)', rules: {notNull: 1}},
            {name: 'dataZameldowaniaMiesiac', clientName: 'miesiąc zameldowania (adres zameldowania)', rules: {notNull: 1}},
            {name: 'dataZameldowaniaRok', clientName: 'rok zameldowania (adres zameldowania)', rules: {notNull: 1}},
            {name: 'mailUlica', clientName: 'ulica (adres korespondencyjny)', rules: {onlyLetters: 1, maxSize: 70}},
            {name: 'mailNumerDomu', clientName: 'numer domu (adres korespondencyjny)', rules: {maxSize: 5}},
            {name: 'mailNumerMieszkania', clientName: 'numer mieszkania (adres korespondencyjny)', rules: {maxSize: 5}},
            {name: 'mailMiejscowosc', clientName: 'miejscowość (adres korespondencyjny)', rules: {onlyLetters: 1, maxSize: 60}},
            {name: 'mailKodPrefix', clientName: 'kod pocztowy prefix (adres korespondencyjny)', rules: {number: 1, size: 2}},
            {name: 'mailKodNumber', clientName: 'kod pocztowy sufix (adres korespondencyjny)', rules: {number: 1, size: 3}}, 
            {name: 'telStacNumber', customMsg: 'telefon stacjonarny - ciąg 9 cyfr bez poprzedzającego zera i bez spacji', clientName: 'telefon stacjonarny', rules: {number: 1, maxSize: 9}},
            {name: 'telContactNumber',customMsg: 'telefon komórkowy - ciąg 9 cyfr bez poprzedzającego zera i bez spacji',  clientName: 'telefon komórkowy', rules: {notNull: 1, number: 1, maxSize: 9}},
            {name: 'telGodziny', clientName: 'preferowane godziny kontaktu', rules: {notNull: 1}},
            {name: 'email', clientName: 'adres e-mail', rules: {notNull: 1, email: 1}},
            {name: 'marketingAgr', clientName: 'zgoda na przetwarzanie danych', rules: {checked: 1}},
            {name: 'emailAgr', clientName: 'zgoda na otrzymywanie informacji droga elektrniczna', rules: {checked: 1}},
            {name: 'verificationAgr', clientName: 'zgoda na sprawdzenie wiarygodnosci informacji', rules: {checked: 1}},
            {name: 'pastCreditDataAgr', clientName: 'zgoda na sprawdzenie historii kredytowej', rules: {checked: 1}}
        ];
        
        
        var oConfig = {
            form: form,
            klasaBlednegoElementu: 'reservation-error',
            branchErrorDivId: 'reservation-branch-error',
            sSubmitInputName: 'wniosek-start',
            stale: stale
        };
        
        var validacja = new ewniosekValidacja(oConfig);
        validacja.init();
    }
}

function initRezerwacja() {
	var id = 'frm-booking'; 
    var form = document.getElementById(id);
    if (form != null) {
        /* PRZELADOWYWANIE */
        var oTriggers = {
            stale: ['trip[room_num]','trip[start_from_id]'],
            zmienne: { // pokoi moze byc kilka
                room: ['id', 'board_id', 'adult_child', 'infant', 'adult', 'child']
            }
        };
    
    	var ra = new ReservActualisation(form, oTriggers);
        ra.init();
    
        /* VALIDACJA */
        var stale = [
            {name: 'client[name]', clientName: 'imię', rules: {notNull: 1, onlyLetters: 1}},
            {name: 'client[surname]', clientName: 'nazwisko', rules: {notNull: 1, onlyLetters: 1}},
            {name: 'client[street]', clientName: 'ulica', rules: {notNull: 1}},
            {name: 'client[post_code]', clientName: 'kod pocztowy', rules: {notNull: 1, post_code: 1}},
            {name: 'client[city]', clientName: 'miasto', rules: {notNull: 1, onlyLetters: 1}},
            {name: 'client[phone]', clientName: 'telefon kontaktowy', rules: {notNull: 1, number: 1, minSize: 9}},
            {name: 'client[email]', clientName: 'email', rules: {notNull: 1, email: 1}},
            {name: 'regulamin', clientName: 'regulamin', rules: {checked: 1}},
            {name: 'ochronadanych', clientName: 'ochrona danych', rules: {checked: 1}},
            {name: 'handlowainformacja', clientName: 'informacje handlowe', rules: {checked: 1}}
        ];
        
        var zmienne = {
            persons: [
                {name: 'name', clientName: 'imię uczestnika', rules: {notNull: 1, onlyLetters: 1}},
                {name: 'surname', clientName: 'nazwisko uczestnika', rules: {notNull: 1, onlyLetters: 1}}
            ]    
        };
        
        var oConfig = {
            form: form,
            klasaBlednegoElementu: 'reservation-error',
            branchErrorDivId: 'reservation-branch-error',
            zmienne: zmienne,
            stale: stale
        };
        
        var validacja = new ReservValidation(oConfig);
        validacja.init();
    }
}


function initBasket() {
	var id = 'tbl-res';
    if (document.getElementById(id)) {
        (new Basket()).init();
    }
}

function initGalleryNav() {
	var id = 'gallery';
    if (document.getElementById(id) != null){
    	var gn = new GalleryNav();
        gn.init();
    }
}

function initAjax(){
    Ajax.init('http://memotravel.pl/ajax.php', 1);
    Ajax.start();
}

function initNewTabSheet() {
    var tabs = 'tabs';
    if (document.getElementById(tabs) != null) {    
        var oConfig = {
            sNavId: tabs,
            sActiveClassName: 'front',
            sDisplayNoneClassName: 'back',
            bAddClassToParentElement: 1
        };
    
        var tabSheet = new TabNavigation2(oConfig);
        tabSheet.init();
    }		
}


function initPoradnikNawigation() {
    var linki = 'por-menu';
    if (document.getElementById(linki) != null) {
        var menu = new TabNavigation2({sNavId:linki, sActiveClassName:'front', bAddClassToParentElement: 1});
        menu.init();
    }		
}

function initAdvSearch() {
    var link = 'advLink';
    var ukryte = ['step1a', 'ukrytePola', 'ukrytePola2'];
    var oTxt = {ukryte: 'wyszukiwanie zaawansowane', pokazane: 'wyszukiwanie uproszczone'};
    if (document.getElementById(link)) {
        var advSearch = new AdvSearch(document.getElementById(link), ukryte, oTxt);
        advSearch.init();
    }		
}

function initNewsletter2() {    
	var n = new Newsletter();
    n.init();
}
