﻿function IsNumeric(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}

function MaskInteger() {
    if (event.keyCode < 48 || event.keyCode > 57) {
        event.returnValue = false;
        return false;
    }
    return true;
}

function MaskDouble() {
    if (event.keyCode == 46) { event.keyCode = 44; }
    if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode != 44)) {
        event.returnValue = false;
        return false;
    }
    return true;
}

function MaskCPF(campo) {
    if (MaskInteger(campo) == false) {
        event.returnValue = false;
    }
    return FormatField(campo, '000.000.000-00', event);
}

function MaskCNPJ(campo) {
    if (MaskInteger(campo) == false) {
        event.returnValue = false;
    }
    return FormatField(campo, '00.000.000/0000-00', event);
}

function MaskCPF_CNPJ(campo) {
    if (MaskInteger(campo) == false) {
        event.returnValue = false;
    }

    if (campo.value.length < 15) {
        return FormatField(campo, '000.000.000-00', event);
    } else {
        return FormatField(campo, '00.000.000/0000-00', event);
    }
}

function MaskZipCode(campo) {
    if (MaskInteger(campo) == false) {
        event.returnValue = false;
    }
    return FormatField(campo, '00.000-000', event);
}

function MaskPhone(campo) {
    if (MaskInteger(campo) == false) {
        event.returnValue = false;
    }
    return FormatField(campo, '(00) 0000-0000', event);
}

function FormatField(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++;
            }
        }
        if (NovoValorCampo == '(') { NovoValorCampo = ''; }
        campo.value = NovoValorCampo;
        return true;
    } else {
        return true;
    }
}

function IsCPFValid(cpf) {
    var i;

    while (cpf.indexOf('.') >= 0) { cpf = cpf.replace('.', ''); }
    while (cpf.indexOf('-') >= 0) { cpf = cpf.replace('-', ''); }
    while (cpf.indexOf(' ') >= 0) { cpf = cpf.replace(' ', ''); }

    if ((cpf == '11111111111') || (cpf == '22222222222') || (cpf == '33333333333') || (cpf == '44444444444') || (cpf == '55555555555') || (cpf == '66666666666') || (cpf == '77777777777') || (cpf == '88888888888') || (cpf == '99999999999')) {
        return false;
    }

    var c = cpf.substr(0, 9);
    var dv = cpf.substr(9, 2);
    var d1 = 0;

    for (i = 0; i < 9; i++) {
        d1 += c.charAt(i) * (10 - i);
    }

    if (d1 == 0) {
        return false;
    }

    d1 = 11 - (d1 % 11);
    if (d1 > 9) d1 = 0;
    if (dv.charAt(0) != d1) {
        return false;
    }

    d1 *= 2;
    for (i = 0; i < 9; i++) {
        d1 += c.charAt(i) * (11 - i);
    }

    d1 = 11 - (d1 % 11);
    if (d1 > 9) d1 = 0;
    if (dv.charAt(1) != d1) {
        return false;
    }

    return true;
}

function IsCNPJValid(CNPJ) {
    IsValid = false;

    if ((CNPJ.length > 17) && (CNPJ.charAt(2) == ".") && (CNPJ.charAt(6) == ".") && (CNPJ.charAt(10) == "/") && (CNPJ.charAt(15) == "-")) {
        if (document.layers && parseInt(navigator.appVersion) == 4) {
            x = CNPJ.substring(0, 2);
            x += CNPJ.substring(3, 6);
            x += CNPJ.substring(7, 10);
            x += CNPJ.substring(11, 15);
            x += CNPJ.substring(16, 18);
            CNPJ = x;
        } else {
            CNPJ = CNPJ.replace(".", "");
            CNPJ = CNPJ.replace(".", "");
            CNPJ = CNPJ.replace("-", "");
            CNPJ = CNPJ.replace("/", "");
        }

        var nonNumbers = /\D/;
        if (!nonNumbers.test(CNPJ)) {
            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] = CNPJ.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 ((CNPJ.charAt(12) == a[12]) && (CNPJ.charAt(13) == a[13])) {
                IsValid = true;
            }
        }
    }

    return IsValid;
}
