//Validação de CPF (Algoritmo validador)

function validarCPF(quem) {
	//jsCpf = document.getElementById(quem).value;
	jsCpf = quem;
	jsCpf = (jsCpf).replace(/\D/g,'');
	erro = new String;
	
	//Digitos insuficientes
	if (jsCpf.length < 11) erro += "Verifique se você digitou todos os números de seu CPF. São necessário 11 dígitos. \n\n"; 
	
	//Digitos com caracteres errados
	var nonNumbers = /\D/;
	if (nonNumbers.test(jsCpf)) erro += "Informe apenas os números de seu CPF, sem traços ou pontos. \n\n"; 
	
	//Digitos Repetidos
	if (jsCpf == "00000000000" || 
		jsCpf == "11111111111" || 
		jsCpf == "22222222222" || 
		jsCpf == "33333333333" || 
		jsCpf == "44444444444" || 
		jsCpf == "55555555555" || 
		jsCpf == "66666666666" || 
		jsCpf == "77777777777" || 
		jsCpf == "88888888888" || 
		jsCpf == "99999999999") {
			erro += "Não existe um CPF com tal sequência de números repetidos."
	   }
	   
	//Validador dos Dígitos
	var a = [];
	var b = new Number;
	var c = 11;
	for (i=0; i<11; i++){
		a[i] = jsCpf.charAt(i);
		if (i < 9) b += (a[i] * --c);
	}
	if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
	b = 0;
	c = 11;
	for (y=0; y<10; y++) b += (a[y] * c--); 
	if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
	if ((jsCpf.charAt(9) != a[9]) || (jsCpf.charAt(10) != a[10])){
		erro += "Verifique se você digitou os números de seu CPF corretamente e tente novamente.";
	}

	//Hora da Validação Real
	if (erro.length > 0){
		alert(erro);
		return false;
	} else { 
		return true;
	} 
}

