$(document).ready(function(){

    function ajaxDisponibilidadeLogin() {
        sucesso = false;

        if ($("#j_url").val() != "") {
            $.ajax({
                url      : "control.php",
                type     : "POST",
                dataType : "json",
                cache    : false,
                async    : false,
                data: {
                    control    : "NovoUsuario",
                    action     : "checarLogin",
                    returnType : "JSON",
                    url        : $("#j_url").val()
                },
                success: function(data) {
                    sucesso = data;
                },
                error: function(data) {
                    sucesso = data;
                }
            });
        }
        return sucesso;
    }

    function ajaxDisponibilidadeEmail() {
        sucesso = false;

        if ($("#j_email").val() != "") {
            $.ajax({
                url      : "control.php",
                type     : "POST",
                dataType : "json",
                cache    : false,
                async    : false,
                data: {
                    control    : "NovoUsuario",
                    action     : "checarEmail",
                    returnType : "JSON",
                    email      : $("#j_email").val()
                },
                success: function(data) {
                    sucesso = data;
                },
                error: function(data){
                    sucesso = data;
                }
            });
        }
        return sucesso;
    }

    function ajaxVerificaCaptcha() {
        sucesso = false;

        $.ajax({
            url      : "control.php",
            type     : "POST",
            dataType : "json",
            cache    : false,
            async    : false,
            data: {
                control        : "NovoUsuario",
                action         : "checarCaptcha",
                returnType     : "JSON",
                captchaRequest : $("#j_campoCaptcha").val()
            },
            success: function(data) {
                sucesso = data;
            }
        });
        return sucesso;
    }

    $("#j_verificarDisponibilidadeLogin").click( function() {
        var url = $("#j_url").val();
        $("#j_urlMsn").html("");
        $("#j_disponibilidadeLogin").html("");

        if (url != "" && url.length >= 5) {
            $("#j_urlMsn").html("");
            if (ajaxDisponibilidadeLogin()) {
                $("#j_disponibilidadeLogin").attr("class", "azul");
                $("#j_disponibilidadeLogin").html("O login <b>" + $("#j_url").val() + "</b> está disponível");
            } else {
                $("#j_disponibilidadeLogin").attr("class", "vermelho");
                $("#j_disponibilidadeLogin").html("O login <b>" + $("#j_url").val() + "</b> não está disponível");
            }
        }
    });

    $("#j_carregaCaptcha").click( function() {
        var url = $("#j_url_site").val();
        var numero = 100 + Math.floor(Math.random() * 11);
        $("#j_imgCaptcha").attr("src", url + "app/libs/captcha/imagebuilder.php?var=" + numero);
    });

    $("#j_verificaCaptcha").click(function() {
        return ajaxVerificaCaptcha();
    });

    $("#j_data_nascimento").mask("99/99/9999");

    jQuery.validator.addMethod("numerosLetras", function(value, element) {
      return this.optional(element) || /^([A-Za-z0-9\.]*)$/.test(value); // [:punct:]|[:graph:]||[:ctrl:]
    }, "Permitido apenas letras e números.");

    $("#j_cadastroUsuario1").validate({
        rules: {
            nome: "required",
            data_nascimento: {
                required: true,
                date: true
            },
            url: {
                required:      true,
                minlength:     5,
                numerosLetras: true
            },
            senha: {
                required: true,
                minlength: 8
            },
            confirma_senha: {
                required: true,
                minlength: 8,
                equalTo: "#j_senha"
            },
            email: {
                required: true,
                email: true
            },
            aceitoTermo: "required"
        },
        messages: {
            nome:           "O campo <b>Seu nome</b> é obrigatório",
            data_nascimento: {
                required:   "O campo <b>data de nascimento</b> é obrigatório",
                date:       "Data incorreta."
            },
            url: {
                required:   "O campo <b>Login</b> é obrigatório",
                minlength:  "O login deve ter no minimo <b>5</b> caracteres"
            },
            senha: {
                required:   "A <b>senha</b> é obrigatória",
                minlength:  "A senha deve ter no minimo <b>8</b> caracteres"
            },
            confirma_senha: {
                required:   "A <b>confirmação da senha</b> é obrigatória",
                minlength:  "A senha deve ter no minimo <b>8</b> caracteres",
                equalTo:    "A <b>senha</b> e a <b>confirmação da senha</b> devem ser iguais"
            },
            email:          "Informe um e-mail válido",
            aceitoTermo:    "Para se cadastrar é necessário aceitar os <b>termos de uso.</b>"
        }
	});

    $("#j_cadastroUsuario1").validate({
        submitHandler: function(form) {
            form.submit();
        }
    });

    $("#j_mostrarTermosDeUso").click( function() {
        $("#j_termosDeUso").fadeIn("slow");
    });

    $("#j_prosseguir").click( function() {

        $("#j_capMsn").html("");
        $("#j_disponibilidadeEmail").html("");
        $("#j_disponibilidadeLogin").html("");

        if($("#j_cadastroUsuario1").valid()) {

            var erro = false;

            if (ajaxDisponibilidadeLogin() == false) {
                $("#j_disponibilidadeLogin").attr("class", "vermelho");
                $("#j_disponibilidadeLogin").html("O login <b>" + $("#j_url").val() + "</b> não está disponível.");
                erro = true;
            }

            if (ajaxDisponibilidadeEmail() == false) {
                $("#j_disponibilidadeEmail").attr("class", "vermelho");
                $("#j_disponibilidadeEmail").html("O e-mail <b>" + $("#j_email").val() + "</b> não está disponível.");
                erro = true;
            }

            if (ajaxVerificaCaptcha() == false) {
                $("#j_capMsn").attr("class", "vermelho");
                $("#j_capMsn").html("O código acima não está correto.");
                erro = true;
            }

            if (erro == false) {
                $(".j_loading").show();
                $("#j_cadastroUsuario1").submit();
            }
        } else {
            $(".j_mensagemDeErro").show();
            topoPagina(".j_mensagemDeErro");
        }
    });
});
