function validarcif(cif)
{	
	var v1 = new Array(0,2,4,6,8,1,3,5,7,9); 
	var temp = 0; 
	var par = 0;	

	var letras = "ABCDEFGHKLMNPQS";
	var una_letra   = cif.charAt(0);

	if (cif.length!=9)
	  return false;	

	if (letras.indexOf(una_letra.toUpperCase())==-1)				 
	  return false; //la letra inicial del CIF no es válida
	

	for( i = 2; i <= 6; i += 2 ) {
	  temp = temp + v1[ parseInt(cif.substr(i-1,1)) ];
	  temp = temp + parseInt(cif.substr(i,1));
	}

	temp = temp + v1[ parseInt(cif.substr(7,1)) ];

	temp = (10 - ( temp % 10));

	if( temp == 10 ) {
		if (0!=parseInt(cif.charAt(8)))
			return false; //el dígito de control no es correcto
	}
	else {
		if (temp!=parseInt(cif.charAt(8)))
			return false; //el dígito de control no es correcto
	}

	return true;

}

function validarnif(abc)
{
	var dni = abc.substring(0,abc.length-1);
	var una_letra = abc.charAt(abc.length-1);
	if (!isNaN(una_letra))
		return false; // falta la letra
	else {
	  cadena="TRWAGMYFPDXBNJZSQVHLCKET";
	  posicion = dni % 23;
	  letra = cadena.substring(posicion,posicion+1);
	  if (letra!=una_letra.toUpperCase())
		return false; // la letra no coincide
	  
	}
	return true;
}


function validarcifnif(entrada) 
{
	var re;
	var m;

	re = new RegExp("\-","g");  						
	entrada=entrada.replace(re,"");
	
	re = new RegExp("\/","g");  						
	entrada=entrada.replace(re,"");
															
	re = new RegExp(" ","g");  						
	entrada=entrada.replace(re,"");
							
	re = new RegExp("[.]","g");  						
	entrada=entrada.replace(re,"");						
	
	entrada=entrada.toUpperCase();	
			
	re = new RegExp("^[0-9]{7,}[A-Z]{1}$","i");  				
	m=entrada.match(re);
		
	if (m!=null && m.length>0) 
	{
		if (!validarnif(entrada))
			return 1; //nif incorrecto
	}
	else
	{
		re = new RegExp("^[A-Z][0-9]{7,}$","i");  
		m=entrada.match(re);
		if (m!=null && m.length>0) 
		{
			if (!validarcif(entrada))
				return 2; //cif incorrecto
		}
	}
	
	return 0; //nif/cif correcto o la entrada no es un nif/cif
}	

