$(document).ready(function(){
    var settings = jQuery.extend({
        verifying : 'form-verifying',
        success : 'form-success',
        failed : 'form-failed'
    });

    //			function removeStatus(element) {
    //				$(element).parent().removeClass(settings.verifying).removeClass(settings.success).removeClass(settings.failed);
    //				$(element).removeClass(settings.verifying).removeClass(settings.success).removeClass(settings.failed);
    //			}
    function removeStatus(element) {
        //				$(element).parent().removeClass(settings.verifying).removeClass(settings.success).removeClass(settings.failed);
        $(element).removeClass(settings.verifying).removeClass(settings.success).removeClass(settings.failed);
    }

    function setStatus(element, result, text_succ, text_fail) {
        removeStatus(element);
        removeStatus(element+'-result');
        $(element+'-result').html('');
        if(result == 1) {
            $(element).addClass(settings.success);
            $(element+'-result').addClass(settings.success);
            $(element+'-result').html(text_succ);
        //					$(element).parent().addClass(settings.success);
        //					$(element).addClass(settings.success);
        } else {
            //					$(element).parent().addClass(settings.failed);
            $(element).addClass(settings.failed);
            $(element+'-result').addClass(settings.failed);
            $(element+'-result').html(text_fail);
        }
    }

    function validate() {
        return true;
    }
            
    function validateDomain() {
        if(this.timer) {
            clearTimeout(this.timer);
            this.timer = undefined;
        }

        this.timer = setTimeout(function() {
            removeStatus('#login');
            removeStatus('#login-result');
                    
            $('#login-result').addClass(settings.verifying);
            $('#login-result').html('Kontroluji dostupnost.');
            //					$('#domain').parent().addClass(settings.verifying);

            var params = {
                id : 'login',
                value : $('#login').val(),
                domain : $('#domain').val()
            };


            $.post('/inc/ajax/validate.php', params, function(result) {
                setStatus('#login', result, 'Login a doména jsou v pořádku.', 'Zadejte prosím jiný login nebo doménu.');
            }, 'text'); // .post
        }, 1000);
    }

    $('#login').keyup(function() {
        validateDomain();
    }); // keyup

    $('#domain').change(function() {
        validateDomain();
    }); // change

            
    function check_passwords() {
        var pass1 = $('#password').val();
        var pass2 = $('#password_check').val();
        if(pass1 != pass2) {
            setStatus('#password_check', 0, '', 'Hesla se nerovnají.');
        } else if(pass2 == '') {
            setStatus('#password_check', 0, '', 'Heslo je prázdné.');
        } else {
            setStatus('#password_check', 1, 'Hesla se rovnají.', '');
        }
    }

    function validatePassword() {
        var value = $('#password').val();
        if(value.length < 5) {
            setStatus('#password', 0, '', 'Heslo je příliš krátké.');
        } else if(/^[a-z]*$/.test(value) || /^[A-Z]*$/.test(value) || /^[0-9]*$/.test(value)) {
            setStatus('#password', 0, '', 'Heslo je příliš slabé.');
        } else if(value.length > 15) {
            setStatus('#password', 0, '', 'Heslo je příliš dlouhé.');
        } else {
            setStatus('#password', 1, 'Heslo je dostatečné.', '');
        }
    }

    $('#password').keyup(function() {
        validatePassword();
        check_passwords();
    }); // keyup

    $('#password_check').keyup(function() {
        check_passwords();
    }); // keyup

    function check_emails() {
        var email1 = $('#email').val();
        var email2 = $('#email_check').val();
        if(email1 != email2) {
            setStatus('#email_check', 0, '', 'E-maily se nerovnají.');
        } else if(email2 == '') {
            setStatus('#email_check', 0, '', 'E-mail je prázdný.');
        } else {
            setStatus('#email_check', 1, 'E-maily se rovnají.', '');
        }
    }

    function validateEmail() {
        var email = $('#email').val();
        if(! /^.+@.+\..+$/.test(email)) {
            setStatus('#email', 0, '', 'Neplatný e-mail.');
        } else {
            setStatus('#email', 1, 'Platný e-mail', '');
        }
    }

    $('#email').keyup(function() {
        validateEmail();
        check_emails();
    }); // keyup

    $('#email_check').keyup(function() {
        check_emails();
    }); // keyup

    $(document).ready(function() {
        var val = $('#send_error').val();
        if(val == "1") {
            validateDomain()
            validatePassword();
            check_passwords();
            validateEmail();
            check_emails();
        }
    });

    Number.prototype.formatMoney = function(c, d, t){
    var n = this, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "", i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
       return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
     };

    function recountOrderPrice() {
        var tarifs = new Array();
        tarifs['mujweb'] = 50;
        tarifs['mojefirma'] = 200;
        tarifs['mujobchod'] = 500;
        var tarif = $('#tariff').val();
        var months = $('#tariff-month').val();
        var price = 0;
        if(tarifs[tarif]) {
            price = tarifs[tarif] * months;
        }
        $('#tariff-price').html(price.formatMoney(2, ',', ' ') + ' Kč');
    }

    $('#tariff').change(function() {
        if(/^moje/.test($(this).val()) || /^muj/.test($(this).val())) {
            $('#tariff-nofree').show();
            $('#fakturacni-udaje').show();
            $('#h-fakturace').show();
            $('#h-kontakt').hide();
        } else {
            $('#tariff-nofree').hide();
            $('#fakturacni-udaje').hide();
            $('#h-fakturace').hide();
            $('#h-kontakt').show();
        }
        recountOrderPrice();
    });

    $('#tariff-month').change(function() {
        recountOrderPrice();
    });


    /*	$(this).each(function() {
				$(this).keyup(function() {
					validate(this);
				});
			});*/


    $('form').submit(function(){
        });
});

