﻿/// <reference path="jquery-1.4.1-vsdoc.js" />

function initDefaultPage() {
    // prvotni nastaveni formulare
    if (defaultTicket != '') {
        var radioInput = $('#journeyType' + defaultTicket.toUpperCase());
        if (radioInput.length == 1) {
            $('#radioFormSwitches input').removeAttr('checked');
            radioInput.attr('checked', 'checked');
        }
    }

    initRadionFormSwitches();
    initAutoComplete();
    initDatePickers();
    initPassengerSummary();
    initAdditionalOptions();

    // otevirani seznamu letist pro odlety a prilety:
    $('.airportListOpener').click(function () {
        var inputId = $(this).attr('rev');
        openAirportCatalog(inputId);
        return false;
    });

    // obejiti toho, že IE ignoruje '<form onsubmit="return false;"> ...'
    $('#myReservationContent form').submit(function () {
        return validateReservationForm($(this));
    });

    $('form#main').submit(function () {
        var form = $(this);
        return submitForm(form);
    });

    loadSpecialOffers("short");

    //if ($('#mainForm').height() < $('#specialOffers').height()) { $('#mainForm').css('minHeight', $('#specialOffers').height()); }
}


function initRadionFormSwitches() {
    setFormVisibility($('#radioFormSwitches input:radio:checked'));

    $('#radioFormSwitches input:radio').change(function () {
        var radio = $(this);
        setFormVisibility(radio);
    });
}

function setFormVisibility(radio) {
    var kodTypuLetenky = radio.val();           // RT - Zpatecni, OW - Jednosmerna, OJ - Jiny navrat

    // pokud jde o jednosmernou, neodesilame preferenci odletu
    if (kodTypuLetenky == 'OW') {
        $('#timePreference1').attr('disabled', 'disabled');
        $('#spanTimePreference1').hide();
        $('#date1Box').hide();
    }
    else {
        $('#timePreference1').removeAttr('disabled');
        $('#spanTimePreference1').show();
        $('#date1Box').show();
    }

    if (kodTypuLetenky != 'OJ') {
        // zpatecni, jednosmerna
        $('#dep1Box, #arr1Box').hide();
        $('#dep0Box label').text('Odkud:');
        $('#arr0Box label').text('Kam:');
    } else {
        // jiny navrat
        $('#dep1Box, #arr1Box').show();
        $('#dep0Box label').text('Odkud 1:');
        $('#arr0Box label').text('Kam 1:');
    }
}


function initAutoComplete() {
    /*
    // Puvodni volani - klasicky pres css tridu. Bohuzel - pokud automaticky otevirame naseptavace pri predani parametru v query, poradi zobrazeni je nahodne a muze prekryvat spodni naseptavac horni a naopak - je to chaoz.
       Proto volame postupne nejdrive spodni naseptavace a pote az horni, aby byly pripadne horni v popredi.
       Parametry jsou shodne pro vsechny naseptavace...

       Puvodni volani: 

    $('.airAutocomplete').autocomplete("AirportWhisper.ashx",{
        minChars: 3,
        delay: 300,
        max: 30,
        // Formátování položky v seznamu.
        formatItem: function(row) { return formatAirport(row, true) },
        // Formátování položky při výběru (zobrazí se v inputu).
        formatResult: function (row) { return formatAirport(row, false) },

        autoWhisperIds: autoWhisperIds
    });
    */

    var whisperParams = {
        minChars: 3,
        delay: 300,
        max: 30,
        formatItem: function (row) { return formatAirport(row, true) },
        formatResult: function (row) { return formatAirport(row, false) },
        autoWhisperIds: autoWhisperIds 
        };

    $('#dep1,#arr1').autocomplete("AirportWhisper.ashx", whisperParams);
    setTimeout(function () { $('#dep0,#arr0').autocomplete("AirportWhisper.ashx", whisperParams) }, 250);
}



