function Rellena(p_cadena, p_relleno, p_longitud, p_lado) {
	var i = 0;
	var aux_relleno = '';
	p_cadena += '';
	
	for (i = 0 ; i < p_longitud - p_cadena.length; i++)
		aux_relleno += p_relleno;
	
	if (p_lado == 'D') {
		return p_cadena + aux_relleno;
	} else {
		return aux_relleno + p_cadena;
	}

}

function DNI(n) {
	var d = (n / 23);
	d = Math.floor(d);
	var e = d * 23;
	var r = n - e;
	var a_letras = 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");
	return a_letras[r];
}


function EsNIF(p_NIF) {
	// Compruebo la longitud
	if (p_NIF.length > 9 || p_NIF.length < 2) {
		return false;
	}
	// Compruebo el numero
	var numeroNIF = p_NIF.substring(0,p_NIF.length - 1);
	if (isNaN(numeroNIF)) {
		return false;
	}

	// Compruebo la letra
	var letraNIF = p_NIF.substring(p_NIF.length - 1,p_NIF.length);
	// Convertimos la letra a mayusculas
	letraNIF = letraNIF.toUpperCase();

	if (letraNIF != DNI(numeroNIF)) {
		return false;
	}
	
	return true;

}

function EsNIE(p_NIE) {
	// Compruebo la longitud
	if (p_NIE.length > 9 || p_NIE.length < 3) {
		return false;
	}
	// Compruebo el numero
	var numeroNIE = p_NIE.substring(1,p_NIE.length - 1);
	if (isNaN(numeroNIE)) {
		return false;
	}

	// Compruebo la primera letra
	var letraNIE = p_NIE.substring(0,1);
	letraNIE = letraNIE.toUpperCase();

	if (letraNIE != "X") {
		return false;
	}
	
	// Compruebo la ultima letra
	letraNIE = p_NIE.substring(p_NIE.length - 1,p_NIE.length);
	// Convertimos la letra a mayusculas
	letraNIE = letraNIE.toUpperCase();

	if (letraNIE != DNI(numeroNIE)) {
		return false;
	}
	
	return true;
}

function CIF(n) {
	var numero = new Array();
	var i = 0;
	var r1 = 0;
	var r2 = 0;
	var r = 0;
	var resto = 0;
	var res2 = "0";
	var res1 = new Array();
	
	// Si el numero tiene menos o mas de 8 caracteres lo relleno con 0 por la izquierda
	if (n.length != 8) {
		n = Rellena(n, "0", 8, "I");
	}
	
	if (isNaN(n)) {
		return false;
	}
	
	for (i = 1; i <= n.length; i++) {
		numero[i] = parseInt(n.substring(i - 1, i), 10);
	}
	
	r1 = numero[2] + numero[4] + numero[6];
	
	for (i = 1; i <= 7; i = i + 2) {
		res2 = "" + (numero[i] * 2);
		res2 = Rellena(res2, "0", 2, "I");
		res1[1] = parseInt(res2.substring(0,1), 10);
		res1[2] = parseInt(res2.substring(1,2), 10);
		r2 = (res1[1] + res1[2]) + r2;
	}
	
	r = r1 + r2;
	resto = r % 10;
	r = 10 - resto;

	if (r == 10) {
		r = 0;
	}

	if (r == numero[8]) {
		return true;
	} else {
		return false;
	}
}

function EsCIF(p_CIF) {
	// Compruebo la longitud
	if (p_CIF.length > 9 || p_CIF.length < 2) {
		return false;
	}
	// Compruebo el numero
	var numeroCIF = p_CIF.substring(1, p_CIF.length);
	if (isNaN(numeroCIF)) {
		return false;
	}

	// Compruebo la letra
	var letraCIF = p_CIF.substring(p_CIF.length - 1,p_CIF.length);
	// Convertimos la letra a mayusculas
	letraCIF = letraCIF.toUpperCase();
	
	return CIF(numeroCIF);
}


