function validacpf(cpf) {
	var numeros, digitos, soma, i, resultado, digitos_iguais, resto;
	digitos_iguais = true;
	// verifica a quantidade de digitos
	if (cpf.length < 11) {
		alert('CPF deve ter 11 dígitos!');
		return false;
	}
	// verifica se algarismos repetidos (Ex: 11111111111)
	for (i = 1; i < cpf.length; i++) {
		if (cpf.charAt(0) != cpf.charAt(i)) {
			digitos_iguais = false;
			break;
		}
	}
	if (!digitos_iguais) {
		numeros = cpf.substring(0, 9);
		digitos = cpf.substring(9);
		soma = 0;
		for (i = 10; i > 1; i--) {
			soma += numeros.charAt(10 - i) * i;
		}
		resto = soma % 11;
		resultado = (resto < 2) ? 0 : (11 - resto);
		if (resultado != digitos.charAt(0)) {
			alert('CPF Inválido!');
			return false;
		}
		numeros = cpf.substring(0, 10);
		soma = 0;
		for (i = 11; i > 1; i--) {
			soma += numeros.charAt(11 - i) * i;
		}
		resto = soma % 11;
		resultado = (resto < 2) ? 0 : 11 - (soma % 11);
		if (resultado != digitos.charAt(1)) {
			alert('CPF Inválido!');
			return false;
		}
		return true;
	} else {
		alert('CPF Inválido!');
		return false;
	}
}

function valida() { //v2.1
  
  var email = document.form.email.value; 
  var cpf = document.form.cpf.value;
  erro = new String;

  for (var i=0;i<document.form.elements.length;i++)
  {
	var campo = document.form.elements[i];
    if ((campo.alt == "CAMPO OBRIGATÓRIO") || (campo.alt == "CAMPO OBRIGAT&Oacute;RIO") || (campo.id == "selectObrigatorio")) {
	    if ((campo.value == 0) || (campo.value == "0") || (campo.value == "") || (campo.value == null		)){ alert("Preencha o(s) campo(s) obrigatório(s).\nO cursor vai para o campo obrigatório que você deixou de preencher.");
		 campo.focus();
		 return false;
		}
	}	
  }
  
  if (!((email.indexOf("@") > -1) && (email.substring(email.indexOf("@")+1).indexOf(".") > -1))) 
	{ 
		alert("O formato de email não é válido."); 
		document.all['email'].select(); 
		return false;

  }
  
  if (cpf.length < 11) erro += "São necessários 11 digitos no campo CPF! \n";

  if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999"){
			erro += "Número de CPF inválido!"
   }
   
   var a = [];
   var b = new Number;
   var c = 11;
   for (i=0; i<11; i++){
		   a[i] = cpf.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 ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])){
		   erro +="Número de CPF inválido!";
   }

   if (erro.length > 0){
		   alert(erro);
		   return false;
   }
 
   document.form.submit();
} 


function isCPFCNPJ(campo,pType){
   if( isEmpty( campo ) ){return false;}

   var campo_filtrado = "", valor_1 = " ", valor_2 = " ", ch = "";
   var valido = false;
        
   for (i = 0; i < campo.length; i++){
      ch = campo.substring(i, i + 1);
      if (ch >= "0" && ch <= "9"){
         campo_filtrado = campo_filtrado.toString() + ch.toString()
         valor_1 = valor_2;
         valor_2 = ch;
      }
      if ((valor_1 != " ") && (!valido)) valido = !(valor_1 == valor_2);
   }
   if (!valido) campo_filtrado = "12345678912";

   if (campo_filtrado.length < 11){
      for (i = 1; i <= (11 - campo_filtrado.length); i++){campo_filtrado = "0" + campo_filtrado;}
   }

	if(pType <= 1){
		if ( ( campo_filtrado.substring(9,11) == checkCPF( campo_filtrado.substring(0,9) ) ) && ( campo_filtrado.substring(11,12)=="") ){return true;}
	}

	if((pType == 2) || (pType == 0)){
		if (campo_filtrado.length >= 14){
			if ( campo_filtrado.substring(12,14) == checkCNPJ( campo_filtrado.substring(0,12) ) ){ return true;}
		}
	}
	
	return false;
}

function checkCNPJ(vCNPJ){
   var mControle = "";
   var aTabCNPJ = new Array(5,4,3,2,9,8,7,6,5,4,3,2);
   for (i = 1 ; i <= 2 ; i++){
      mSoma = 0;
      for (j = 0 ; j < vCNPJ.length ; j++)
         mSoma = mSoma + (vCNPJ.substring(j,j+1) * aTabCNPJ[j]);
      if (i == 2 ) mSoma = mSoma + ( 2 * mDigito );
      mDigito = ( mSoma * 10 ) % 11;
      if (mDigito == 10 ) mDigito = 0;
      mControle1 = mControle ;
      mControle = mDigito;
      aTabCNPJ = new Array(6,5,4,3,2,9,8,7,6,5,4,3);
   }
   return( (mControle1 * 10) + mControle );
}

function checkCPF(vCPF){
   var mControle = ""
   var mContIni = 2, mContFim = 10, mDigito = 0;
   for (j = 1 ; j <= 2 ; j++){
      mSoma = 0;
      for (i = mContIni ; i <= mContFim ; i++)
         mSoma = mSoma + (vCPF.substring((i-j-1),(i-j)) * (mContFim + 1 + j - i));
      if (j == 2 ) mSoma = mSoma + ( 2 * mDigito );
      mDigito = ( mSoma * 10 ) % 11;
      if (mDigito == 10) mDigito = 0;
      mControle1 = mControle;
      mControle = mDigito;
      mContIni = 3;
      mContFim = 11;
   }
   return( (mControle1 * 10) + mControle );
}

function validaCampo() { //v2.1
	for (var i=0;i<document.form.elements.length;i++)
  	{
		var campo = document.form.elements[i];
        
    	if ((campo.alt == "CAMPO OBRIGATÓRIO") || (campo.alt == "CAMPO OBRIGAT&Oacute;RIO") || (campo.id == "selectObrigatorio")
	    ) 
    	{
    	    if ((campo.value == "0") || (campo.value == "") || (campo.value == null)){ alert("Preencha o(s) campo(s) obrigatório(s).\nO cursor vai para o campo obrigatório que você deixou de preencher.");
		 campo.focus();
		 		return false;
			}
		}	
	
    }
    
    if(isCPFCNPJ(document.form.cpf.value,1)) {
		
	}else{
		if(isCPFCNPJ(document.form.cnpj.value,2)){
		
		}else{
			alert('CPF/CNPJ Inválido');	
			return false;
		}
	}

}

