﻿// JScript File

function ValidarCPFCNPJ(source, arguments) {

    var numCIC = arguments.Value.replace(/\D/g, '');
    var numDois = numCIC.substring(numCIC.length-2, numCIC.length);
    var novoCIC = numCIC.substring(0, numCIC.length-2);
    switch (numCIC.length){
        case 11 :
            numLim = 11;
            break;
        case 14 :
            numLim = 9;
            break;
        default :
             //arguments.IsValid = false;
             //return false;
             arguments.IsValid = true;
             return true;
    }

    var numSoma = 0;
    var Fator = 1;
    for (var i=novoCIC.length-1; i>=0 ; i--) {
        Fator = Fator + 1;
        if (Fator > numLim) {
            Fator = 2;
        }
        numSoma = numSoma + (Fator * Number(novoCIC.substring(i, i+1)));
    }
    numSoma = numSoma/11;
    var numResto = Math.round( 11 * (numSoma - Math.floor(numSoma)));
    if (numResto > 1) {
        numResto = 11 - numResto;
    }
    else {
        numResto = 0;
    }
    //-- Primeiro dígito calculado. Fará parte do novo cálculo.

    var numDigito = String(numResto);
    novoCIC = novoCIC.concat(numResto);
    //--
    numSoma = 0;
    Fator = 1;
    for (var i=novoCIC.length-1; i>=0 ; i--) {
        Fator = Fator + 1;
        if (Fator > numLim) {
            Fator = 2;
        }
        numSoma = numSoma + (Fator * Number(novoCIC.substring(i, i+1)));
    }
    numSoma = numSoma/11;
    numResto = numResto = Math.round( 11 * (numSoma - Math.floor(numSoma)));
    if (numResto > 1) {
        numResto = 11 - numResto;
    }
    else {
        numResto = 0;
    }
    //-- Segundo dígito calculado.
    numDigito = numDigito.concat(numResto);
    if (numDigito == numDois) {
        arguments.IsValid = true;
        return true;
        
    }
    else {
        arguments.IsValid = false;
        return false;
    }
}
