window.addEvent('domready', function() {
    Scroll.doScroll();
    initAjax();
    initSearch(); 
        
    step4Karty(); 
    step4TerminySzczegoly(); 
    step4Galeria(); 
    step4Stronicowanie();
    
    initPoradnikNawigation();
    initBasket();
    initNewsletter2(); 
    zapytanie();

    initRezerwacja(); 
    
    opinieFormularz();
    opinieFormularzLista();
});


function initAjax(){
    // Ajax.init(((SiteConfig.urlSite) ? SiteConfig.urlSite + 'ajax.php' : 'http://sloneczne.beta.techweb.pl/ajax.php'), 1);
    // Ajax.start();
    Ajax = new AjaxObj((SiteConfig.urlSite) ? SiteConfig.urlSite + 'ajax.php' : 'http://sloneczne.beta.techweb.pl/ajax.php', 1);
}

function zapytanie() {
    var id = 'table-terminy';
    if (!document.getElementById(id)) return;
    var z = new Zapytanie({
        obszarID: 'table-terminy',
        linkCN: 'button-question'
    });
}

function step4Stronicowanie() {
	if (!$('step4paging')) return;
    $$('#step4paging a').each(function(a) {
		a.addEvent('click', Scroll.add);
	});
}

function step4Galeria() {
	var id = 'gallery';
    if (!document.getElementById(id)) return;
    var g = new GalleryStep4(id, {iThumbsNum: 4});
    var m = new Sloneczne_ModalGallery(g);
}

function initBasket() {
	var id = 'wyniki-step3', id2 = 'wyniki-koszyk';
    if (document.getElementById(id) || document.getElementById(id2)) {
        (new Basket()).init();
    }
}

function friendlyUrl() {
	var f = new FriendlyURL(['step1']);
    f.init();
}


function step4TerminySzczegoly() {
	var step4 = document.getElementById('table-terminy');
    if (!step4) return;
    
    var dv = new DetailView('table-terminy');
    dv.init();
}

function initSearch() {
	var id = 'step1';
    if (!document.getElementById(id)) return;
    var s = new SearchEngine.sloneczne(id, {
        transport: {
            blank: {name: 'dowolny', value: '0'}
        },
        kraj: {
            blank: {name: 'dowolny', value: '0'}                
        },
        wyjazd: {
            blank: {name: 'dowolny', value: '0'}
        },
        kategoria: {
            blank: {name: 'dowolna', value: '0'}
        },
        formElements: { // te pola beda ustawiane z url'a
            step1: ['tripTransport2', 'tripCountryName', 'tripStartflight', 'tripTrip_range', 'tripFrom', 'tripDays', 'tripPrice', 'tripHotel_category', 'tripTransport', 'tripOperator', 'tripBoard', 'trip_onlyLM', 'tripAdults'],
            step1a: []
        }
    }); s.init();
    
    var kal = new Kal({trigger: 'cal', target: 'tripStartflight'});
}


