﻿

function trim(string) {
    tamanho = string.length;
    posicao = string.indexOf(" ");
    while (posicao == 0) {
        string = string.substring(1, tamanho);
        tamanho = string.length;
        posicao = string.indexOf(" ");
    }

    tamanho = string.length;
    tamanho = tamanho - 1;
    posicao = string.lastIndexOf(" ");
    while (posicao == tamanho) {
        string = string.substring(0, tamanho);
        tamanho = tamanho - 1;
        posicao = string.lastIndexOf(" ");
    }
    return string;
}

function l(n) {
    return ReplaceChar(ReplaceChar(n, ".", ""), ",", ".");
}

// Arredonda um número com um certo número de casas
// number - o que vc quer formatar
// x - numero de casas - o padra é 2
function round(number, X) {
    X = (!X ? 2 : X);
    return Math.round(number * Math.pow(10, X)) / Math.pow(10, X);
}

// Troca um caracter pelo outro
// valor - Valor original
// oldchar - Caracter que será substituido
// newchar - Catacter que substituirá
function ReplaceChar(valor, oldchar, newchar) {
    var resultado = valor;
    var temp = "";
    while (resultado.indexOf(oldchar) > -1) {
        pos = resultado.indexOf(oldchar);
        temp = resultado.substring(0, pos) + newchar + resultado.substring(pos + 1, resultado.length);
        resultado = temp;
    }
    return resultado;
}


//Funcao que verifica se entrou uma faixa de caracteres com criacao de Label atraves de Parametros
function verifica_label(faixa, obj, msg) {

    var valores = faixa;
    var resp = true;

    j = 0;
    while (j < obj.value.length && resp) {
        resp = resp && (valores.indexOf(obj.value.charAt(j)) != -1);
        if (!resp) {
            alert("O Campo " + msg.toUpperCase() + " só aceita os caracteres " + faixa + " ");
            obj.value = "";
            obj.focus();
        }
        j++;
    }
    if (resp)
        return true;
    return false;
}

function Vlr(obj) {
    if ((verifica_label('0123456789,.', obj, 'Valor'))) {
        //var error = true;
        var valor;
        valor = obj.value;
        valor = valor.toString();
        if (valor != "") {
            //VERIFICO SE EXISTE PONTO E VIRGULA
            if ((valor.indexOf(".") > 0) && (valor.indexOf(",") > 0)) {
                // Retira os separadores de milhar
                valor = ReplaceChar(valor, ".", "");
                // Troca a virgula por ponto
                valor = ReplaceChar(valor, ",", ".");
            }
            else if ((valor.indexOf(".") <= 0) && (valor.indexOf(",") > 0)) {
                // Retira os separadores de milhar
                valor = ReplaceChar(valor, ",", ".");
            }
            /*else if( (valor.indexOf(".") > 0 && valor.indexOf(".") < (valor.length - 3) ) && (valor.indexOf(",") <= 0))
            {                                             
            // Retira os separadores de milhar
            valor = ReplaceChar(valor, ".", "");
            }*/
            //PARA A FUNCAO ROUND FUNCIONAR OS VALOR DEVE ESTAR SEM VIRGULA E COM PONTO
            vlr_dec = round(parseFloat(valor), 2);
            vlr_dec = vlr_dec.toString();
            //QUEBRAR VALOR EM INTEIRO E FRACIONARIO
            if (vlr_dec.indexOf(".") > 0) {	//VERIFICO SE EXISTE PONTO
                MATRIZ = vlr_dec.split(".")
                inteiro = MATRIZ[0];
                fracionario = MATRIZ[1];
            }
            else {	//SE N&atilde;O EXISTE PONTO
                inteiro = vlr_dec
                fracionario = 0;
            }
            //FORMATO O INTEIRO
            inteiro = inteiro.toString();
            if (inteiro.indexOf("-") >= 0)
            { numero = inteiro.length - 1; }
            else
            { numero = inteiro.length; }
            if (numero > 3) {
                // Coloca os separadores de milhar
                for (i = numero; i > 0; i = i - 3) {
                    if (i == numero)
                    { inteiro2 = inteiro.substring(i - 3, numero); }
                    else if (i != numero)
                    { inteiro2 = inteiro.substring(i - 3, i) + "." + inteiro2; }
                }
                inteiro = inteiro2;
            }
            //FORMATO O FRACIONARIO
            fracionario = fracionario.toString();
            if (fracionario.length == 1)
            { fracionario = fracionario + "0"; }
            //MONTO VALOR
            vlr_dec = inteiro + ',' + fracionario;
            obj.value = vlr_dec;
        }
        else
        { obj.value = "0,00" }
    }
    else
    { obj.value = "0,00" }
}

// JavaScript Document
//adiciona mascara de cnpj
function MascaraCNPJ(cnpj) {
    if (mascaraInteiro(cnpj) == false) {
        event.returnValue = false;
    }
    return formataCampo(cnpj, '00.000.000/0000-00', event);
}