function formatAirport(row, inList) {
    var cols = row.toString().split(';');
    var length = cols.length;
    var spaceHtml = "<img src='images/space.gif' />";
    var flagsHtml = "<img src='images/flags/";

    switch (cols[length - 1]) {
        case '1':
            {
                var str = (cols[2] == '') ? cols[1] + " (" + cols[0] + ")" : cols[1] + ", " + cols[2] + " (" + cols[0] + ")";   
                return (inList) ? spaceHtml + str : str;
            }
        case '2':
            {
                var sBuilder = new Array();
                if ((cols[2] != '')) {
                    sBuilder.push(cols[1]);
                    sBuilder.push(", ");
                    sBuilder.push(cols[2]);
                    sBuilder.push(", ");
                    sBuilder.push(cols[5]);
                    sBuilder.push(" (");
                    sBuilder.push(cols[0]);
                    sBuilder.push(")");
                }
                else {
                    sBuilder.push(cols[1]);
                    sBuilder.push(", ");
                    sBuilder.push(cols[5]);
                    sBuilder.push(" (");
                    sBuilder.push(cols[0]);
                    sBuilder.push(")");
                }
                var str = sBuilder.join('');
                return (inList) ? flagsHtml + cols[4] + ".gif'/> " + str : str;
            }
        default:
            {
                var str = cols[1] + ", " + cols[5] + " (" + cols[3] + ")";
                return (inList) ? flagsHtml + cols[4] + ".gif'/> " + str : str;
            }
    }
}

function loadSpecialOffers(type) {
    var isShort = (type == "short");
    var soUrl = "SpecialOfferList.ashx?type=";
    var fullUrl = (isShort) ? soUrl + "short" : soUrl + "full";
    var soDiv = "#shortSoDiv";

    $.ajax({
        type: "GET",
        async: true,
        url: fullUrl,
        data: {},
        dataType: "html",
        success: function (data, textStatus, jqXHR) {
            if (data != '') {

                if (isShort) {
                    $(soDiv).html(data);
                }
                else {
                    $.blockUI.defaults.fadeOut = 100;

                    $.blockUI({
                        overlayCSS: {
                            backgroundColor: '#85BBDF',
                            opacity: 0.6,
                            cursor: 'default'
                        },
                        css: {
                            top: '56px',
                            backgroundColor: 'transparent',
                            cursor: 'default',
                            position: 'absolute',
                            border: 'none',
                            width: '847px',
                            left: '50%',
                            marginLeft: '-421px'
                        },
                        onBlock: function () {
                            $('.blockOverlay').click(function () {
                                $.unblockUI({ onUnblock: unbindOnUnblock });
                            });
                            $('body').bind('keyup', function (e) {
                                var ESC = 27;
                                if (e.keyCode == ESC) {
                                    $.unblockUI({ onUnblock: unbindOnUnblock });
                                }
                            });
                        },
                        fadeIn: 0,
                        centerX: true,
                        message: data
                    });
                }

            }
        }
    });
}

function unbindOnUnblock() {
    $('body').unbind('keyup');
}

function initDatePickers() {
    initDatePicker('#date0', minDateFrom, maxDateTo);
    initDatePicker('#date1', $('#date0').val(), maxDateTo);
    
    $('#date0').change(function () {
        //var datumOdletuStr = $(this).val();
        var datumOdletu = $(this).datepicker('getDate');
        var zvoleneDatumPriletu = $('#date1').datepicker('getDate');

        if (zvoleneDatumPriletu<datumOdletu) $('#date1').datepicker('setDate',datumOdletu);

        $('#date1').datepicker('destroy');
        initDatePicker('#date1', datumOdletu, maxDateTo);
    })

}

function initDatePicker(selector, minDate, maxDate) {
    $(selector).datepicker({
        minDate: minDate,
        maxDate: maxDate
    })    
}

function initPassengerSummary() {
    $('#passengersTotal, #popupPassengersCountOkBtn').click(function () {
        $('#popupPassengersCount').toggle("slide", { direction: "up" }, 500);
    });
    passengerSummary();
    $('#popupPassengersCount select').change(function () { passengerSummary(); });
}


function initAdditionalOptions() {
    $('#addPreferences').click(function () {
        if ($.browser.msie && $.browser.version < 8) {
            $('#additionalOptionsBox').animate({
                height: "toggle",
                opacity: "toggle"
            }, 500); 
        }
        else
            $('#additionalOptionsBox').slideToggle('slow');
        return false;
    });

    $('#chbFlightOrder').change(function () {
        if ($(this).is(':checked')) {
            $('#defaultPricer').attr('name', 'PRICER_PREFDisabled');
            $(this).attr('name', 'PRICER_PREF');
        }
        else {
            $('#defaultPricer').attr('name', 'PRICER_PREF');
            $(this).attr('name', 'PRICER_PREFDisabled');
        }

        if ($.browser.msie && $.browser.version < 8) {
            $('#timePreferences').animate({
                height: "toggle",
                opacity: "toggle"
            }, 500);
        }
        else
            $('#timePreferences').slideToggle('slow');
    });
}


