$(window).load(function(){

    // *************************************************************************
    // apply maks

    // cep mask
    $('input[name="cep"]').mask('99999999');

    // cpf mask
    var CPFMaskBehavior = function (val) {
        return val.replace(/\D/g, '').length === 11 ? '000.000.000-00' : '000.000.000-00';
    },
    cpfOptions = {
        onKeyPress: function(val, e, field, options) {
            field.mask(CPFMaskBehavior.apply({}, arguments), options);
        }
    };
    $('input[name="cpf"]' ).mask(CPFMaskBehavior, spOptions);

    // phone maks
    var SPMaskBehavior = function (val) {
        return val.replace(/\D/g, '').length === 13 ? '(00)00000-0000' : '(00)00000-0000';
    },
    spOptions = {
        onKeyPress: function(val, e, field, options) {
            field.mask(SPMaskBehavior.apply({}, arguments), options);
        }
    };
    $('input[name="mobilephone"]').mask(SPMaskBehavior, spOptions);
    // *************************************************************************

    // *************************************************************************
    // fetch address (ajax)

    function getAddress(cep){
        return $.ajax({
            url: `https://viacep.com.br/ws/'+ cep + '/json/`,
            type: 'GET',
            async: false,
            dataType: 'json',
            data: {logradouro: logradouro, bairro: bairro, localidade: localidade, uf: uf},
            success: function(){
                return data;
            }
        });
    }

    $('input[name="cep"]').focusout(function() {
        // only numbers
        var cep = $(this).val().replace(/\D/g, '');
        if (cep != "") {
            //Consulta o webservice viacep.com.br/
            $.getJSON("https://viacep.com.br/ws/'+ cep + '/json/?callback=meu_callback", function(dados) {
                if (!("erro" in dados)) {
                    //Atualiza os campos com os valores da consulta.
                    $('input[name="address"]').val(dados.logradouro).change();
                    $('input[name="bairro"]').val(dados.bairro).change();
                    $('input[name="city"]').val(dados.localidade).change();
                    var uf_list = {
                        'AC': 'Acre',
                        'AL': 'Alagoas',
                        'AP': 'Amapá',
                        'AM': 'Amazonas',
                        'BA': 'Bahia',
                        'CE': 'Ceará',
                        'DF': 'Distrito Federal',
                        'ES': 'Espírito Santo',
                        'GO': 'Goiás',
                        'MA': 'Maranhão',
                        'MT': 'Mato Grosso',
                        'MS': 'Mato Grosso do Sul',
                        'MG': 'Minas Gerais',
                        'PA': 'Pará',
                        'PB': 'Paraíba',
                        'PR': 'Paraná',
                        'PE': 'Pernambuco',
                        'PI': 'Piauí',
                        'RJ': 'Rio de Janeiro',
                        'RN': 'Rio Grande do Norte',
                        'RS': 'Rio Grande do Sul',
                        'RO': 'Rondônia',
                        'RR': 'Roraima',
                        'SC': 'Santa Catarina',
                        'SP': 'São Paulo',
                        'SE': 'Sergipe',
                        'TO': 'Tocantins'
                    };
                    $('select[name="state"]').val(uf_list[dados.uf]).change();
                }
            });
        }
    });

    // *************************************************************************

    // *************************************************************************
    // form submit mobilephone format

    $('form').submit(function() {
        var mobilephone = '';
        mobilephone = $('input[name="mobilephone"]').val();
        if(mobilephone[0] === '+') {
            mobilephone = mobilephone.substr(3);
        }
        mobilephone = mobilephone.replace(/[^0-9]/gi, '');
        $('input[name="mobilephone"]').unmask();
        $('input[name="mobilephone"]').val("+55" + mobilephone).change();
    });

    // *************************************************************************

});