// Função para validação de CPF
// A função recebe o número do documento, e retorna True/False.
// Caso o retorno seja False, informa para o usuário com um alert.

//inclui a máscara no CPF
function FormataCPF()
{
	var campo = window.event.srcElement;

	switch (campo.value.length)
	{
		case 3:
			campo.value = campo.value + ".";
			break;
		case 7:
			campo.value = campo.value + ".";
			break;
		case 11:
			campo.value = campo.value + "-";
			break;
	}					
}

//Funcao para tirar os caracteres diferentes de numeros
function limpa_string(str)
{					
	var checkStr = str;
	var VarCpf = ""
	x = 0
					
	for (i = 0;  i < checkStr.length;  i++)
	{
		ch = checkStr.charAt(i);
		if (!isNaN(ch))
		{
			VarCpf += ch
		}
		else
		{
			x++
		}
	}	

	return VarCpf
}

function ValidaCpf(valor)
{
	nrodocto = limpa_string(valor.value);
	cpftam = nrodocto.length;
	/*Função que valida o cpf através do dígito verificador*/  

	//caso não informe o valor
	if (nrodocto=="")
		return true

  var cpf = nrodocto;
  var cpfCalc = cpf.substr(0,9);  
  var cpfSoma = 0;
  var cpfDigit = 0;
  var digit = "";      
  var aux;
  
/*VERIFICA SE TODOS OS NUMEROS NAO SAO IGUAIS */
  aux = cpf.charAt(0);
  for (i = 0; i < 11; i++)
  {
	    if (cpf.charAt(i) != aux){
		i = 11; //para sair do for
	}	
	if 	(i == 10){
		alert("CPF incorreto!");		
		valor.value = "";
		valor.select();
		return(false);		
	}
  }
	      				    
  for (i = 0; i < 9; i++)
  {
    cpfSoma = cpfSoma + parseInt(cpfCalc.charAt(i)) * (10 - i)
  }
				  
  cpfDigit = 11 - cpfSoma%11;
				    
  if (cpfDigit > 9)
  {
    cpfCalc = cpfCalc + "0";
  }
  else
  {
    digit = digit + cpfDigit;
    cpfCalc = cpfCalc + digit.charAt(0);
  }
				  
  cpfSoma = 0;
				  
  for (i = 0; i < 10; i++) 
  {
    cpfSoma = cpfSoma + parseInt(cpfCalc.charAt(i)) * (11 - i)
  }
				  
  cpfDigit = 11 - cpfSoma%11;
				  
  if (cpfDigit > 9)
  {
    cpfCalc = cpfCalc + "0";
  }
  else
  {
    digit = "";
    digit = digit + cpfDigit;
    cpfCalc = cpfCalc + digit.charAt(0);
  }  
				   
  if (cpf != cpfCalc)
  {
    alert("CPF incorreto!");    
    valor.value = "";
    valor.select();
    return(false);
  }
  else
  {	
	var VarCpfFrm = ""
	
	for (y = 0;  y < cpftam;  y++)
	{
		ch = nrodocto.charAt(y);
		
		VarCpfFrm = VarCpfFrm + ch

		switch (y)
		{
			case 2:
				VarCpfFrm = VarCpfFrm + ".";
				break;
			case 5:
				VarCpfFrm = VarCpfFrm + ".";
				break;
			case 8:
				VarCpfFrm = VarCpfFrm + "-";
				break;
		}		
	}
	valor.value = "";
	valor.value = VarCpfFrm;
    return(true);
  }
}