function passengerSummary() {
    var total = 0;
    total += parseInt($('#passengersADTCount option:selected').val());
    total += parseInt($('#passengersYTHCount option:selected').val());
    total += parseInt($('#passengersCHDCount option:selected').val());
    total += parseInt($('#passengersYCDCount option:selected').val());
    total += parseInt($('#passengersINFCount option:selected').val());

    if (total > 9) {
        alert('Maximální počet pasažéru byl překročen! Vaše rezervace může obsahovat maximálně 9 cestujících.');

        // rusime vyber u vsech krome dospelych
        $('#passengersYTHCount, #passengersCHDCount, #passengersYCDCount, #passengersINFCount').each(function () {
            var select = $(this);
            select.find('option:selected').removeAttr('selected');
            select.find('option:first').attr('selected', 'selected');
        });

        // prepocitame znovu
        passengerSummary();
        return;
    }
    $('#passengersTotal').val(total.toString());
}


/* MINI FUNCTIONS
----------------------------------------------------*/

function openAirportCatalog(input) {
    var childWindow = window.open('AirportCatalog.aspx?input=' + input, 'airportlist', 'height=480,width=600,scrollbars=1,resizable=1');
    childWindow.opener = self;
}

function setInput(input, value) {
    $('#' + input).val(value);
}

function getAirlines() {
    var airlines = $('#tbAirlines').val();
    if (airlines == ' Bez preference')
        airlines = '';
    return airlines;
}

function addAirlines(newAirline) {
    var airlines = getAirlines();
    if (airlines == '')
        airlines = newAirline;
    else
        airlines = airlines + ", " + newAirline;
    $('#tbAirlines').val(airlines);
}

function showReservation() {
    $("#myReservationContent").toggle("slide", { direction: "up" }, 500);
}

function validateReservationForm(form) {
    var resName = $('#resName');
    var resLocator = $('#resLocator');
    var error = '';
    if (resName.val() == '') {
        error = "Prosím, zadejte příjmení." + "\n";
    }
    if (resLocator.val() == '') {
        error += "Prosím, zadejte PNR lokátor.";
    }
    if (error != '') {
        alert(error);
        if (resName.val() == '') resName.focus();
        else resLocator.focus();
        return false;
    }
    else return true;
}



/* Validace pred odeslanim
----------------------------------------*/

var formSubmited = true;

function submitForm(form) {
    var error = false;

    //odchyceni dvojkliku
    if (!formSubmited) formSubmited = true;

    if (!validateDestination() || !validatePassengers()) {
        formSubmited = false;
        return false;
    }

    formSubmited = false;
    return true;
}

function validateDestination() {
    var dep0 = $('#dep0');
    var arr0 = $('#arr0');
    var dep1 = $('#dep1');
    var arr1 = $('#arr1');
    var journeyType = $('#radioFormSwitches input:radio[@name=JOURNEY_TYPE]:checked').val();
    var Message = '';
    var field = null;

    if (journeyType != 'OJ') dep1 = arr1 = null;

    if (dep0.val().length < 3) {
        Message = "Chybně zadána destinace Odkud!";
        field = dep0;
    }
    else if (arr0.val().length < 3) {
        Message = "Chybně zadána destinace Kam!";
        field = arr0;
    }
    else if (dep1 != null && dep1.val().length < 3) {
        Message = "Chybně zadána destinace Odkud 2!";
        field = dep1;
    }
    else if (arr1 != null && arr1.val().length < 3) {
        Message = "Chybně zadána destinace Kam 2!";
        field = arr1;
    }
    else if (dep0.val() == arr0.val()) {
        Message = "Musí být rozdílná volba odletu Odkud a Kam!";
        field = arr0;
    }
    else if (dep1 && arr1 && dep1.val() == arr1.val()) {
        Message = "Musí být rozdílná volba návratu Odkud a Kam!";
        field = arr1;
    }
    else return true;

    if (Message.length) alert(Message);
    if (field != null) {
        field.focus();
        if (field.type == 'text') field.select();
    }
    return false;
}

