﻿// JScript File
function validateCNPJ(sender, args)
{
    console.group("validateCPF");
    var cnpj,isValid, numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
    isValid = false;
    cnpj = ApenasNum(args.Value);
	digitos_iguais = 1;
	if (cnpj.length < 14 && cnpj.length < 15)
		isValid = false;
	for (i = 0; i < cnpj.length - 1; i++)
		if (cnpj.charAt(i) != cnpj.charAt(i + 1))
		{
			digitos_iguais = 0;
			break;
		}
	if (!digitos_iguais)
	{
		tamanho = cnpj.length - 2
		numeros = cnpj.substring(0,tamanho);
		digitos = cnpj.substring(tamanho);
		soma = 0;
		pos = tamanho - 7;
		for (i = tamanho; i >= 1; i--)
		{
			soma += numeros.charAt(tamanho - i) * pos--;
			if (pos < 2)
			pos = 9;
		}
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		if (resultado != digitos.charAt(0))
		{
			args.IsValid = false;
			return;
		}
		tamanho = tamanho + 1;
		numeros = cnpj.substring(0,tamanho);
		soma = 0;
		pos = tamanho - 7;
		for (i = tamanho; i >= 1; i--)
		{
			soma += numeros.charAt(tamanho - i) * pos--;
			if (pos < 2)
			pos = 9;
		}
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		if (resultado != digitos.charAt(1))
		{
			args.IsValid = false;
			return;
		}
		args.IsValid = true;
        return;
	}else{
		isValid =  false;
	}
	
    console.log("isValid: %s",isValid);
    args.IsValid = isValid;
	console.groupEnd();
}


function validateCPF(sender,args)
{
    console.group("validateCPF");
    var isValid,cpf,numeros, digitos, soma, i, resultado, digitos_iguais;
    cpf = ApenasNum(args.Value);
    isValid = true;
    console.log("cpf: %s",cpf);
	digitos_iguais = 1;
	if (cpf.length < 11)
    {
        isValid = false;
    }
	for (i = 0; i < cpf.length - 1; i++)
		if (cpf.charAt(i) != cpf.charAt(i + 1))
		{
			digitos_iguais = 0;
			break;
		}
	
	if (!digitos_iguais)
	{
		numeros = cpf.substring(0,9);
		digitos = cpf.substring(9);
		
        console.log("numeros: %s",numeros);
        console.log("digitos: %s",digitos);
        
		soma = 0;
		for (i = 10; i > 1; i--)
			soma += numeros.charAt(10 - i) * i;
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		
        console.log("soma: %s",soma);
        console.log("resultado: %s",resultado);
        console.log("digitos.charAt(0): %s",digitos.charAt(0));
        
		if (resultado != digitos.charAt(0))
		{
		    console.log("saida 1");
		    isValid = false;
		}
		numeros = cpf.substring(0,10);
		soma = 0;
		for (i = 11; i > 1; i--)
			soma += numeros.charAt(11 - i) * i;
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		
		console.log("numeros: %s",numeros);
        console.log("soma: %s",soma);
        console.log("resultado: %s",resultado);
        console.log("digitos.charAt(1): %s",digitos.charAt(1));
        
		if (resultado != digitos.charAt(1))
		{
		    console.log("saida 2");
		    isValid = false;
		}
	}else{
	    console.log("saida 3");
		isValid = false;
	}
	
    console.log("isValid: %s",isValid);    
	args.IsValid = isValid;
	console.groupEnd();
}

function ApenasNum(strParm) {
	var chrPrt = "0";
	var strRet = "";
	var j=0;
	for (var i=0; i < strParm.length; i++)
	{
		chrPrt = strParm.substring(i, i+1);
		if ( chrPrt.match(/\d/) )
		{
			if (j==0) {
				strRet = chrPrt;
				j=1;
			} else {
				strRet = strRet.concat(chrPrt);
			}
		}
	}
	return strRet;
}
