					/////////////////////////////////////////////////////
					// Función para validar cifs.
					// Poner en el evento onBlur de 
					// los campos de cif
					//
					// campo : Referencia al campo origen de la 
					// 		conversión
					/////////////////////////////////////////////////////
function validaCIF (campo)
{
	var cif = campo.value;
	var auxi;
	var nifOk;



	auxi = new String(cif);
	if (auxi!='')
	{
		auxi = auxi.toUpperCase();
		auxi=auxi.replace("-","");
		while (auxi.indexOf(" ")!=-1)
			auxi=auxi.replace(" ","");

		campo.value=auxi;
			
		cif = auxi;
			
		// Control de longitud 
		if (auxi.length>9 || auxi.lenght==0)
		{
			campo.focus();
			return ("NIF / CIF incorrecto")
		}
		//Control empieza por T
		if (auxi.substring(0,1)=="T")
		{
		 	return ""
		}
		//Control si es niño
		if ((auxi.substring(0,1)=="0") && (auxi.substring(4,3)=="-") && (auxi.substring(7,6)))
		{
			return ""
		}		
		
		//Cif Nacional y Extranjero
		if ((auxi.substring(0,1)=="A") || (auxi.substring(0,1)=="B") || (auxi.substring(0,1)=="C") || (auxi.substring(0,1)=="D") || (auxi.substring(0,1)=="E") || (auxi.substring(0,1)=="F") || (auxi.substring(0,1)=="G") || (auxi.substring(0,1)=="H") || (auxi.substring(0,1)=="J") || (auxi.substring(0,1)=="K") || (auxi.substring(0,1)=="L") || (auxi.substring(0,1)=="M") || (auxi.substring(0,1)=="N") || (auxi.substring(0,1)=="P") || (auxi.substring(0,1)=="Q") || (auxi.substring(0,1)=="R") || (auxi.substring(0,1)=="S") || (auxi.substring(0,1)=="U") || (auxi.substring(0,1)=="V")  || (auxi.substring(0,1)=="W") ||(auxi.substring(0,1)=="X"))
		{
			cifOk=calculaCifNacionalExtranjero(auxi)	
	
			if (cifOk!=-1)
			{
				if (cifOk!=campo.value)
				{
			return ("NIF / CIF incorrecto")
				
				}
				return ""
			}
			else
			{
			return ("NIF / CIF incorrecto")
			}
			return ""
		}
			
		// Nif Nacional
		nifOk=calculaNifNacional(auxi,'C')
		if (nifOk!=-1)
		{
			if (nifOk!=campo.value)
			{
			return ("NIF / CIF incorrecto")
			}
		}
		else
		{
			return ("NIF / CIF incorrecto")
		}
	}
	else
		return ("NIF / CIF incorrecto")

return ""
}

function calculaCifNacionalExtranjero(auxi)
	
	{
		var pri_letra;
		var pri_dni;
		var pri_dig;
		var i=0;
		var digito=0;
		var suma=0;
		var auxNum;
		var strDigitAux;
		
		if (auxi.length <9)
		{
			return -1;
		}
		
		
		pri_letra= new String(auxi.substring(1,0))
		pri_dni=new String(auxi.substring(1,8))
		pri_dig=new String(auxi.substring(auxi.length -1,auxi.length))

		for (i=1;i<8;i++)
		{
	    	digito=pri_dni.substring(i,i-1)
			if (i%2==0)
			{
				suma=parseInt(suma) + parseInt(digito)
			}
			else
			{
				auxNum=parseInt(digito) * 2
				suma= parseInt(suma) + (parseInt(auxNum)/10) + (parseInt(auxNum)%10)
				
			}
		}	
		
		suma=(10 -(parseInt(suma)%10))%10
	
		
		if ((pri_letra=="K")||(pri_letra=="P")||(pri_letra=="Q")||(pri_letra=="R")||(pri_letra=="S"))
		{
			suma=parseInt(suma) + 64
			strDigitAux= new String(String.fromCharCode(suma))
			if (strDigitAux.length==1)
			{
				return pri_letra + pri_dni + strDigitAux
			}
			else
			{
				return -1
			}
		}
		else
		{
			if ((pri_letra=="X"))
			{
				strDigitAux=new String(calculaNifNacional(pri_dni,'L'))
				if (strDigitAux.length==1)
				{
					return pri_letra + pri_dni + strDigitAux
				}
				else
				{
					return -1
				}
			}
			else
			{
				strDigitAux=new String(parseInt(suma))
				if (strDigitAux.length==1)
				{
					return pri_letra + pri_dni + strDigitAux
				}
				else
				{
					return -1
				}
			}
		}
	}

function calculaNifNacional(auxi,completoLetra)
{
	var pri_let = new Array("T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E");

	var pri_letra;
	var pri_dig;
	var pri_dni;
	var auxi;
	
	
	while (auxi.length<8)
		{
			auxi = "0" + auxi;
		}


	pri_dni=new String(auxi);	

	pri_letra=pri_dni.substring(pri_dni.length -1,pri_dni.length)

	pri_dni=pri_dni.substring(8,0)	


	pri_letra_calculada=new String(pri_let[pri_dni%23])
	if (pri_letra_calculada.length==1)
	{
		if (completoLetra=='C')
		{
			return pri_dni + pri_letra_calculada
		}
		else
		{
			return pri_letra_calculada
		}
	}
	else
	{
		return -1
	}

}

