$(document).ready(function(){
    // máscaras
    $("#valor_credito").setMask({
        mask: "99,999.999",
        type: "reverse"
    });
    $("#parcela_minima").setMask({
        mask: "99,999.999",
        type: "reverse"
    });
    $("#parcela_maxima").setMask({
        mask: "99,999.999",
        type: "reverse"
    });
    $("#telefone").setMask({
        mask: "(99) 9999-9999"
    });


    // validação do form
    var regrasValidacao = {
        rules: {
            nome: {
                required: true
            },
            email: {
                required: true,
                email: true
            },
            telefone: {
                required: true,
                fone: true
            },
            regiao: {
                required: true
            },
            opcao_tipo_busca: {
                required: true
            },
            valor_credito:    {
                required: false
            },
            parcela_minima:   {
                required: false
            },
            parcela_maxima:   {
                required: false
            }
        },
        messages: {
            nome: {
                required: "Informe o seu nome completo"
            },
            email: {
                required: "Informe seu endereço de e-mail",
                email: "Informe um e-mail válido"
            },
            telefone: {
                required: "Informe seu telefone"
            },
            regiao: {
                required: "Selecione a sua região"
            },
            opcao_tipo_busca: {
                required: "Selecione o tipo de busca"
            },
            valor_credito:    {
                required: "Informe o valor do crédito"
            },
            parcela_minima:   {
                required: "Informe o valor da parcela"
            },
            parcela_maxima:   {
                required: "Informe o valor da parcela"
            }
        }
    }
    $("#form_simulacao").validate(regrasValidacao);



    // funções para alternância do método de busca
    function opcaoBuscaPorCredito() {
        $("#valor_credito").attr("disabled", false).removeClass("campo_inativo");
        $("#parcela_minima").attr("disabled", true).addClass("campo_inativo");
        $("#parcela_maxima").attr("disabled", true).addClass("campo_inativo");

        $("#opcao_tipo_busca_credito").attr("checked", true);

        // corrige o validador
        regrasValidacao.rules.opcao_tipo_busca.required = false;
        regrasValidacao.rules.valor_credito.required = true;
        regrasValidacao.rules.parcela_minima.required = false;
        regrasValidacao.rules.parcela_maxima.required = false;

        // remove mensagem de erro dos valores de parcelas
        if ($("#parcela_minima").next().hasClass('error'))
            $("#parcela_minima").next().remove();
        if ($("#parcela_maxima").next().hasClass('error'))
            $("#parcela_maxima").next().remove();
    }

    function opcaoBuscaPorParcela() {
        $("#valor_credito").attr("disabled", true).addClass("campo_inativo");
        $("#parcela_minima").attr("disabled", false).removeClass("campo_inativo");
        $("#parcela_maxima").attr("disabled", false).removeClass("campo_inativo");

        $("#opcao_tipo_busca_parcela").attr("checked", true);

        // corrige o validador
        regrasValidacao.rules.opcao_tipo_busca.required = false;
        regrasValidacao.rules.valor_credito.required = false;
        regrasValidacao.rules.parcela_minima.required = true;
        regrasValidacao.rules.parcela_maxima.required = true;

        // remove mensagem de erro do valor do créditos
        if ($("#valor_credito").next().hasClass('error'))
            $("#valor_credito").next().remove();
    }



    // adiciona os listeners nos radio buttons
    $("#opcao_tipo_busca_credito").bind("click", function(){
        opcaoBuscaPorCredito();
        //$("#valor_credito").focus();
    });

    $("#opcao_tipo_busca_parcela").bind("click", function(){
        opcaoBuscaPorParcela();
        //$("#parcela_minima").focus();
    });



    // dá uma incrementada na usabilidade, com os onKeyPress dos input text's
    $("#valor_credito").bind("keypress", opcaoBuscaPorCredito);
    $("#parcela_minima").bind("keypress", opcaoBuscaPorParcela);
    $("#parcela_maxima").bind("keypress", opcaoBuscaPorParcela);



    // inicializa os campos
    if ($("#opcao_tipo_busca_parcela").attr("checked") == true)
        $("#opcao_tipo_busca_parcela").click();
    else
        $("#opcao_tipo_busca_credito").click();
});