function ValidaCPF(Num_CPF)
{
	var i;
	var checkOK = "0123456789";

	// Retira os separadores
	for (i = 1;  i < Num_CPF.length;  i++) 
	{
		if ((Num_CPF.substring(i-1,i) == ".") || (Num_CPF.substring(i-1,i) == "-"))
		{
			Num_CPF = Num_CPF.substring(0,i-1) + Num_CPF.substring(i, Num_CPF.length);
		}
	}

	// Verifica se possui 11 dígitos
	if (Num_CPF == "" || Num_CPF == null || (Num_CPF.length != 11)) 
	{
		alert("O campo CPF deve ter 11 d" + String.fromCharCode(237) + "gitos.");
		return(false);
	}

	// Verifica se possui espaços em branco
	for (i = 1; i < 12 ; i++) 
	{
		if (Num_CPF.substring(i-1,i) == " ") 
		{
			alert("O campo CPF n" + String.fromCharCode(227) + "o pode conter espa" + String.fromCharCode(231) + "os.");
			return false;
		}
	}

	var checkStr = Num_CPF;
	var allValid = true;
	var decPoints = 0;
	var allNum = "";
	for (i = 0;  i < checkStr.length;  i++) 
	{
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length) 
		{
			allValid = false;
			break;
		}
		allNum += ch;
	}
	if (!allValid) 
	{
		alert("O campo CPF deve conter apenas n" + String.fromCharCode(250) + "meros.");
		return (false);
	}

	// Verifica se todos os números são iguais
	var todosIguais = "";
	ch0 = checkStr.charAt(0);
	for (i = 1;  i < checkStr.length;  i++) 
	{
		if (ch0 != checkStr.charAt(i)) 
		{
			todosIguais = false;
			break;
		}
		else 
		{
			todosIguais = true;
		}
	}
	if (todosIguais) 
	{
		alert("CPF inv" + String.fromCharCode(225) + "lido.");
		return (false);
	}

	if (Num_CPF.length == 11) 
	{
		if (!CPF_OK(Num_CPF)) 
		{
			alert("CPF inv" + String.fromCharCode(225) + "lido.");
			return (false);
		}
	}

	return(true);
}

function CPF_OK(Numero_CPF) 
{
	var Parcela;
	var Quociente;
	var Resto;
	var Soma;
	var Fator;
	var I;
	var C1;
	var C2;
	var dv1;
	var dv2;
    
	// Verifiçãoo dos dois digitos finais em relação ao número completo
	C1 = parseInt(Numero_CPF.substring(9, 10));  //10º caracter = primeiro dv
	C2 = parseInt(Numero_CPF.substring(10, 11)); //11º caracter = segundo dv
    
	// Verificação do primeiro dígito (C1)
	Soma = 0;
	Parcela = 0;
	Fator = 0;
	
	for(I=1; I<=9; I++) 
	{
		Fator = I + 1;
		Parcela = Fator * parseInt(Numero_CPF.substring(9 - I, 9 - I + 1));
		Soma = Soma + Parcela;
	} 
    
	dv1 = (Soma % 11); 
	dv1 = 11 - dv1;

	if(dv1 > 9) 
	{ 
		dv1 = 0; 
	}
		
	if(C1 != dv1) 
	{ 
		return false; 
	}
    
	// Verificação do segundo dígito (C2)
	Soma = 0;
	Parcela = 0;
	Fator = 0;
 
	for(I=1; I<=10; I++) 
	{
		Fator = I + 1;
		Parcela = Fator * parseInt(Numero_CPF.substring(10 - I, 10 - I + 1));
		Soma = Soma + Parcela;
	}
	 
	dv2 = (Soma % 11);
	dv2 = 11 - dv2;
  
	if(dv2 > 9) 
	{  
		dv2 = 0; 
	}
	if(C2 != dv2) 
	{  
		return false;  
	}

	return true;
}

