function Rellena_Ceros_I(cad, N)
{
var salida = String("");
cadena=cad.toString();
if (cadena.length < parseInt(N))
	 for (i=N; i>cadena.length; i--)
  	 	salida=salida+"0";
return salida.concat(cadena);
}

function CompruebaDatos(elCIF) 
{
  var resul = false;
  var temp = elCIF.value.toUpperCase(); // pasar a mayúsculas

  temp=temp.replace(/[ ,.-]/g,'');	//Eliminar caracteres inutiles
  elCIF.value=temp;

  if (!/^[A-Za-z0-9]{9}$/.test(temp))  // Son 9 dígitos? 
     alert ("Longitud incorrecta para el CIF, debe introducir 9 dígitos, con el formato LNNNNNNNN, donde L es una letra de las siguientes: A,B,C,D,E,F,G,H,K,L,M,N,P,Q,S");
  else if (!/^[ABCDEFGHIJKLMNOPQRSTUVWYZ]/.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 ValidaCIFNIF(obj) {
var valor=obj.value.toUpperCase();
	if (valor.substr(0,1)=="X" || valor.substr(0,1)=="Y" || 
			valor.substr(0,1)=="0" || 
			valor.substr(0,1)=="1" || 
			valor.substr(0,1)=="2" || 
			valor.substr(0,1)=="3" || 
			valor.substr(0,1)=="4" || 
			valor.substr(0,1)=="5" || 
			valor.substr(0,1)=="6" || 
			valor.substr(0,1)=="7" || 
			valor.substr(0,1)=="8" || 
			valor.substr(0,1)=="9") {
		return ValidaNIF(obj);
	} else {
		return ValidaCIF(obj);
	}
}	

function ValidaCIF(obj) 
{
var v1 = new Array(0,2,4,6,8,1,3,5,7,9); 
var letras =new Array('J','A','B','C','D','E','F','G','H','I','J');
var temp = 0; 
var valor=obj.value.toUpperCase();
var Tipo, Provincia, Digito, Digito2;
if (!CompruebaDatos(obj))
	{
	obj.focus();
	obj.select();
	return false;
	}
for( i = 2; i <= 6; i += 2 ) 
    {
    temp = temp + v1[ parseInt(valor.substr(i-1,1)) ];
    temp = temp + parseInt(valor.substr(i,1));
    };

temp = temp + v1[ parseInt(valor.substr(7,1)) ];
temp = (10 - ( temp % 10));
if (temp==10) temp=0;
switch (valor.substr(0,1))
	{
 	case 'A': Tipo="Sociedad Anónima.";
		break;
	case 'B': Tipo="Sociedad de responsabilidad limitada.";
		break;
	case 'C': Tipo="Sociedad colectiva.";
		break;
	case 'D': Tipo="Sociedad comanditaria.";
		break;
 	case 'E': Tipo="Comunidad de bienes.";
		break;
	case 'F': Tipo="Sociedad cooperativa.";
		break;
	case 'G': Tipo="Asociaciones y otros tipos no definidos.";
		break;
	case 'H': Tipo="Comunidad de propietarios en régimen de propiedad horizontal.";
		break;
	case 'J': Tipo="Nuevo tipo.";
		break;
	case 'K': 
	case 'L': 
	case 'M': Tipo="Formato antiguo.";
		break;
	case 'N': Tipo="Entidades no residentes.";
		break;
	case 'P': Tipo="Corporaci&oacute;n local.";
		break;
	case 'Q': Tipo="Organismo autónomo estatal o no, y asimilados, congregaciones e instituciones religiosas.";
		break;
	case 'S': Tipo="Organos de la Administraci&oacute;n del Estado y Comunidades Aut&oacute;nomas.";
		break;
	default: Tipo="No existente"
	}

switch (valor.substr(1,2))
	{
	case '01': Provincia='Alava';
		break;
	case '02': Provincia='Albacete';
		break;
	case '03':
	case '53':
	case '54': Provincia='Alicante';
		break;
	case '04': Provincia='Almería';
		break;
	case '05': Provincia='Ávila';
		break;
	case '06': Provincia='Badajoz';
		break;
	case '07':
	case '57': Provincia='Islas Baleares';
		break;
	case '08':
	case '58':
	case '59':
	case '60':
	case '61':
	case '62':
	case '63':
	case '64': Provincia='Barcelona';
		break;
	case '09': Provincia='Burgos';
		break;
	case '10': Provincia='Cáceres';
		break;
	case '11':
	case '72': Provincia='Cádiz';
		break;
	case '12': Provincia='Castellón';
		break;
	case '13': Provincia='Ciudad Real';
		break;
	case '14':
	case '56': Provincia='Córdoba';
		break;
	case '15':
	case '70': Provincia='A Coruña';
		break;
	case '16': Provincia='Cuenca';
		break;
	case '17':
	case '55': Provincia='Girona';
		break;
	case '18': Provincia='Granada';
		break;
	case '19': Provincia='Guadalajara';
		break;
	case '20':
	case '71': Provincia='Guipúzcoa';
		break;
	case '21': Provincia='Huelva';
		break;
	case '22': Provincia='Huesca';
		break;
	case '23': Provincia='Jaén';
		break;
	case '24': Provincia='León';
		break;
	case '25': Provincia='Lleida';
		break;
	case '26': Provincia='La Rioja';
		break;
	case '27': Provincia='Lugo';
		break;
	case '28':
	case '78':
	case '79':
	case '80':
	case '81':
	case '82':
	case '83':
	case '84': Provincia='Madrid';
		break;
	case '29':
	case '92':
	case '93': Provincia='Málaga';
		break;
	case '30':
	case '73': Provincia='Murcia';
		break;
	case '31': Provincia='Navarra';
		break;
	case '32': Provincia='Ourense';
		break;
	case '33':
	case '74': Provincia='Oviedo';
		break;
	case '34': Provincia='Palencia';
		break;
	case '35':
	case '76': Provincia='Las Palmas';
		break;
	case '36':
	case '94': Provincia='Pontevedra';
		break;
	case '37': Provincia='Salamanca';
		break;
	case '38':
	case '75': Provincia='Santa Cruz de Tenerife';
		break;
	case '39': Provincia='Cantabria';
		break;
	case '40': Provincia='Segovia';
		break;
	case '41':
	case '91': Provincia='Sevilla';
		break;
	case '42': Provincia='Soria';
		break;
	case '43':
	case '77': Provincia='Tarragona';
		break;
	case '44': Provincia='Teruel';
		break;
	case '45': Provincia='Toledo';
		break;
	case '46':
	case '96':
	case '97':
	case '98': Provincia='Valencia';
		break;
	case '47': Provincia='Valladolid';
		break;
	case '48':
	case '95': Provincia='Vizcaya';
		break;
	case '49': Provincia='Zamora';
		break;
	case '50':
	case '99': Provincia='Zaragoza';
		break;
	case '51': Provincia='Ceuta';
		break;
	case '52': Provincia='Melilla ';
		break;
	default: Provincia='Provincia Desconocida';
	}

switch (valor.substr(0,1))
	{
	case 'K':
	case 'P':
	case 'Q':
	case 'S': Digito=letras[temp]; Digito2=letras[temp];
		break;
	case 'A':
	case 'B':
	case 'E':
	case 'H': Digito=temp; Digito2=temp;
		break;
	default: Digito=  temp ; Digito2=letras[temp];
	}
 if (valor.substr(8,1)==Digito || valor.substr(8,1)==Digito2) {
 	return true;
 } else {
 	alert("CIF Incorrecto. No coincide dígito de control "+Digito);
	obj.focus();
	obj.select();
	return false;
 }
}

function CompruebaDatosDNI(elCIF) 
{
  var resul = false;
  var temp = elCIF.value.toUpperCase(); // pasar a mayúsculas

  temp=temp.replace(/[ ,.-]/g,'');	//Eliminar caracteres inutiles
  elCIF.value=temp;

  if (!/^[A-Za-z0-9]{9}$/.test(temp))  // Son 9 dígitos? 
     alert ("Longitud incorrecta, debe introducir 9 dígitos: NNNNNNNNL para DNI o XNNNNNNNL para NIE");
  else if (!/^[0123456789]/.test(temp)) // Es una letra de las admitidas ?
     alert("El primer dígito es incorrecto, debe ser la letra X para NIE o un número para DNI");
  else 
     resul = true;
  return resul;
}
	
function CompruebaDatosNIE(elCIF) 
{
  var resul = false;
  var temp = elCIF.value.toUpperCase(); // pasar a mayúsculas

  temp=temp.replace(/[ ,.-]/g,'');	//Eliminar caracteres inutiles
  elCIF.value=temp;

  if (!/^[A-Za-z0-9]{9}$/.test(temp))  // Son 9 dígitos? 
     alert ("Longitud incorrecta, debe introducir 9 dígitos: NNNNNNNNL para DNI o XNNNNNNNL para NIE");
  else if (!/^[XY0123456789]/.test(temp)) // Es una letra de las admitidas ?
     alert("El primer dígito es incorrecto, debe ser la letra X para NIE o un número para DNI");
  else 
     resul = true;
  return resul;
}
	

function ValidaNIF(obj) 
{
var clave=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");
var Dni;

var valor=obj.value.toUpperCase();
var Tipo, letra, Digito;

if (!CompruebaDatosDNI(obj))	{
	obj.focus();
	obj.select();
	return false;
}

		Tipo="DNI";
		letra=valor.substr(valor.length-1,1);
		valor=valor.substr(0,valor.length-1);
 		Dni=valor+letra;
		if (isNaN(valor)) {
			alert("El DNI debe estar formado exclusivamente por 8 digitos y la letra de control NNNNNNNNL");
			obj.focus();
			obj.select();
			return false;
		} else {
			Digito=clave[valor%23];
			if (Digito!=letra) {
				alert("La letra de control del DNI no es correcta ("+Digito+"). El DNI debe estar formado exclusivamente por 8 digitos y la letra de control NNNNNNNNL");
				obj.focus();
				obj.select();
				return false;
			} else {
				obj.value=Dni;
				return true;
			}
		}
}

function ValidaNIE(obj) 
{
var clave=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");
var Dni;

var valor=obj.value.toUpperCase();
var Tipo, letra, Digito;

if (!CompruebaDatosNIE(obj))	{
	obj.focus();
	obj.select();
	return false;
}

	Tipo="NIE";
	letra=valor.substr(valor.length-1,valor.length);
	valor=valor.substr(1,valor.length-2);
	Dni=valor.substr(0,1)+valor+letra;
	if (isNaN(valor)) {
		alert("El NIE debe estar formado por una X o Y seguida exclusivamente por 7 digitos y la letra de control XNNNNNNNL");
		obj.focus();
		obj.select();
		return false;
	} else {
		Digito=clave[valor%23];
		if (Digito!=letra) {
			alert("La letra de control del NIE no es correcta ("+Digito+"). El NIE debe estar formado por una X seguida exclusivamente por 7 digitos y la letra de control XNNNNNNNL");
			obj.focus();
			obj.select();
			return false;
		} else {
			obj.value=Dni;
			return true;
		}
	}
}

