function mascara(o,f){
    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}

function execmascara(){
    v_obj.value=v_fun(v_obj.value)
}

function limparmascara(v){
    v=v.replace(/\D/g,"");
}

function leech(v){
    v=v.replace(/o/gi,"0")
    v=v.replace(/i/gi,"1")
    v=v.replace(/z/gi,"2")
    v=v.replace(/e/gi,"3")
    v=v.replace(/a/gi,"4")
    v=v.replace(/s/gi,"5")
    v=v.replace(/t/gi,"7")
    return v
}

function soNumeros(v){
    return v.replace(/\D/g,"")
}

function telefone(v){
    v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito
    v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos
    return v
}

function cpf(v){
    v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
                                             //de novo (para o segundo bloco de números)
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos

    // caso a quantidade de digitos for maior que 14 (incluindo os digitos) assume-se que é cnpj
  /*  if (v.length > 14){
        v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
        v=v.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
        v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
        v=v.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
        v=v.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
    }*/

    return v
}

function cep(v){
    v=v.replace(/D/g,"")                //Remove tudo o que não é dígito
    v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
    return v
}

function cnpj(v){
    v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
    v=v.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
    v=v.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
    return v
}

function romanos(v){
    v=v.toUpperCase()             //Maiúsculas
    v=v.replace(/[^IVXLCDM]/g,"") //Remove tudo o que não for I, V, X, L, C, D ou M
    //Essa é complicada! Copiei daqui: http://www.diveintopython.org/refactoring/refactoring.html
    while(v.replace(/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,"")!="")
        v=v.replace(/.$/,"")
    return v
}

function Verifica_Documento(formulario) {
//var DCTO = replace(replace(formulario.senha.value,'.',''),'-',''); // Recebe o valor digitado no campo
var DCTO_O = formulario.senha.value; // Recebe o valor digitado no campo
var DCTO = "";

    if (DCTO_O.length > 15) {

        DCTO = DCTO_O;

        erro = new String;
        if (DCTO.length < 18) erro += "É necessario preencher corretamente o número do CNPJ! \n\n";
        if ((DCTO.charAt(2) != ".") || (DCTO.charAt(6) != ".") || (DCTO.charAt(10) != "/") || (DCTO.charAt(15) != "-")){
            if (erro.length == 0) erro += "É necessário preencher corretamente o número do CNPJ! \n\n";
        }
        //substituir os caracteres que não são números
        if(document.layers && parseInt(navigator.appVersion) == 4){
            x = DCTO.substring(0,2);
            x += DCTO. substring (3,6);
            x += DCTO. substring (7,10);
            x += DCTO. substring (11,15);
            x += DCTO. substring (16,18);
            DCTO = x;
        } else {
            DCTO = DCTO. replace (".","");
            DCTO = DCTO. replace (".","");
            DCTO = DCTO. replace ("-","");
            DCTO = DCTO. replace ("/","");
        }
        var nonNumbers = /\D/;
        if (nonNumbers.test(DCTO)) erro += "A verificação de CNPJ suporta apenas números! \n\n";
        var a = [];
        var b = new Number;
        var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
        for (i=0; i<12; i++){
            a[i] = DCTO.charAt(i);
            b += a[i] * c[i+1];
        }
        if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
            b = 0;
        for (y=0; y<13; y++) {
            b += (a[y] * c[y]);
        }
        if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
        if ((DCTO.charAt(12) != a[12]) || (DCTO.charAt(13) != a[13])){
            erro +="CNPJ inválido";
        }
        if (erro.length > 0){
            alert(erro);
            formulario.senha.value = '';
            formulario.senha.focus();
            return false;
        }

        return true;

    }else{

        DCTO = DCTO_O.replace('.', '').replace('.', '').replace('/', '').replace('-','')

        // Verifica se o campo é nulo
        if (DCTO == '') {
            alert('Favor Informar o CPF ou CNPJ!');
            return false;
        }

        // Aqui começa a checagem do CPF
        var POSICAO, I, SOMA, DV, DV_INFORMADO;
        var DIGITO = new Array(10);
        DV_INFORMADO = DCTO.substr(9, 2); // Retira os dois últimos dígitos do número informado

        for (I=0; I<=8; I++) {
            DIGITO[I] = DCTO.substr( I, 1);
        }

        // Calcula o valor do 10º dígito da verificação
        POSICAO = 10;
        SOMA = 0;
        for (I=0; I<=8; I++) {
            SOMA = SOMA + DIGITO[I] * POSICAO;
            POSICAO = POSICAO - 1;
        }
        DIGITO[9] = SOMA % 11;
        if (DIGITO[9] < 2) {
            DIGITO[9] = 0;
        }
        else{
            DIGITO[9] = 11 - DIGITO[9];
        }

        // Calcula o valor do 11º dígito da verificação
        POSICAO = 11;
        SOMA = 0;
        for (I=0; I<=9; I++) {
            SOMA = SOMA + DIGITO[I] * POSICAO;
            POSICAO = POSICAO - 1;
        }
        DIGITO[10] = SOMA % 11;
        if (DIGITO[10] < 2) {
            DIGITO[10] = 0;
        }
        else {
            DIGITO[10] = 11 - DIGITO[10];
        }

        // Verifica se os valores dos dígitos verificadores conferem
        DV = DIGITO[9] * 10 + DIGITO[10];
        if (DV != DV_INFORMADO) {
            alert('CPF inválido');
            formulario.senha.value = '';
            formulario.senha.focus();
            return false;
        }

    }

}
