$( document ).ready(function() {
    
    //menu mobile
    $( ".btn-open" ).click(function() {
        $(".menu").addClass("open");
    });
    
    $( ".btn-close" ).click(function() {
        $(".menu").removeClass("open");
    });
    
    $('.sub').mouseover(function() {
        $('.overlay').stop().fadeIn();
    });
    
    $('.sub').mouseleave(function () {
        $('.overlay').stop().fadeOut();
    });
    
    //banners home
    $('.banners .owl-carousel').owlCarousel({
        items:1,
        margin:0,
        loop:false,
        nav:false,
    })
    
    //blog highlight
    $('.blog-highlight .owl-carousel').owlCarousel({
        items:1,
        margin:0,
        loop:false,
        nav:false,
    })
    
    //related
    $('.related .owl-carousel').owlCarousel({
        items:4,
        margin:20,
        loop:false,
        nav:false,
        responsive : {
            0 : {
                items:1,
                stagePadding: 60,
            },
            480 : {
                items:2,
                stagePadding: 60,
            },
            768 : {
                
            }
        }
    })
    
    //blog
    $('.internal.blog .owl-carousel').owlCarousel({
        items:3,
        margin:15,
        loop:false,
        nav:false,
        responsive : {
            0 : {
                items:1,
            },
            480 : {
                items:2,
            },
            768 : {
                
            }
        }
    })
    
    //accordion
    $('.accordion-toggle').click(function(){
        $(this).next().slideToggle(300);
        $('.accordion-content').not($(this).next()).slideUp(300);
        $(this).toggleClass('active');
        $('.accordion-toggle').not($(this)).removeClass('active');
    });
    
    //anchor
    $('.about .nav a').click(function(){
        $('html, body').animate({
            scrollTop: $( $(this).attr('href') ).offset().top
        }, 500);
        return false;
    });

    // Validate form banner
    $('.form-home').validate({
        rules: {
            'email': {
                required: true,
                email: true
            },
            'produto-servico': {
                required: true
            },
            'nome': {
                required: true
            }
        },
        highlight: function(element) {
            $(element).closest(".form-control, select").addClass("error");
        },
        unhighlight: function(element) {
            $(element).closest(".form-control, select").removeClass("error");
        },
        invalidHandler: function (event, validator) {},
        submitHandler: function (form) {
            var btnSubmit = $('.js-btn-submit');
            $('.loading').fadeIn('fast');
            $.ajax({
                method: 'POST',
                url: $(form).attr('action'),
                data: $(form).serialize(),
                dataType: 'json',
                beforeSend: function () {
                    btnSubmit.attr('disabled', 'disabled');
                },
                success: function (resp) {
                    if (resp.tipo == 'sucesso') {
                        window.location = baseUrl + '/sucesso';
                    };
                    if (resp.tipo == 'erro') {
                        alert(resp.mensagem);
                    };
                    $('.loading').fadeOut('fast');
                },
                error: function (context) {
                    alert('Falha ao enviar formulário.');
                    $('.loading').fadeOut('fast');
                },
                complete: function () {
                    btnSubmit.removeAttr('disabled');
                    $('.loading').fadeOut('fast');
                }
            });
            return false;
        }
    });

    // Validate newsletter
    $('.form-news').validate({
        rules: {
            email: {
                required: true,
                email: true
            },
            nome: {
                required: true
            }
        },
        highlight: function(element) {
            $(element).closest(".form-control").addClass("error");
        },
        unhighlight: function(element) {
            $(element).closest(".form-control").removeClass("error");
        },
        invalidHandler: function (event, validator) {},
        submitHandler: function (form) {
            var btnSubmit = $('.js-btn-submit');
            $('.loading').fadeIn('fast');
            $.ajax({
                method: 'POST',
                url: $(form).attr('action'),
                data: $(form).serialize(),
                dataType: 'json',
                beforeSend: function () {
                    btnSubmit.attr('disabled', 'disabled');
                },
                success: function (resp) {
                    if (resp.tipo == 'sucesso') {
                        window.location = baseUrl + '/sucesso';
                    };
                    if (resp.tipo == 'erro') {
                        alert(resp.mensagem);
                    };
                    $('.loading').fadeOut('fast');
                },
                error: function (context) {
                    alert('Falha ao enviar formulário.');
                    $('.loading').fadeOut('fast');
                },
                complete: function () {
                    btnSubmit.removeAttr('disabled');
                    $('.loading').fadeOut('fast');
                }
            });
            return false;
        }
    });

    // Validate ordem de serviço
    $('.form-ordem').validate({
        rules: {
            'email': {
                required: true,
                email: true
            },
            'empresa': {
                required: true
            },
            'produto-servico': {
                required: true
            },
            'cpf-cnpj': {
                required: true
            },
            'nome': {
                required: true
            },
            'telefone': {
                required: true
            },
            'cep': {
                required: true
            },
            'bairro': {
                required: true
            },
            'endereco': {
                required: true
            },
            'numero': {
                required: true
            },
            'mensagem': {
                required: true
            }
        },
        highlight: function(element) {
            $(element).closest(".form-control, select").addClass("error");
        },
        unhighlight: function(element) {
            $(element).closest(".form-control, select").removeClass("error");
        },
        invalidHandler: function (event, validator) {},
        submitHandler: function (form) {
            var btnSubmit = $('.js-btn-submit');
            $('.loading').fadeIn('fast');
            $.ajax({
                method: 'POST',
                url: $(form).attr('action'),
                data: $(form).serialize(),
                dataType: 'json',
                beforeSend: function () {
                    btnSubmit.attr('disabled', 'disabled');
                },
                success: function (resp) {
                    if (resp.tipo == 'sucesso') {
                        window.location = baseUrl + '/sucesso';
                    };
                    if (resp.tipo == 'erro') {
                        alert(resp.mensagem);
                    };
                    $('.loading').fadeOut('fast');
                },
                error: function (context) {
                    alert('Falha ao enviar formulário.');
                    $('.loading').fadeOut('fast');
                },
                complete: function () {
                    btnSubmit.removeAttr('disabled');
                    $('.loading').fadeOut('fast');
                }
            });
            return false;
        }
    });

    // Validate produtos
    $('.form-produtos').validate({
        rules: {
            email: {
                required: true,
                email: true
            },
            nome: {
                required: true
            },
            telefone: {
                required: true
            },
            mensagem: {
                required: true
            }
        },
        highlight: function(element) {
            $(element).closest(".form-control").addClass("error");
        },
        unhighlight: function(element) {
            $(element).closest(".form-control").removeClass("error");
        },
        invalidHandler: function (event, validator) {},
        submitHandler: function (form) {
            var btnSubmit = $('.js-btn-submit');
            $('.loading').fadeIn('fast');
            $.ajax({
                method: 'POST',
                url: $(form).attr('action'),
                data: $(form).serialize(),
                dataType: 'json',
                beforeSend: function () {
                    btnSubmit.attr('disabled', 'disabled');
                },
                success: function (resp) {
                    if (resp.tipo == 'sucesso') {
                        window.location = baseUrl + '/sucesso';
                    };
                    if (resp.tipo == 'erro') {
                        alert(resp.mensagem);
                    };
                    $('.loading').fadeOut('fast');
                },
                error: function (context) {
                    alert('Falha ao enviar formulário.');
                    $('.loading').fadeOut('fast');
                },
                complete: function () {
                    btnSubmit.removeAttr('disabled');
                    $('.loading').fadeOut('fast');
                }
            });
            return false;
        }
    });

    // Validate servicos
    $('.form-servicos').validate({
        rules: {
            email: {
                required: true,
                email: true
            },
            nome: {
                required: true
            },
            telefone: {
                required: true
            },
            mensagem: {
                required: true
            }
        },
        highlight: function(element) {
            $(element).closest(".form-control").addClass("error");
        },
        unhighlight: function(element) {
            $(element).closest(".form-control").removeClass("error");
        },
        invalidHandler: function (event, validator) {},
        submitHandler: function (form) {
            var btnSubmit = $('.js-btn-submit');
            $('.loading').fadeIn('fast');
            $.ajax({
                method: 'POST',
                url: $(form).attr('action'),
                data: $(form).serialize(),
                dataType: 'json',
                beforeSend: function () {
                    btnSubmit.attr('disabled', 'disabled');
                },
                success: function (resp) {
                    if (resp.tipo == 'sucesso') {
                        window.location = baseUrl + '/sucesso';
                    };
                    if (resp.tipo == 'erro') {
                        alert(resp.mensagem);
                    };
                    $('.loading').fadeOut('fast');
                },
                error: function (context) {
                    alert('Falha ao enviar formulário.');
                    $('.loading').fadeOut('fast');
                },
                complete: function () {
                    btnSubmit.removeAttr('disabled');
                    $('.loading').fadeOut('fast');
                }
            });
            return false;
        }
    });

    // Validate contact
    $('.form-contact').validate({
        rules: {
            email: {
                required: true,
                email: true
            },
            empresa: {
                required: true
            },
            nome: {
                required: true
            },
            telefone: {
                required: true
            },
            mensagem: {
                required: true
            }
        },
        highlight: function(element) {
            $(element).closest(".form-control").addClass("error");
        },
        unhighlight: function(element) {
            $(element).closest(".form-control").removeClass("error");
        },
        invalidHandler: function (event, validator) {},
        submitHandler: function (form) {
            var btnSubmit = $('.js-btn-submit');
            $('.loading').fadeIn('fast');
            $.ajax({
                method: 'POST',
                url: $(form).attr('action'),
                data: $(form).serialize(),
                dataType: 'json',
                beforeSend: function () {
                    btnSubmit.attr('disabled', 'disabled');
                },
                success: function (resp) {
                    if (resp.tipo == 'sucesso') {
                        window.location = baseUrl + '/sucesso';
                    };
                    if (resp.tipo == 'erro') {
                        alert(resp.mensagem);
                    };
                    $('.loading').fadeOut('fast');
                },
                error: function (context) {
                    alert('Falha ao enviar formulário.');
                    $('.loading').fadeOut('fast');
                },
                complete: function () {
                    btnSubmit.removeAttr('disabled');
                    $('.loading').fadeOut('fast');
                }
            });
            return false;
        }
    });
     
    //CEP AUTOCOMPLETE
    function limpa_formulário_cep() {
        // Limpa valores do formulário de cep.
        $("#endereco").val("");
        $("#bairro").val("");
        $('.loading').fadeOut('fast');
    }
    
    //Quando o campo cep perde o foco.
    $(".js-cep").blur(function() {

        //Nova variável "cep" somente com dígitos.
        var cep = $(this).val().replace(/\D/g, '');

        //Verifica se campo cep possui valor informado.
        if (cep != "") {

            //Expressão regular para validar o CEP.
            var validacep = /^[0-9]{8}$/;

            //Valida o formato do CEP.
            if(validacep.test(cep)) {

                //Preenche os campos com "..." enquanto consulta webservice.
                $('.loading').fadeIn('fast');
                $("#endereco").val("...");
                $("#bairro").val("...");

                //Consulta o webservice
                $.getJSON("https://api.caju.ag/address/zipcode?z="+ cep, function(dados) {

                    if (!("erro" in dados)) {
                        //Atualiza os campos com os valores da consulta.
                        $("#endereco").val(dados.address);
                        $("#bairro").val(dados.neighborhood);
                        $('.loading').fadeOut('fast');
                    } 
                    else {
                        //CEP pesquisado não foi encontrado.
                        limpa_formulário_cep();
                        alert("CEP não encontrado.");
                    }
                });
            } 
            else {
                //cep é inválido.
                limpa_formulário_cep();
                alert("Formato de CEP inválido.");
            }
        } //end if.
        else {
            //cep sem valor, limpa formulário
            limpa_formulário_cep();
        }
    });

     //mask
     $('input[type="tel"]').focusout(function(){
        var phone, element;
        element = $(this);
        element.unmask();
        phone = element.val().replace(/\D/g, '');
        if(phone.length > 10) {
            element.mask("(99) 99999-9999");
        } else {
        element.mask("(99) 9999-99999");
        }
    }).trigger('focusout');
    $('input[name="cep"]').mask("99999-999");
    $('input[name="cpf"]').mask("999.999.999-99");

    $(".cpf-cnpj").keydown(function(){
        try {
            $(".cpf-cnpj").unmask();
        } catch (e) {}
        
        var tamanho = $(".cpf-cnpj").val().length;
        
        if(tamanho < 11){
            $(".cpf-cnpj").mask("999.999.999-99");
        } else if(tamanho >= 11){
            $(".cpf-cnpj").mask("99.999.999/9999-99");
        }
        
        // ajustando foco
        var elem = this;
        setTimeout(function(){
            // mudo a posição do seletor
            elem.selectionStart = elem.selectionEnd = 10000;
        }, 0);
        // reaplico o valor para mudar o foco
        var currentValue = $(this).val();
        $(this).val('');
        $(this).val(currentValue);
    });

});
