<!--
// CompruebaNIF(campo); versión 2.0
//       Novedades respecto a la versión 1.0: 
//		* Permite NIF con números de 7 cifras (no hace falta completar con un cero a la izquierda)
//              * Revisa que no haya caracteres extraños 
// ----------------------------------------------------------------------------------------
// Parámetros de Entrada:
//      Campo: Campo del formulario que contiene el NIF a analizar
//      Obligatorio: 'true' si dicho campo no puede estar vacío

//Estas son las letras permitidas en un NIF-CIF
var LETRANUM = "TRWAGMYFPDXBNJZSQVHLCKEO";
function CompruebaLetra(digitos, letra) {
	var numletra;
	
	if ((digitos.length<7) || (digitos.length>8)) return false;
	if (letra.length!=1) return false;
	letra=letra.toUpperCase();
	numletra=(digitos % 23);
	if (LETRANUM.charAt(numletra)!=letra) return false;
	return true;
}

// Valores permitidos: X00000000A (extranjeros) y 000000000A (españoles)

function CompruebaNIF(campo, obligatorio){
	
	var valor = campo.value.toUpperCase();
	var letra;
	var digitos;
	var i; //Se usa como índice de bucle
	var ok; //Se usa para control de bucle
	var car; //Se usa para almacenar caracteres
	
	//Comprobar si está vacío y/o es obligatorio rellenarlo
	if (valor=="") {
		if (obligatorio) {
			alert("Es necesario que indique el campo " + campo.name.toUpperCase());
			campo.focus();
			return false;
		}
		//else return true;
	}


	
	//Si es un NIF extranjero, quitamos la X y lo tratamos igual que los españoles
	if (valor.charAt(0)=="X") valor=valor.substring(1,valor.length);
	
	//Comprobar la longitud. Se admiten 8 ó 9 cifras incluyendo la letra.
	if ((valor.length<8) || (valor.length>9)){
		alert("La longitud del NIF es incorrecta.");
		campo.focus();
		campo.select();
		return false;
	}
	
	//Comprobamos que en las primeras posiciones sólo puede haber cifras
	
	i=0;
	ok=true;
	while ((i<(valor.length-1)) && (ok)){
		car=valor.charAt(i);
		if (!((car>='0') && (car<='9')))
			ok=false;
		i++;
	}
	if (!ok){
		alert("Las primeras 7 u 8 posiciones sólo pueden ser cifras");
		campo.focus();
		campo.select();
		return false;
	}
	
	//Obtenemos la letra y los dígitos, y comprobamos que no haya caracteres extraños
	letra=valor.charAt(valor.length-1);
	if ((letra<'A') || (letra>'Z')){
		alert("El último caracter no es una letra");
		campo.focus();
		campo.select();
		return false;
	}
	
	digitos=valor.substring(0,valor.length-1);
	if (isNaN(parseInt(digitos))) {
		alert("No ha tecleado una cifra válida.");
		campo.focus();
		campo.select();
		return false;
	}
	
	// Comprobamos que la letra es correcta
	
	if (!CompruebaLetra(digitos, letra)) {
		alert("La letra no corresponde con la numeración, revise el campo NIF");
		campo.focus();
		campo.select();
		return false;
	}
	campo.value = campo.value.toUpperCase();
	return true;
}

// Valores permitidos: A00000000
function CompruebaCIF(campo, obligatorio){
	var valor = campo.value;
	var letra;
	var digitos;
	
	if (valor=="") {
		if (obligatorio) {
			alert("Es necesario que indique el campo " + campo.name.toUpperCase());
			campo.focus();
			return false;
		}
		else return true;
	}
	if (valor.length<9) {
		alert("El CIF no está completo, revíselo por favor (formato A12345678)");
		campo.focus();
		campo.select();
		return false;
	}
/*	27/10/2004: desactivado a petición de Escarlata
	letra = valor.charAt(0).toUpperCase();
	digitos = valor.substring(1, 9);
	if ((letra<'A') || (letra>'Z') || (isNaN(parseInt(digitos)))) {
		alert("El campo CIF no es correcto, revíselo por favor (formato A12345678)");
		campo.focus();
		campo.select();
		return false;
	}*/
	//if (!CompruebaLetra(digitos, letra)) {
	//	alert("La letra no corresponde con la numeración, revise el campo CIF");
	//	campo.focus();
	//	campo.select();
	//	return false;
	//}
	campo.value = campo.value.toUpperCase();
	return true;
}

//-->

