//valida CNPJ
function ValidaCNPJ( cCNPJ ) {
   CNPJ = cCNPJ;
   erro = new String;
   if (CNPJ.length < 14) erro += "É necessario preencher ter no mínimo 14 dígitos! "; 
   var nonNumbers = /\D/;
   if (nonNumbers.test(CNPJ)) erro += "A verificação de CNPJ suporta apenas números! "; 
   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])) {
      erro +="Dígito verificador com problema!";
   }
   if (erro.length > 0) {
      return false;
   } else {
      return true;
   }
}

//valida CPF
function ValidaCPF( cCPF ) {
	
	var cDIG    = "";
	var ZERO    = "000000000000";
	var cDIG2   = 0;
	var cTEMP   = 0;
	var soma    = 0;
	var tamanho = cCPF.length;

	var aControle = new initArrayCPF( 02 );
	var aCPF      = new initArrayCPF( 11 );
	var aDigito   = new initArrayCPF( 11 );

	if ( tamanho < 11 ) {
		cTEMP = 11-tamanho;
		ZERO = ZERO.substring(0,cTEMP);
		cCPF = ZERO + cCPF;
	}

	if (cCPF == "00000000000" || cCPF == "11111111111" || cCPF == "22222222222" || cCPF == "33333333333" || cCPF == "44444444444" || cCPF == "55555555555" || cCPF == "66666666666" || cCPF == "77777777777" || cCPF == "88888888888" || cCPF == "99999999999")
	{
		return(false);
	}

	cCPF = cCPF.substring( 0 , 11 );
	cDIG  = cCPF.substring( 9 , 11 );

	for ( var i=0 ; i<=10 ; i++ ) {
		aCPF[i] = parseFloat( cCPF.substring( i , i+1 ) );
	}

	// Cálculo do primeiro Digito  - Inicio
	aDigito[8]= aCPF[8] * 2;
	aDigito[7]= aCPF[7] * 3;
	aDigito[6]= aCPF[6] * 4;
	aDigito[5]= aCPF[5] * 5;
	aDigito[4]= aCPF[4] * 6;
	aDigito[3]= aCPF[3] * 7;
	aDigito[2]= aCPF[2] * 8;
	aDigito[1]= aCPF[1] * 9;
	aDigito[0]= aCPF[0] * 10; 

	soma = 0;

	for ( var i = 0 ; i < 9 ; i++ )	{
		soma = soma + aDigito[i];
	}

	aControle[0] = 11 - ( soma - ( Math.floor( soma/11)*11 ) );

	if ( aControle[0] > 9 )	{
		aControle[0]= 0;
	}
	
	// FIM do cálculo do primeiro Digito

	// Cálculo do segundo Digito  - Inicio
	aDigito[9]= aCPF[9] * 2;
	aDigito[8]= aCPF[8] * 3;
	aDigito[7]= aCPF[7] * 4;
	aDigito[6]= aCPF[6] * 5;
	aDigito[5]= aCPF[5] * 6;
	aDigito[4]= aCPF[4] * 7;
	aDigito[3]= aCPF[3] * 8;
	aDigito[2]= aCPF[2] * 9;
	aDigito[1]= aCPF[1] * 10;

	soma = 0;

	for ( var i = 1 ; i < 10 ; i++ ) {
		soma = soma + aDigito[i];
	}

	aControle[1] = 11 - ( soma - ( Math.floor( soma/11)*11 ) );

	if ( aControle[1] > 9 )	{
		aControle[1]= 0;
	}
	
	cDIG2   = ( aControle[0] * 10 ) + aControle[1];
		
	if( parseFloat( cDIG ) != cDIG2 ) {
		return(false);
	}

	return(true);
}

function initArrayCPF(ArrayLength) {
	this.length = ArrayLength;
	for ( var i = 0 ; i < this.length ; i++ ) { 
		this[i+1] = initArrayCPF.arguments[i];
	}
}
