function validateDNI(string){
	var regexp = new RegExp('^[0-9]{8}[ -]?[A-Z]$', 'i');
	letra = string.substring(string.length-1, string.length).toUpperCase();
	if(string.length < 9 || !regexp.test(string)) {
		return 'malformed_dni';
	} else if(letra != letraDNI(string.substring(0, 8))) {
		return 'no_valid_char_dni';
	}
	return 'ok_dni';
}

function letraDNI(dni){
	cadena="TRWAGMYFPDXBNJZSQVHLCKET";
	posicion = dni % 23;
	return cadena.substring(posicion,posicion+1);
}

//VALIDATE NIE
function validateNIE(string){
	var regexp = new RegExp('^(X[ -]?|)?([0-9]{8}[ -]?[A-Z])$', 'i');
	letra = string.substring(string.length-1, string.length).toUpperCase();
	string = string.replace(regexp, "$2");
	if(string.length < 9 || !regexp.test(string)) {
		return 'malformed_nie';
	} else if(letra != letraDNI(string.substring(0, 8))) {
		return 'no_valid_char_nie';
	}
	return 'ok_nie';
}

//VALIDATE CIF
function validateCIF(string){
	var pares = 0;
	var impares = 0;
	var suma;
	var ultima;
	var unumero;
	var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I");
	var xxx;
	//Pasar el CIF a mayúsculas
	texto = string.toUpperCase();
	//Comprobar que "texto" tenga el formato de un CIF
	var regular = new RegExp('/^[ABCDEFGHKLMNPQS]\d\d\d\d\d\d\d[0-9,A-J]$/g');
	if (!regular.exec(texto)) return 'malformed_cif';

	ultima = texto.substr(8,1);

	for (var cont = 1 ; cont < 7 ; cont ++)
	{
		xxx = (2 * parseInt(texto.substr(cont++,1))).toString() + "0";
		impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
		pares += parseInt(texto.substr(cont,1));
	}

	xxx = (2 * parseInt(texto.substr(cont,1))).toString() + "0";
	impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));

	suma = (pares + impares).toString();
	unumero = parseInt(suma.substr(suma.length - 1, 1));
	unumero = (10 - unumero).toString();

	if(unumero == 10) unumero = 0;

	if ((ultima == unumero) || (ultima == uletra[unumero]))
		return 'ok_cif';
	else
		return 'no_valid_char_cif';
}
