


//Retorna: 1 = NIF ok, 2 = CIF ok, 3 = NIE ok, -1 = NIF error, -2 = CIF error, -3 = NIE error, 0 = ??? error
function valida_nif_cif_nie_v2(docu)
{	
	var a = document.getElementById(docu).value;
	var temp=a.toUpperCase();
	var cadenadni='TRWAGMYFPDXBNJZSQVHLCKE';
	if (temp!==''){		
		//si no tiene un formato valido devuelve error
		/*
		if ((!/^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$/.test(temp) && !/^[T]{1}[A-Z0-9]{8}$/.test(temp)) && !/^[0-9]{8}[A-Z]{1}$/.test(temp))
		{			
			return false;//0;
		}
*/
		//comprobacion de NIFs estandar
		/*
		if (/^[0-9]{8}[A-Z]{1}$/.test(temp))
		{
			console.log("sin formato: temp 2 "+temp)
			posicion = a.substring(8,0) % 23;
			letra = cadenadni.charAt(posicion);
			var letradni=temp.charAt(8);
			if (letra == letradni)
			{
				return true;//1;
			}
			else
			{
				return false;//-1;
			}
		}
*/
		//algoritmo para comprobacion de codigos tipo CIF
	//	suma = parseInt(a.charAt(2))+parseInt(a.charAt(4))+parseInt(a.charAt(6));
/*
		for (i = 1; i < 8; i += 2)
		{
			console.log("sin formato: temp 3 "+temp)
			temp1 = 2 * parseInt(a.charAt(i));
			temp1 += '';
			temp1 = temp1.substring(0,1);
			temp2 = 2 * parseInt(a.charAt(i));
			temp2 += '';
			temp2 = temp2.substring(1,2);
			if (temp2 == '')
			{
				temp2 = '0';
			}

			suma += (parseInt(temp1) + parseInt(temp2));
		}
		suma += '';
		n = 10 - parseInt(suma.substring(suma.length-1, suma.length));
*/
		//comprobacion de NIFs especiales (se calculan como CIFs)
		/*
		if (/^[KLM]{1}/.test(temp)){
			if (a.charAt(8) == String.fromCharCode(64 + n)){
				return true;//1;
			}
			else{
				return false;//-1;
			}
		}
		//comprobacion de CIFs
		if (/^[ABCDEFGHJNPQRSUVW]{1}/.test(temp)){
			console.log("sin formato: temp 5 "+temp)
			temp = n + '';
			if (a.charAt(8) == String.fromCharCode(64 + n) || a.charAt(8) == parseInt(temp.substring(temp.length-1, temp.length)))			{
				console.log("true: temp 5 "+temp+" - "+a)
				return true;//2;
			}
			else{
				console.log("False: temp 5 "+temp+" - "+a)
				return false;//-2;
			}
		}
		 */
		//comprobacion de NIEs
		//T
		//if (/^[T]{1}/.test(temp))
		if (/^[T]{1}[A-Z0-9]{8}$/.test(temp)){
			console.log("sin formato: temp 6 "+temp)
			if (a.charAt(8) == /^[T]{1}[A-Z0-9]{8}$/.test(temp)){
				return true;//3;
			}
			else{
				return false;//-3;
			}
		}

		//XYZ
		if (/^[XYZ]{1}/.test(temp)){			
			temp = temp.replace('X','0')
			temp = temp.replace('Y','1')
			temp = temp.replace('Z','2')			
			pos = str_replace_v2(['X', 'Y', 'Z'], 0, ['0','1','2'], temp).substring(0, 8) % 23;			
			if (a.charAt(8) == cadenadni.substring(pos, pos + 1)){
				return true;//3;
			}
			else{
				return false;//-3;
			}
		}
	}
	return false;//0;
}

function str_replace_v2(search, position, replace, subject) {

	var f = search, r = replace, s = subject, p = position;
	var ra = r instanceof Array, sa = s instanceof Array, f = [].concat(f), r = [].concat(r), i = (s = [].concat(s)).length;

	while (j = 0, i--) {
		if (s[i]) {
			while (s[i] = s[i].split(f[j]).join(ra ? r[j] || '' : r[0]), ++j in f){};
		}
	};

	return sa ? s : s[0];
}




function esNifValido(id) {
	var dni = document.getElementById(id).value;
	numero = dni.substr(0,dni.length-1);
	let = dni.substr(dni.length-1,1);
	numero = numero % 23;
	letra='TRWAGMYFPDXBNJZSQVHLCKET';
	letra=letra.substring(numero,numero+1);
	if (letra!=let) {
		return false
	} else {
		return true;
	}
}



function esCifValido( id )  {
	var elCIF = document.getElementById(id).value;
	var resul = false;
	// pasar a may�sculas
	var temp = elCIF.toUpperCase(); 
	if (!/^[A-Za-z0-9]{9}$/.test(temp)) {// Son 9 d�gitos?
		//alert ("Longitud incorrecta, un CIF consta de 9 d�gitos");
	} else if (!/^[ABCDEFGHKLMNPQS]/.test(temp)) {
   		// Es una letra de las admitidas?
		//alert("El primer d�gito es incorrecto, debe ser una letra de las siguientes: A,B,C,D,E,F,G,H,K,L,M,N,P,Q,S ");
  	} else {
  		resul = true;
  	}
	return resul;
}


function esRPCValido( id )  {
	var RPC = document.getElementById(id).value;
	if (!/^[A-Z0-9]{4}$/.test(RPC)) {
  		return false;
  	} 
  	return true;
}



// La funci�n recibe el CIF completo: A58818501 
function ValidaCIF(F) {
	var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
	var temp = 0;
	for( i = 2; i <= 6; i += 2 )  {
		temp = temp + v1[ parseInt(F.elCIF.value.substr(i-1,1))];
		temp = temp + parseInt(F.elCIF.value.substr(i,1));
	};

	temp = temp + v1[ parseInt(F.elCIF.value.substr(7,1))];
	temp = (10 - ( temp % 10));
	if( temp == 10 )
		alert( "El digito de control es: J o 0" );
	else
		alert( "El digito de control es: "+temp );
	return true;
}