function validatePassengers() {
    var field,
        Message,
        adults = parseInt($('#passengersADTCount option:selected').val()),
        children = parseInt($('#passengersCHDCount option:selected').val()),
        infants = parseInt($('#passengersINFCount option:selected').val()),
        youths = parseInt($('#passengersYTHCount option:selected').val()),
        seniors = parseInt($('#passengersYCDCount option:selected').val());

    adults = adults + youths + seniors;

    if (!adults && children) {
        Message = "Děti nemohou cestovat bez doprovodu!";
        field = $('#passengersCHDCount');
    }
    else if (adults < infants) {
        Message = "Počet dětí do 2 let nemůže být větší než počet dospělých cestujících!";
        field = $('#passengersINFCount');
    }
    else if (!adults) {
        Message = "Vyberte cestující!";
        field = $('#passengersADTCount');
    }
    else if (9 < (adults + children)) {
        Message = "Maximální počet pasažéru byl překročen!";
        field = $('#passengersADTCount');
    }
    else {
        return true;
    }
    if (Message.length) alert(Message);
    if (field != null) {
        field.focus();
        if (field.type == 'text') field.select();
    }
    return false;
}

function blockElementOnAsyncReq(selector, imageUrl) {
    if (typeof (Sys) != "undefined") {
        $.blockUI.defaults.css = {};
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        if (prm) {
            prm.add_endRequest(function () {
                $(selector).unblock();
            });

            prm.add_beginRequest(function () {
                $(selector).block({
                    overlayCSS: { backgroundColor: '#FFFFFF' },
                    message: '<img src="' + imageUrl + '" alt="nahrávám..." />'
                });
            });
        }
    }
}

function bezdiak(txt) {

    var sdiak = "áäčďéěíĺľňóôöŕšťúůüýřžÁÄČĎÉĚÍĹĽŇÓÔÖŔŠŤÚŮÜÝŘŽ ";
    var bdiak = "aacdeeillnooorstuuuyrzAACDEEILLNOOORSTUUUYRZ-";
    tx = "";
    for (p = 0; p < txt.length; p++) {
        if (sdiak.indexOf(txt.charAt(p)) != -1) {
            tx += bdiak.charAt(sdiak.indexOf(txt.charAt(p)));
        }
        else tx += txt.charAt(p);
    }
    return tx;
}

function setDefaultButton(panelId, buttonId) {
    $('#' + panelId).find(':input').keypress(function (e) {
        if (e.which == 13) {
            $("#" + buttonId).click();
            return false;
        }
    });
}



/* jQuery UI date picker plugin init */
jQuery(function ($) {
    $.datepicker.regional['cs'] = {
        clearText: 'Vymazat', clearStatus: 'Vymaže zadané datum',
        closeText: 'Zavřít', closeStatus: 'Zavře kalendář beze změny',
        prevText: '&#x3c;Dříve', prevStatus: 'Přejít na předchozí měsí',
        prevBigText: '&#x3c;&#x3c;', prevBigStatus: '',
        nextText: 'Později&#x3e;', nextStatus: 'Přejít na další měsíc',
        nextBigText: '&#x3e;&#x3e;', nextBigStatus: '',
        currentText: 'Nyní', currentStatus: 'Přejde na aktuální měsíc',
        monthNames: ['leden', 'únor', 'březen', 'duben', 'květen', 'červen',
        'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec'],
        monthNamesShort: ['leden', 'únor', 'březen', 'duben', 'květen', 'červen',
        'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec'],
/*        monthNamesShort: ['led', 'úno', 'bře', 'dub', 'kvě', 'čer',
		'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'],*/
        monthStatus: 'Přejít na jiný měsíc', yearStatus: 'Přejít na jiný rok',
        weekHeader: 'Týd', weekStatus: 'Týden v roce',
        dayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],
        dayNamesShort: ['Ne', 'Po', 'Út', 'St', 'Čt', 'Pá', 'So'],
        dayNamesMin: ['Ne', 'Po', 'Út', 'St', 'Čt', 'Pá', 'So'],
        dayStatus: 'Nastavit DD jako první den v týdnu', dateStatus: '\'Vyber\' DD, M d',
        dateFormat: 'dd-mm-yy', firstDay: 1,
        changeYear: true,
        changeMonth: true,
        //yearRange: (new Date().getFullYear() - 110).toString() + ':' + new Date().getFullYear().toString(),
        initStatus: 'Vyberte datum', isRTL: false
    };
    $.datepicker.setDefaults($.datepicker.regional['cs']);
});