function initRezerwacja() {
	var id = 'frm-booking'; 
    var form = document.getElementById(id);
    if (!form) return;
    // return;
    var przeladowanie = new ReservActualisation.sloneczne(id, {
        stale: ['trip[room_num]', 'trip[start_from_id]'],
        zmienne: { // pokoi moze byc kilka
            room: ['id', 'board_id', 'adult_child', 'infant', 'adult', 'child']
        }
    }); przeladowanie.init();

    // var validacja = new Validation.step5(id, {
        // 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[street_nr0]', clientName: 'nr mieszkania', 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}}
        // ],
        // zmienne: {
            // persons: [
                // {name: 'name', clientName: 'imię uczestnika', rules: {notNull: 1, onlyLetters: 1}},
                // {name: 'surname', clientName: 'nazwisko uczestnika', rules: {notNull: 1, onlyLetters: 1}},
                // {name: 'day', clientName: 'dzień urodzenia uczestnika', rules: {selected: 1}},
                // {name: 'month', clientName: 'miesiąc urodzenia uczestnika', rules: {selected: 1}},
                // {name: 'year', clientName: 'rok urodzenia uczestnika', rules: {selected: 1}}
            // ]            
        // }
    // }, {
        // submitButtonName: 'booking'
    // }); validacja.init();
	
	
	var id = 'frm-booking'; 
	var form = $(id);
	if (!form) return;

	var stale = [
		{name: 'client[name]', clientName: 'imię', rules: {custom: {re: /^[^`~!@#$%|?&*()=_+{}:";,<>0-9]+$/i, msg: 'imię zawiera niedozwolone znaki'}}},
		{name: 'client[surname]', clientName: 'nazwisko', rules: {custom: {re: /^[^`~!@#$%|?&*()=_+{}:";,<>0-9]+$/i, msg: 'nazwisko zawiera niedozwolone znaki'}}},
		{name: 'client[street]', clientName: 'ulica', rules: {custom: {re: /^[^`~!@#$%|?*=_+:";<>{}]+$/i, msg: 'ulica zawiera niedozwolone znaki'}}},
		{name: 'client[street_nr0]', clientName: 'nr doumu', rules: {custom: {re: /^[^`~!@#$%|?*=_+:";<>{}&']+$/i, msg: 'nr domu zawiera niedozwolone znaki'}}},
		{name: 'client[street_nr1]', clientName: 'nr mieszkania', rules: {custom: {re: /^[^`~!@#$%|?*=_+:";<>{}&']*$/i, msg: 'nr mieszkania zawiera niedozwolone znaki'}}},
		{name: 'client[post_code]', clientName: 'kod pocztowy', rules: {custom: {re: /^[0-9a-z\-# ]{3,10}$/i, msg: 'kod pocztowy zawiera niedozwolone znaki'}}},
		{name: 'client[city]', clientName: 'miasto', rules: {custom: {re: /^[^`~!@#$%|?*=_+:";<>]+$/i, msg: 'miasto zawiera niedozwolone znaki'}}},
		{name: 'client[phone]', clientName: 'telefon kontaktowy', rules: {custom: {re: /^[\[\]0-9\-+()# ]{7,32}$/i, msg: 'telefon kontaktowy zawiera niedozwolone znaki'}}},
		{name: 'client[email]', clientName: 'email', rules: {notNull: 1, email: 1}},
		{name: 'trip[confirm_info]', clientName: 'potwierdzenie powrotu', rules: {checked: 1}},
		
		{name: 'pesel', clientName: 'pesel', rules: {custom: {re: /^[0-9]{11}$/, msg: 'pesel ma nieprawidłowy format'}}},
		{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: {custom: {re: /^[^`~!@#$%|?&*()=_+{}:";,<>0-9]+$/i, msg: 'imię zawiera niedozwolone znaki'}}},
			{name: 'surname', clientName: 'nazwisko uczestnika', rules: {custom: {re: /^[^`~!@#$%|?&*()=_+{}:";,<>0-9]+$/i, msg: 'imię zawiera niedozwolone znaki'}}},
			{name: 'day', clientName: 'dzień urodzenia uczestnika', rules: {notNull: 1, number: 1}},
			{name: 'month', clientName: 'miesiąc urodzenia uczestnika', rules: {notNull: 1, number: 1}},
			{name: 'year', clientName: 'rok urodzenia uczestnika', rules: {notNull: 1, number: 1}}
		]    
	};
	
	var request_only = (form.getElement('input[name="trip[only_request]"]').value == '1');
	if (request_only) {
		stale = [
			{name: 'client[name]', clientName: 'imię', rules: {custom: {re: /^[^`~!@#$%|?&*()=_+{}:";,<>0-9]+$/i, msg: 'imię zawiera niedozwolone znaki'}}},
			{name: 'client[surname]', clientName: 'nazwisko', rules: {custom: {re: /^[^`~!@#$%|?&*()=_+{}:";,<>0-9]+$/i, msg: 'imię zawiera niedozwolone znaki'}}},
			{name: 'client[street]', clientName: 'ulica', rules: {custom: {re: /^[^`~!@#$%|?*=_+:";<>{}]*$/i, msg: 'ulica zawiera niedozwolone znaki'}}},
			{name: 'client[street_nr0]', clientName: 'nr doumu', rules: {custom: {re: /^[^`~!@#$%|?*=_+:";<>{}&']*$/i, msg: 'nr domu zawiera niedozwolone znaki'}}},
			{name: 'client[street_nr1]', clientName: 'nr mieszkania', rules: {custom: {re: /^[^`~!@#$%|?*=_+:";<>{}&']*$/i, msg: 'nr mieszkania zawiera niedozwolone znaki'}}},
			{name: 'client[post_code]', clientName: 'kod pocztowy', rules: {custom: {re: /(^[0-9a-z\-# ]{3,10}$)|(^\s*$)/i, msg: 'kod pocztowy zawiera niedozwolone znaki'}}},
			{name: 'client[city]', clientName: 'miasto', rules: {custom: {re: /^[^`~!@#$%|?*=_+:";<>]*$/i, msg: 'miasto zawiera niedozwolone znaki'}}},
			{name: 'client[phone]', clientName: 'telefon kontaktowy', rules: {custom: {re: /(^[\[\]0-9\-+()# ]{7,32}$)|(^\s*$)/i, msg: 'telefon kontaktowy zawiera niedozwolone znaki'}}},
			{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: {}}
		];
		zmienne = {
			persons: [
				{name: 'name', clientName: 'imię uczestnika', rules: {custom: {re: /^[^`~!@#$%|?&*()=_+{}:";,<>0-9]*$/i, msg: 'imię uczestnika zawiera niedozwolone znaki'}}},
				{name: 'surname', clientName: 'nazwisko uczestnika', rules: {custom: {re: /^[^`~!@#$%|?&*()=_+{}:";,<>0-9]*$/i, msg: 'nazwisko uczestnika zawiera niedozwolone znaki'}}},
				{name: 'day', clientName: 'dzień urodzenia uczestnika', rules: {number: 1}},
				{name: 'month', clientName: 'miesiąc urodzenia uczestnika', rules: {number: 1}},
				{name: 'year', clientName: 'rok urodzenia uczestnika', rules: {number: 1}}
			]    
		};
	}
	
	var validacja = new Validation.step5(form, {
		stale: stale,
		zmienne: zmienne
	}, {
		submitButtonName: 'booking'
	}); 
	
	validacja.init();
	
}

function googlemapsiframe(obj) {
    var oIframe = obj.getElementsByTagName('iframe')[0];
    if (oIframe && oIframe.nowyiframe) {
        return;
    } else if (oIframe) {
        var newIframe = document.createElement('iframe');
        //for (var x in oIframe) newIframe[x] = oIframe[x];
        newIframe.src = oIframe.src;
        if (parseInt(oIframe.width) > 725) {
            newIframe.width = 725;
        } else {
            newIframe.width = oIframe.width;        
        }
        newIframe.height = oIframe.height;        
        newIframe.nowyiframe = 1;
        oIframe.parentNode.replaceChild(newIframe, oIframe);
    }
}

function step4Karty() {
    var tabs = 'tabs';
    if (document.getElementById(tabs)) {    
        var tabSheet = new TabNavigation({
            sNavId: 'tabs',
            sActiveClassName: 'front',
            sDisplayNoneClassName: 'hide',
            bAddClassToParentElement: 1
        });
        tabSheet.init();
    }		
}


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

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


function opinieFormularz() {
	var id = 'opinion-form'; 
    if (!document.getElementById(id)) return;
    var validacja = new Validation.step5('form', {
        stale: [
            {name: 'field_50', clientName: 'czy polecasz ten hotel', rules: {selected: 1}},
            {name: 'field_51', clientName: 'państwa subestie', rules: {notNull: 1}},
            {name: 'field_52', clientName: 'autor', rules: {notNull: 1}},
            {name: 'field_53', clientName: 'wiek', rules: {selected: 1}},
            {name: 'field_54', clientName: 'płeć', rules: {selected: 1}},
            {name: 'field_55', clientName: 'termin podróży', rules: {notNull: 1, dateFormat: '.'}},
            {name: 'field_56', clientName: 'email', rules: {notNull: 1, email: 1}},
            {name: 'field_58', clientName: 'zasady', rules: {checked: 1}}
        ]
    }, {
        submitButtonName: 'btnSubmit'
    }); validacja.init();
}

function opinieFormularzLista() {
    if (!document.getElementById('opinie')) return;
    var links = $('opinie').getElements('p.change-form-list a');
    var fl = new OpinieFormularzLista(links, '_', 'for-');
    
}
