//*************************************************************
//
// Função desenvolvida por Adriano de Sousa Rocha
// arochax@hotmail.com
//
// Descricao: Formata e Valida a digitação de um CPF em um INPUT
//
// Exemplo de utilização: (012.345.678-90)
//
// <INPUT onkeypress="return FormatarCPF(this);" 
//        onblur="return ValidarCPF(this);">
//
//*************************************************************


function FormatarCPF(Campo) {
	if ("8,13,48,49,50,51,52,53,54,55,56,57".indexOf(event.keyCode) == -1) {
		event.keyCode = 0 ;
		return false ;
	}
	else {

		if (event.keyCode == 13) {
			if (ValidarCPF(Campo) != true) { 
				event.keyCode = 0 ;
				return false ;
			}
		}
	    
	    if (Campo.value.length >= 14) {
			Campo.value = "";
		}

		switch (Campo.value.length)
		{
			case 2:
		    case 6:
				Campo.value = Campo.value + String.fromCharCode(event.keyCode) + ".";
				event.keyCode = 0;
				break;
		    case 3:
		    case 7:
				Campo.value = Campo.value + "." + String.fromCharCode(event.keyCode);
				event.keyCode = 0;
				break;
			case 10:
				Campo.value = Campo.value + String.fromCharCode(event.keyCode) + "-";
				event.keyCode = 0;
				break;
		    case 11:
				Campo.value = Campo.value + "-" + String.fromCharCode(event.keyCode);
				event.keyCode = 0;
				break;
		}
	}
	return true ;
}


function ValidarCPF(Campo) {

	var dado = Campo.value;
	var bolOk = true;
		
	if(dado.length == 0) return true;
	if(dado.length != 14) bolOk = false;
								
	var soma1 = (dado.charAt(0) * 10) +
				(dado.charAt(1) * 9) +
				(dado.charAt(2) * 8) +
				(dado.charAt(4) * 7) +
				(dado.charAt(5) * 6) +
				(dado.charAt(6) * 5) +
				(dado.charAt(8) * 4) +
				(dado.charAt(9) * 3) +
				(dado.charAt(10) * 2);
				
	var resto = soma1 % 11;
	
	var digito1;
	if(resto < 2)
		digito1 = 0;
	else
		digito1 = 11 - resto;
								
	var soma2 = (dado.charAt(0)  * 11) +
				(dado.charAt(1)  * 10) +
				(dado.charAt(2)  * 9) +
				(dado.charAt(4)  * 8) +
				(dado.charAt(5)  * 7) +
				(dado.charAt(6)  * 6) +
				(dado.charAt(8)  * 5) +
				(dado.charAt(9)  * 4) +
				(dado.charAt(10) * 3) +
				(dado.charAt(12) * 2);
											
	resto = soma2 % 11;
	var digito2;
	if(resto < 2)
		digito2 = 0;
	else
		digito2 = 11 - resto;
								
	if(dado.charAt(12)!= digito1 || dado.charAt(13) != digito2) bolOk = false;
	
	if (bolOk == false) {
		Campo.value = "";
		alert('CPF invalido. Digite novamente.');
		Campo.focus();
	}
	return true;

}
