$(document).ready(function(){

    // ========================================
    //
    // Inicializa mÃ¡scaras dos campos
    //
    // ========================================
    try
    {
        $('.mask-cpf').inputmask('999.999.999-99');
        $('.mask-cnpj').inputmask('99.999.999/9999-99');
        $('.mask-cpf-cnpj').inputmask(['999.999.999-99','99.999.999/9999-99']);
        $('.mask-data').inputmask('99/99/9999');
        $('.mask-cep').inputmask('99999-999');
        $(".mask-ddi-ddd-fone").inputmask( "+55 99 9999-9999[9]" ).keyup();
        $(".mask-ddd-fone").inputmask( "(99) 9999-9999[9]" ).keyup();
        $(".mask-fone").inputmask( "9999-9999[9]" );
        $('.mask-uf').inputmask('AA');
        $('.mask-placa-veiculo').inputmask('AAA-9999');
        $('.mask-horario').inputmask('99:99');
        $('.mask-agencia').inputmask(['9','99','999','9999']);
        $('.mask-conta').inputmask(['9999','99999','999999','9999999','99999999','999999999','9999999999']);
        $('.mask-digito-verificador').inputmask('9');
        $('.mask-codigo-verificacao').inputmask('9 9 9 9 9 9');

        $(".mask-cc-numero").inputmask("9999 9999 9999 9999"); //16,14, 15, 19 posições
        $(".mask-cc-validade").inputmask("99/99");
        $(".mask-cc-cvc").inputmask(["99","999","9999"]);


        $(".mask-decimal").maskMoney({thousands:'.', decimal:',', symbolStay: true});
        $(".mask-inteiro").maskMoney({thousands:'.', decimal:',', symbolStay: true,  precision: 0});
        $(".mask-inteiro-nm").maskMoney({thousands: '', decimal: '', symbolStay: false,  precision: 0}); //sem mÃ¡scara para unidades de milhar
        $(".mask-decimal-zero").maskMoney({thousands:'.', decimal:',', symbolStay: true, allowZero: true});
        $(".mask-inteiro-zero").maskMoney({thousands: '.', decimal: ',', symbolStay: true, allowZero: true, precision: 0});
    }
    catch(err)
    {
        //
    }

    $('.mask-ddi-ddd-fone').on("keyup",function(event) {

        var number = $(this).val().replace(/[^0-9]/g, '');

        if(number.length > 12) // Celular com 9 dÃ­gitos + 2 dÃ­gitos DDD e 4 da mÃ¡scara
        { 
            $(this).inputmask('+55 99 99999-999[9]');
        } else {
            $(this).inputmask('+55 99 9999-9999[9]');
        }
    });

    $('.mask-ddd-fone').on("keyup",function(event) {

        var number = $(this).val().replace(/[^0-9]/g, '');

        if(number.length > 10) // Celular com 9 dÃ­gitos + 2 dÃ­gitos DDD e 4 da mÃ¡scara
        {
            $(this).inputmask('(99) 99999-999[9]');
        } else {
            $(this).inputmask('(99) 9999-9999[9]');
        }
    });


    $('.mask-fone').on("keyup",function(event) {

        var number = $(this).val().replace(/[^0-9]/g, '');

        if(number.length > 8) 
        { 
            $(this).inputmask('99999-999[9]');
        } else {
            $(this).inputmask('9999-9999[9]');
        }
    });

    $(".mask-ddd-fone").keyup();
    $(".mask-fone").keyup();

});


// ==============================================================================
//
// Funcao remover acentos de caracteres. Ex: 'São Paulo'.removeAcentuacao();
//
// ==============================================================================
String.prototype.removeAcentuacao = function() {
    var string = this;
    var mapaAcentosHex = {
        a: /[\xE0-\xE6]/g,
        A : /[\xC0-\xC6]/g,
        e: /[\xE8-\xEB]/g,
        E : /[\xC8-\xCB]/g,
        i: /[\xEC-\xEF]/g,
        I : /[\xCC-\xCF]/g,
        o: /[\xF2-\xF6]/g,
        O : /[\xD2-\xD6]/g,
        u: /[\xF9-\xFC]/g,
        U : /[\xD9-\xDC]/g,
        c: /\xE7/g,
        C : /\xC7/g,
        n: /\xF1/g,
        N : /\xD1/g,
        '-' : /\s/g
    };

    for (var letra in mapaAcentosHex)
    {
        var expressaoRegular = mapaAcentosHex[letra];
        string = string.replace(expressaoRegular, letra);
    }

    return string;
};


// ==========================================================
//
// Funcao para formatar decimais semelhante a funcao em PHP
//
// ==========================================================
function number_format (number, decimals, decPoint, thousandsSep) {
    number = (number + '').replace(/[^0-9+\-Ee.]/g, '')
    var n = !isFinite(+number) ? 0 : +number
    var prec = !isFinite(+decimals) ? 0 : Math.abs(decimals)
    var sep = (typeof thousandsSep === 'undefined') ? ',' : thousandsSep
    var dec = (typeof decPoint === 'undefined') ? '.' : decPoint
    var s = '';

    var toFixedFix = function (n, prec) {
        var k = Math.pow(10, prec)
        return '' + (Math.round(n * k) / k)
        .toFixed(prec)
    };

    // @todo: for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.')
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep)
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || ''
        s[1] += new Array(prec - s[1].length + 1).join('0')
    }

    return s.join(dec)

}