	//onBlur="vldCpf(this.value,this.name,this.form.name)"
	function vldCpf(vl,campo,form){
		resp = isCPF(vl);
		if (!resp && vl.length > 0){
			msg = "CPF Inválido!\nVerifique o valor digitado e tente novamente.";	
			alert(msg);			
			eval("document."+form+"."+campo+".select()");
			eval("document."+form+"."+campo+".focus()");
		}
	}
	
	function vldObjCpf(obj){
		formataCpfOnBlur(obj);
		vl = obj.value;
		resp = isCPF(vl);
		if (resp == false && vl.length > 0){
			msg = "CPF Inválido!\nVerifique o valor digitado e tente novamente.";
			alert(msg);
			obj.focus();
			obj.select();
			return false;
		} else {
			return true;	
		}
	}
		

	//FormataCpfOnBlur deve ser chamada após perder o foco do campo
	//Essa função evita que o usuário copie e cole um valor inválido
	//Chamada: onBlur='formataCpfOnBlur(this)'
	function formataCpfOnBlur(Campo){
		var vr = new String(Campo.value);
		vr = vr.replace(".", "");
		vr = vr.replace(".", "");
		vr = vr.replace("-", "");
	
		tam = vr.length;
		//alert('cpf');
		if (tam >= 10 && tam < 12) {
			//alert(tam);
			Campo.value = vr.substr(0,3) + '.' + vr.substr(3,3) + '.' + vr.substr(6,3) + '-' + vr.substr(9,tam-9);
		}	
	}
	
	//Função de validação de CPF
	function isCPF(st) {
		if (st == "")
		  return (false);
		l = st.length;
		
		//aleterado para se usuário não digitar os zeros na frente do CPF, completar sozinho
		if ((l == 9) || (l == 8)){
		   for (i = l ; i < 10; i++){
			  st = '0' + st
		   }
		}
		
		l = st.length;
		st2 = "";
		for (i = 0; i < l; i++) {
		  caracter = st.substring(i,i+1);
		  //if ((caracter >= '0') && (caracter <= '9'));
		  if (!isNaN(caracter)) st2 = st2 + caracter;
		}
		//alert(st2);
		if ((st2.length > 11) || (st2.length < 10))
		   return (false);
		if (st2.length==10)
		   st2 = '0' + st2;
		digito1 = st2.substring(9,10);
		digito2 = st2.substring(10,11);
		digito1 = parseInt(digito1,10);
		digito2 = parseInt(digito2,10);
		sum = 0; mul = 10;
		for (i = 0; i < 9 ; i++) {
			digit = st2.substring(i,i+1);
			tproduct = parseInt(digit ,10) * mul;
			sum += tproduct;
			mul--;
		}
		dig1 = ( sum % 11 );
		if ( dig1==0 || dig1==1 )
		   dig1=0;
		else
		  dig1 = 11 - dig1;
		if (dig1!=digito1)
		  return (false);
		sum = 0;
		mul = 11;
		for (i = 0; i < 10 ; i++) {
			digit = st2.substring(i,i+1);
			tproduct = parseInt(digit ,10)*mul;
			sum += tproduct;
			mul--;
		}
		dig2 = (sum % 11);
		if ( dig2==0 || dig2==1 )
		  dig2=0;
		else
		  dig2 = 11 - dig2;
		if (dig2 != digito2)
		  return (false);
		return (true);
	}


//Chamada: onKeydown="JavaScript:formataCpf(this,event)"
function formataCpf(Campo, teclapres){
	apenasNum(teclapres);
	var tecla = teclapres.keyCode;
	var vr = new String(Campo.value);
	vr = vr.replace(".", "");
	vr = vr.replace(".", "");
	vr = vr.replace("-", "");

	tam = vr.length + 1;
	
	if (tecla != 9 && tecla != 8)
		{
		if (tam > 3 && tam < 7)
			Campo.value = vr.substr(0, 3) + '.' + vr.substr(3, tam);
		if (tam >= 7 && tam <10)
			Campo.value = vr.substr(0,3) + '.' + vr.substr(3,3) + '.' + vr.substr(6,tam-6);
		if (tam >= 10 && tam < 12)
			Campo.value = vr.substr(0,3) + '.' + vr.substr(3,3) + '.' + vr.substr(6,3) + '-' + vr.substr(9,tam-9);
		}	
}
