$(document).ready(function() {
    //maska pro telefon, fax
    if (document.getElementById("i_country")) {
        /// Nastav masky pri nacteni dokumentu
        var element = $("#i_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);
        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();
            });
        });
    });

    if ('' != $('#i_d_street').val() || '' != $('#i_d_house_number').val() || '' != $('#i_d_zipcode').val()) {
        $('#delivery_address').attr('checked', true);
    }
    
    if ('' != $('#i_d_company').val() || '' != $('#i_ic').val() || '' != $('#i_dic').val()) {
        $('#require_company').attr('checked', true);
    }
});

function updateLangDepandableMasks(val)
{
    if (228 == val) {
        // CR
        unmaskPhones();
        setMaskPhonesCS();
    } else if (182 == val) {
        // SR
        unmaskPhones();
        setMaskPhonesSK();
    } else {
        // pokud neni CR ani SR, masku odstranim
        unmaskPhones();
    }
}

function unmaskPhones()
{
    $('#i_phone').unmask();
    $('#i_fax').unmask();
    $('#i_d_phone').unmask();
    $('#i_d_fax').unmask();
}

function setMaskPhonesCS()
{
    $('#i_phone').mask('+420 999 999 999');
    $('#i_fax').mask('+420 999 999 999');
    $('#i_d_phone').mask('+420 999 999 999');
    $('#i_d_fax').mask('+420 999 999 999');
}

function setMaskPhonesSK()
{
    $('#i_phone').mask('+421 999 999 999');
    $('#i_fax').mask('+421 999 999 999');
    $('#i_d_phone').mask('+421 999 999 999');
    $('#i_d_fax').mask('+421 999 999 999');
}


function getLabel(elemId, simple) {
    if (elemId) {
        var req = (simple) ? '' : '.required';
        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 = $('#i_ic').val();
    value = 'CZ' + value;

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

    $('#i_dic').val(value);
}

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

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

    var error = '';

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

        if (!label) {
            continue;
        }

        var replacement = {$label: label};

        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) {
                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", "<br />\n"), { opacity: 0.8 });
        } else {
            alert(error);
        }
        return false;
    }

    if (errorToText) {
        return '';
    }


    return true;
}