//adiciona mascara de cep
function MascaraCep(cep) {
    if (mascaraInteiro(cep) == false) {
        event.returnValue = false;
    }
    return formataCampo(cep, '00.000-000', event);
}

//adiciona mascara de data
function MascaraData(data) {
    if (mascaraInteiro(data) == false) {
        event.returnValue = false;
    }
    return formataCampo(data, '00/00/0000', event);
}

//adiciona mascara ao telefone
function MascaraTelefone(tel) {
    if (mascaraInteiro(tel) == false) {
        event.returnValue = false;
    }
    return formataCampo(tel, '(00) 0000-0000', event);
}

//adiciona mascara ao CPF
function MascaraCPF(cpf) {
    if (mascaraInteiro(cpf) == false) {
        event.returnValue = false;
    }
    return formataCampo(cpf, '000.000.000-00', event);
}

//valida telefone
function ValidaTelefone(tel) {
    exp = /\(\d{2}\)\ \d{4}\-\d{4}/
    if (!exp.test(tel.value))
        alert('Numero de Telefone Invalido!');
}

//valida CEP
function ValidaCep(cep) {
    exp = /\d{2}\.\d{3}\-\d{3}/
    if (!exp.test(cep.value))
        alert('Numero de Cep Invalido!');
}

//valida data
function ValidaData(data) {
    exp = /\d{2}\/\d{2}\/\d{4}/
    if (!exp.test(data.value))
        alert('Data Invalida!');
}

//valida o CPF digitado
function ValidarCPF(Objcpf) {
    var cpf = Objcpf.value;
    exp = /\.|\-/g
    cpf = cpf.toString().replace(exp, "");
    var digitoDigitado = eval(cpf.charAt(9) + cpf.charAt(10));
    var soma1 = 0, soma2 = 0;
    var vlr = 11;

    for (i = 0; i < 9; i++) {
        soma1 += eval(cpf.charAt(i) * (vlr - 1));
        soma2 += eval(cpf.charAt(i) * vlr);
        vlr--;
    }
    soma1 = (((soma1 * 10) % 11) == 10 ? 0 : ((soma1 * 10) % 11));
    soma2 = (((soma2 + (2 * soma1)) * 10) % 11);

    var digitoGerado = (soma1 * 10) + soma2;
    if (digitoGerado != digitoDigitado)
        alert('CPF Invalido!');
}

//valida numero inteiro com mascara
function mascaraInteiro() {
    if (event.keyCode < 48 || event.keyCode > 57) {
        event.returnValue = false;
        return false;
    }
    return true;
}

//valida o CNPJ digitado
function ValidarCNPJ(ObjCnpj) {
    var cnpj = ObjCnpj.value;
    var valida = new Array(6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2);
    var dig1 = new Number;
    var dig2 = new Number;

    exp = /\.|\-|\//g
    cnpj = cnpj.toString().replace(exp, "");
    var digito = new Number(eval(cnpj.charAt(12) + cnpj.charAt(13)));

    for (i = 0; i < valida.length; i++) {
        dig1 += (i > 0 ? (cnpj.charAt(i - 1) * valida[i]) : 0);
        dig2 += cnpj.charAt(i) * valida[i];
    }
    dig1 = (((dig1 % 11) < 2) ? 0 : (11 - (dig1 % 11)));
    dig2 = (((dig2 % 11) < 2) ? 0 : (11 - (dig2 % 11)));

    if (((dig1 * 10) + dig2) != digito) {
        alert('CNPJ Invalido!');
        ObjCnpj.focus();
    }
}

//formata de forma generica os campos
function formataCampo(campo, Mascara, evento) {
    var boleanoMascara;

    var Digitato = evento.keyCode;
    exp = /\-|\.|\/|\(|\)| /g
    campoSoNumeros = campo.value.toString().replace(exp, "");

    var posicaoCampo = 0;
    var NovoValorCampo = "";
    var TamanhoMascara = campoSoNumeros.length; ;

    if (Digitato != 8) { // backspace 
        for (i = 0; i <= TamanhoMascara; i++) {
            boleanoMascara = ((Mascara.charAt(i) == "-") || (Mascara.charAt(i) == ".")
                                                                || (Mascara.charAt(i) == "/"))
            boleanoMascara = boleanoMascara || ((Mascara.charAt(i) == "(")
                                                                || (Mascara.charAt(i) == ")") || (Mascara.charAt(i) == " "))
            if (boleanoMascara) {
                NovoValorCampo += Mascara.charAt(i);
                TamanhoMascara++;
            } else {
                NovoValorCampo += campoSoNumeros.charAt(posicaoCampo);
                posicaoCampo++;
            }
        }
        campo.value = NovoValorCampo;
        return true;
    } else {
        return true;
    }
}
