$(document).ready(function() {
    //maska pro telefon, fax
    if (document.getElementById("country")) {
        /// Nastav masky pri nacteni dokumentu
        var element = $("#country");
        var val = element.val();
        updateLangDepandableMasks(val);

        /// Callback pri zmene statu 
        element.change(function () {
            var val = $(this).val();
            updateLangDepandableMasks(val);
        });
    }
    
    ///nastavi callbacky na help
    $("p.form-fields-help").each(function(i) {
        var el = $(this);
        old_html = el.html();

        /// Zamezim retezeni napovedy - kvuli kombinaci starych a novych formu
        if (old_html.indexOf('help-content') < 0) {
            var html = "";
            html += "<span class=\'arrow\'><" + "/span>";
            html += "<span class=\'left-top\'><" + "/span>";
            html += "<span class=\'top\'><" + "/span>";
            html += "<span class=\'right-top\'><" + "/span>";
            html += "<span class=\'cleaner\'><" + "/span>";
            html += "<span class=\'help-content\'>" + el.html() + "<" + "/span>";
            html += "<span class=\'left-bottom\'><" + "/span>";
            html += "<span class=\'bottom\'><" + "/span>";
            html += "<span class=\'right-bottom\'><" + "/span>";
            html += "<span class=\'cleaner\'><" + "/span>";
    
            el.html(html);
        }

        var els = el.parent().find("input, textarea, select");

        // listener na zobrazeni napovedy
//        els.mouseover(function() { el.show() }); // nechteji to mit na mouseover
        // listener na skryti napovedy
        els.mouseout(function() { if (!this.focused) { el.hide() }});
        // listener na permanentni obrazeni napovedy
        els.focus(function()
        {
            // najdu vsechny napovedy
            var elsx = $("p.form-fields-help");
            // skryju vsechny napovedy
            elsx.each(function(i)
            {
                var tmp = $(this).parent().find("input, textarea, select");
                tmp.each(function() { this.focused = false; });
                tmp.mouseout();
            });

            // zorazim napovedu
            this.focused = true;
            el.show();
        });

        els.blur(function() {
            var elsx = $("p.form-fields-help");

            elsx.each(function () {
                $(this).hide();
            });
        });
    });
});

function updateLangDepandableMasks(val)
{
    if (228 == val) {
        // CR
        unmaskPhones();
        setMaskPhonesCS();
    } else if (182 == val) {
        // SR
        unmaskPhones();
        setMaskPhonesSK();
    }
}

/// Umoznuje definovat prefix pro idcka elementu
phones_prefix = '';

function unmaskPhones()
{
    $('#' + phones_prefix + 'phone').unmask();
    $('#' + phones_prefix + 'fax').unmask();
    $('#' + phones_prefix + 'd_phone').unmask();
    $('#' + phones_prefix + 'd_fax').unmask();
}

function setMaskPhonesCS()
{
    $('#' + phones_prefix + 'phone').mask('+420 999 999 999');
    $('#' + phones_prefix + 'fax').mask('+420 999 999 999');
    $('#' + phones_prefix + 'd_phone').mask('+420 999 999 999');
    $('#' + phones_prefix + 'd_fax').mask('+420 999 999 999');
}

function setMaskPhonesSK()
{
    $('#' + phones_prefix + 'phone').mask('+421 999 999 999');
    $('#' + phones_prefix + 'fax').mask('+421 999 999 999');
    $('#' + phones_prefix + 'd_phone').mask('+421 999 999 999');
    $('#' + phones_prefix + 'd_fax').mask('+421 999 999 999');
}

function getLabel(elemId, simple) {
    if (elemId) {
        var req = (simple) ? '' : '.required';
        req = '';
        var label = $('label' + req + '[for="' + elemId + '"]');

        if (label && label.length) {
            if (label[0].title) {
                return label[0].title;
            }

            return label[0].innerHTML;
        }
    }

    return '';
}

function updateDic()
{
    var value = getVal('ic');
    value = 'CZ' + value;

    if ('CZ' == value) {
        value = '';
    }

    setVal('dic', value);
}


// Pro potreby checkformu potrebuji nw.i18n, nebylli pridan z php
// posledni moznost mam tedy natahnout jej asynchrone
if (typeof nw == 'undefined' || typeof nw.i18n == 'undefined') {
    jQuery.getScript('/media/pagebase/nw.i18n.js');
}

function checkForm(form, errorToText)
{
    var inputs = $(form).find('.required').not(':disabled');

    if (!inputs.length) {
        return (errorToText) ? '' : true;
    }

    var error = '';

    for (i = 0; i < inputs.length; i++) {
        var el = inputs[i];
        var label = getLabel(el.id).replace(/\*+$/g, '');

        if (!label) {
            continue;
        }

        var replacement = {$label: label};

        // operuje se s kopii hodnoty prvku
        var el_value = el.value;

        // pokud je pouzito automaticke vyplnovani hodnot javascriptem, je treba kontrolovat skutecnou neprazdnost
        if ($(form).hasClass("quest_form_js_check")) {
            if (el_value == label) {
                el_value = '';
            }
        }

        if (
            !(el_value)
            || (('null' == el_value) && ('SELECT' == el.tagName))
            || (('checkbox' == el.type) && !el.checked)
        ) { 
            switch (el.type) {
                case 'checkbox':
                    error += nw.i18n.__("Zaškrtněte prosím pole '$label'.", replacement) + "\n";
                    break;

                case 'select-one':
                    error += nw.i18n.__("Vyberte prosím jednu z možností v poli '$label'.", replacement) + "\n";
                    break;

                default:
                    error += nw.i18n.__("Vyplňte prosím pole '$label'.", replacement) + "\n";
                    break;
            }

            continue;
        }

        if (-1 != el.id.indexOf('email')) {
            if (window.RegExp) {
                var re = new RegExp("^[_a-zA-Z0-9\.\-]+@[_a-zA-Z0-9\.\-]+[\.][a-zA-Z]{2,4}$");

                if (!re.test(el_value)) {
                    error += nw.i18n.__("Emailová adresa v poli '$label' je neplatná, zadejte ji prosím znovu.", replacement) + "\n";
                }
            }
        }
    }
    
    if (error) {
        if (errorToText) {
            return error;
        }

        if ($.prompt) {
            $.prompt(error.replace(/\n/g, "<br />\n"), { opacity: 0.8 });
        } else {
            alert(error);
        }
        return false;
    }

    if (errorToText) {
        return '';
    }


    return true;
}
