//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;
	}

	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];
	}
}

