/* ------------------------- Controla la longitud de un tipo TextArea ------------- */
function AnchoTextArea(obj,longitud) {
	var valor=obj.value;
	var longi=valor.length;
	if ((longi)>longitud) {
		alert("Escriure un màxim de " + longitud + " caracters");
		obj.focus();
		return false;
	}
	return true;
}
/* -------------------------------------------------------------------------------- */

function EsNumero(obj) {
	if (Vacio(obj.value)) return true;

	if (!IsNumeric(obj.value)) {
		alert('Ha de ser un valor numéric.');
		obj.focus();
		return false;
	}
	return true;
}

/* ------------------------ Comprueba si la vble pasada es un numero -------------- */
function IsNumeric(numero) {
	if (numero.indexOf('.',0)!=-1) return false;
	numero = numero.replace(',','.');
	if (isNaN(numero)) return false;

	return true;
}	
/* -------------------------------------------------------------------------------- */

/* ----------------------------------- Es Dato  ----------------------------------- */
function EsDato(objeto) {
	
	if (!Vacio(objeto.value)){
		return true;
	}else{
		alert("NO POT QUEDAR EN BLANC");
		objeto.focus();
		return false;
		
	}
}
/* -------------------------------------------------------------------------------- */

/* ------------------ Controla que un tipo SELECT no este vacio ------------------- */
function ComboSeleccion(obj) {

	var indice=obj.selectedIndex;
	
	if (obj.options[indice].value=='') {
		alert("NO POT QUEDAR EN BLANC!!!");
		obj.focus();
		return false;
	}
	return true;
}
/* -------------------------------------------------------------------------------- */


/* ----------------------------- Comprueba si una cadena es vacia ----------------- */
function Vacio(cadena) {
	
	if (cadena=='')
		return true;
	return false;
}
/* -------------------------------------------------------------------------------- */

/* ----------------------------------- Es Fecha ----------------------------------- */
function EsFechaLaboral(objeto){
	if (Vacio(objeto.value)) return true;
	if (objeto.value.length<10) {
		
		alert("EL FORMAT DATA HA DE SER: dd/mm/aaaa");
		objeto.focus();
		return false;
		
	}else{
	
		if (!Fecha_Buena(objeto.value)) {
			alert("EL FORMAT DATA HA DE SER: dd/mm/aaaa");
			objeto.focus();
			return false;
		}else{
			var fecha;
			var data;
			var dia;
			var mes;
			var anyo;
			var cadena;
	
			fecha=objeto.value;
			dia=fecha.substr(0,2);
			mes=fecha.substr(3,2);
			anyo=fecha.substr(6,4);
			cadena=mes+"/"+dia+"/"+anyo;
	
			data=new Date(cadena);
			if(data.getDay()==0){
				alert('La data ha de ser de dilluns a dissabte');
				objeto.focus();
				return false;
			} else 	return true;
		}
	}

}

/* ----------------------------- Es Fecha posterior o igual a hoy   ------------------- */
/* ----------------------------- Pide confirmación si es fecha anterior a hoy---------- */
function EsFechaAceptable(objeto){
	if (Vacio(objeto.value)) return true;
	if (objeto.value.length<10) {
		
		alert("EL FORMAT DATA HA DE SER: dd/mm/aaaa");
		objeto.focus();
		return false;
		
	}else{
		if (!Fecha_Buena(objeto.value)) {
			alert("EL FORMAT DATA HA DE SER: dd/mm/aaaa");
			objeto.focus();
			return false;
		}else{
			var fecha;
			var data;
			var dia;
			var mes;
			var anyo;
			var ahora = new Date();
			var hoy = new Date(ahora.getFullYear(), ahora.getMonth(), ahora.getDate());
	
			fecha=objeto.value;
			dia=fecha.substr(0,2);
			mes=fecha.substr(3,2);
			anyo=fecha.substr(6,4);
	
			data=new Date(anyo,mes-1,dia);
			if(data.getYear()-hoy.getYear()>1){
				alert('Aquesta data és molt posterior.');
				objeto.focus();
				return false;
			} 
			if(data.getTime()<hoy.getTime()){
				if(!confirm('Aquesta data és anterior a avui. Continuar?')) {
					objeto.focus();
					return false;
				}
			} 

			return true;
		}
	}

}


function EsFecha(objeto) {
	
	if (Vacio(objeto.value)) 
		return true;
	if (objeto.value.length<10) {
		
		alert("EL FORMAT DATA HA DE SER: dd/mm/aaaa");
		objeto.focus();
		return false;
		
	}else{
	
		if (Fecha_Buena(objeto.value)) {
			return true;
		}else{
			alert("EL FORMAT DATA HA DE SER: dd/mm/aaaa");
			objeto.focus();
			return false;
		}
	}
}
/* -------------------------------------------------------------------------------- */


/* ----------------------------- Comparación de fechas  ¿data1 < data2?  --------------------- */

function ComparaFechas(objeto1, objeto2){
	if (Vacio(objeto1.value)) return false;
	if (Vacio(objeto2.value)) return true;
	
	if (objeto1.value.length<10) {
		
		alert("EL FORMAT DATA HA DE SER: dd/mm/aaaa");
		objeto1.focus();
		return false;
		
	}else{
		if (objeto2.value.length<10) {
		
			alert("EL FORMAT DATA HA DE SER: dd/mm/aaaa");
			objeto2.focus();
			return false;
		}else{
		
		
			if (!Fecha_Buena(objeto1.value)) {
				alert("EL FORMAT DATA HA DE SER: dd/mm/aaaa");
				objeto1.focus();
				return false;
			}else{
				if (!Fecha_Buena(objeto2.value)) {
					alert("EL FORMAT DATA HA DE SER: dd/mm/aaaa");
					objeto2.focus();
					return false;
				}else{
				
					var fecha1;
					var data1;
					var dia1;
					var mes1;
					var anyo1;
					
					var fecha2;
					var data2;
					var dia2;
					var mes2;
					var anyo2;
					
	
					fecha1=objeto1.value;
					dia1=fecha1.substr(0,2);
					mes1=fecha1.substr(3,2);
					anyo1=fecha1.substr(6,4);
					
					fecha2=objeto2.value;
					dia2=fecha2.substr(0,2);
					mes2=fecha2.substr(3,2);
					anyo2=fecha2.substr(6,4);
			
					data1=new Date(anyo1,mes1-1,dia1);
					data2=new Date(anyo2,mes2-1,dia2);
					if(data1.getYear()-data2.getYear()>=1){
						alert('La data d\'inici ha de ser menor que la data final.');
						objeto1.focus();
						return false;
					}else{
						if ((data1.getYear()-data2.getYear())==0) {
							//Son del mismo anyo solo tenemos que comprobar el resto de la fecha
							if(data1.getMonth()-data2.getMonth()>=1 ){
								alert('La data d\'inici ha de ser menor que la data final.');
								objeto1.focus();
								return false;
							}else{
								if ((data1.getMonth()-data2.getMonth())==0) {
									//Son del mismo mes solo tenemos que comprobar el resto de la fecha, el dia
									if (data1.getDate()-data2.getDate()>=1){
										alert('La data d\'inici ha de ser menor que la data final.');
										objeto1.focus();
										return false;	
									}else{
										if (data1.getDate()-data2.getDate()==0) {
											alert('La data d\'inici ha de ser menor que la data final.');
										}else{
											//Todo correcto	
											return true;	
										}
									}						
								}else{
									//No son del mismo anyo pero el anyo 2 es posterior (if superior). Por lo tanto la fehca 1 es menor que la 2
									return true;
								}											
							}
							
						}else{
							//No son del mismo anyo pero el anyo 2 es posterior (if superior). Por lo tanto la fehca 1 es menor que la 2
							return true;
						}
					}													
				}
				return true;
			}
		}
	}

}
	

function EsFecha(objeto) {
	
	if (Vacio(objeto.value)) 
		return true;
	if (objeto.value.length<10) {
		
		alert("EL FORMAT DATA HA DE SER: dd/mm/aaaa");
		objeto.focus();
		return false;
		
	}else{
	
		if (Fecha_Buena(objeto.value)) {
			return true;
		}else{
			alert("EL FORMAT DATA HA DE SER: dd/mm/aaaa");
			objeto.focus();
			return false;
		}
	}
}
/* -------------------------------------------------------------------------------- */


/* ------------------------ Comprueba el formato de una fecha --------------------- */
function Fecha_Buena(fecha) {
	
		
		if (!IsDate(fecha)) return false;
	
		if (fecha.length!=10) return false;
		/* Primera barra */
		if (fecha.charAt(2) != "/" ){
			return false;}
			
		/* Segunda barra */
		if (fecha.charAt(5) != "/" ){
			return false;}
		
		/* Son numeros detras y delante de las barras */
		if (IsNumeric(fecha.substr(0,2)))
			dia=(fecha.charAt(0)+fecha.charAt(1));
		else {
			return false;
		}	
		if (dia>31 || dia<1) 
			return false;
			
		if (IsNumeric(fecha.substr(3,2)) ) 
			mes=(fecha.charAt(3)+fecha.charAt(4));
		else
			return false;
			
		if (mes>12 || mes<1) 
			return false;
			
		if (IsNumeric(fecha.substr(6,4))) 
			anyo=(fecha.charAt(6)+fecha.charAt(7))+(fecha.charAt(8)+fecha.charAt(9));
		else
			return false;
			
			
		return true;
	
}
/* -------------------------------------------------------------------------------- */

/* ---------------------- Comprueba si una fecha es válida ------------------------ */
function IsDate(fecha) {

	var data;
	var dia;
	var mes;
	var anyo;
	var cadena;
	
	dia=fecha.substr(0,2);
	mes=fecha.substr(3,2);
	anyo=fecha.substr(6,4);
	cadena=mes+"/"+dia+"/"+anyo;
	
	data=new Date(cadena);
	
	if (mes!=data.getMonth()+1) {
		//alert("El mes ha cambiado");
		return false;
	}else{
		//alert("El mes no ha cambiado");
		return true;
	}
}

/* ----------------------------------- Es Hora ----------------------------------- */
function EsHora(objeto) {
	
	if (Vacio(objeto.value)) 
		return true;
	if (!Hora_Buena(objeto.value)) {
		alert("EL FORMAT HORA HA DE SER: hh:mm");
		objeto.focus();
		return false;
	}
	if (objeto.value<'08:00' || objeto.value>'20:00'){
		alert('L\'horari és de 08:00 a 20:00 hores');
		objeto.focus();
		return false;
	}
	return true;
}
/* -------------------------------------------------------------------------------- */

/* ------------------------ Comprueba el formato de una hora --------------------- */
function Hora_Buena(fecha) {
		digitos="0123456789";
		/* Los dígitos */
		if (fecha.length!=5) return false;
		if (digitos.indexOf(fecha.charAt(0))<0) return false;
		if (digitos.indexOf(fecha.charAt(1))<0) return false;
		if (digitos.indexOf(fecha.charAt(3))<0) return false;
		if (digitos.indexOf(fecha.charAt(4))<0) return false;
	
		/* Los dos puntos */
		if (fecha.charAt(2) != ":" ) return false;
	
		/* Son horas y minutos correctos */
		hora = fecha.substr(0,2);
		minutos = fecha.substr(3,2);
		if (hora>23 || hora<0) return false;
		if (minutos>59 || minutos<0) return false;
			
	return true;
	
}
/* -------------------------------------------------------------------------------- */

/* -------------------- Calcula la edad a partir de una fecha --------------------- */
function CalcularEdad(fecha) {

	var hoy=new Date();
	var edad;
	var array_fecha = fecha.value.split("/") 
	var anyo = parseInt(array_fecha[2],10); 
	var mes = parseInt(array_fecha[1],10); 
	var dia = parseInt(array_fecha[0],10); 

 	anyoactual=hoy.getFullYear();

	edad= anyoactual- anyo - 1; //-1 porque no se si ha cumplido años ya este año 

	//si resto los meses y me da menor que 0 entonces no ha cumplido años. Si da mayor si ha cumplido 
	if (hoy.getMonth() + 1 - mes < 0) //+ 1 porque los meses empiezan en 0
		return edad; 
	if (hoy.getMonth() + 1 - mes > 0) 
		return edad+1; 

        //si llegamos aquí es que los meses eran iguales, miro los dias 
        //si resto los dias y me da menor que 0 entonces no ha cumplido años, si da mayor o igual si ha cumplido 
	if (hoy.getDate() - dia >= 0)
		return edad + 1; 

    	return edad;

}
/* -------------------------------------------------------------------------------- */


/* -------------------------------- Funciones VBScript version JS  ---------------- */
function LTrim(s){
	// Devuelve una cadena sin los espacios del principio
	var i=0;
	var j=0;
	
	// Busca el primer caracter <> de un espacio
	for(i=0; i<=s.length-1; i++)
		if(s.substring(i,i+1) != ' '){
			j=i;
			break;
		}
	return s.substring(j, s.length);
}
function RTrim(s){
	// Quita los espacios en blanco del final de la cadena
	var j=0;
	
	// Busca el último caracter <> de un espacio
	for(var i=s.length-1; i>-1; i--)
		if(s.substring(i,i+1) != ' '){
			j=i;
			break;
		}
	return s.substring(0, j+1);
}
function Trim(s){
	// Quita los espacios del principio y del final
	return LTrim(RTrim(s));
}
function replace(valor,entra,sale) {
	out = entra; 
	add = sale; 
	temp = '' + valor;
	
	while (temp.indexOf(out)>-1) {
	pos= temp.indexOf(out);
	temp = ''+(temp.substring(0, pos)+add+temp.substring((pos + out.length),temp.length));
	}
	return temp;
}

/* -------------------------------------------------------------------------------- */

/* ------------------------------------ Comprueba si un NIF es correcto ----------- */
function EsNif(obj) {

	var bool=true;
	nif=obj.value;
	cadena="TRWAGMYFPDXBNJZSQVHLCKET";
	var num;
	var letra;
	var longitud;
	var longitud_espais;
	
	if (Vacio(nif)) return true;
	
	//Convertimos a mayusculas.
	nif=nif.toUpperCase();
	
	nif=replace(nif, '.', '');
	nif=replace(nif, '-', '');
	nif=replace(nif, '_', '');
	nif=replace(nif, '+', '');
	obj.value=nif;
	
	//Comprobamos la longitud.
	if ((nif.length<8) || (nif.length>12)) bool=false; 
	
	//Guardamos num y letra
	num=nif.substr(0,nif.length-1);
	letra=nif.substr(nif.length-1,1);
	
	//Comprobamos que no contenga espacios en blanco
	longitud=num.length;
	longitud_espais=Trim(num);
	longitud_espais=longitud_espais.length;
	if ((longitud)!=(longitud_espais)) {
		alert('Ha de escriure sense espais en blanc');
		obj.focus();
		return false;	
	}
	
	//Comprobamos que num sea numerico.
	if (!IsNumeric(num)) bool=false;
	
	//Comprobamos que la letra sea correcta.
	indice=(parseInt(num,10)%23);
	if (cadena.substr(indice,1)!=letra) bool=false; 
	
	//Preguntar por bool.
	if (!bool) {
	
		alert("NIF Incorrecte");
		obj.focus();
		return false;
	}
	return bool;
}
/* -------------------------------------------------------------------------------- */

/* ------------------------------------ Comprueba si un CIF es correcto ----------- 

					Formato letra(1)numero(8)letra(1)			*/	
function EsCif(obj) {
	var bool=true;
	nif=obj.value;
	cadena="ABEGHPQF";
	cadena2="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var num;
	var letra_i;
	var letra_f;
	var i;
	var j;
	
	if (Vacio(nif)) return true;
	
	//Convertimos a mayusculas.
	nif=nif.toUpperCase();
	
	nif=replace(nif, '.', '');
	nif=replace(nif, '-', '');
	nif=replace(nif, '_', '');
	nif=replace(nif, '+', '');
	obj.value=nif;
	
	//Guardamos num y letra
	letra_i=nif.substr(0,1);
	num=nif.substr(1,nif.length-1);
	
	longitud=num.length;
	longitud_espais=Trim(num);
	longitud_espais=longitud_espais.length;
	if ((longitud)!=(longitud_espais)) {
		alert('Ha de escriure sense espais en blanc');
		obj.focus();
		return false;	
	}
    
	//Comprobar si la primera es una P.
	if ( (letra_i!='P') && (letra_i!='Q') ){
		//No hay letras al final
		if (!IsNumeric(num))  bool=false; 
	}else{
		//letra_f = el ultimo caracter del numero
		letra_f=num.substr(num.length-1,num.length-1);
		j=cadena2.indexOf(letra_f);
		num=nif.substr(1,nif.length-2);
		//Es una letra?
		if ( (j==-1) ) {
			bool=false;	
		}		
		if (!IsNumeric(num))  bool=false; 
		longitud=num.length;
		longitud_espais=Trim(num);
		longitud_espais=longitud_espais.length;
		if ((longitud)!=(longitud_espais)) {
			alert('Ha de escriure sense espais en blanc');
			obj.focus();
			return false;	
		}
	}
	
	//Comprobamos que las letras sea correcta.
	i=cadena.indexOf(letra_i);
	
	if ( (i==-1) ) {
		bool=false;	
	}
		
	//Preguntar por bool.
	if (!bool) {
		alert("CIF Incorrecte");
		obj.focus();
		return false;
	}
	return bool;
}
/* -------------------------------------------------------------------------------- */


/* -------------------------------- Comprueba si es un CIF o un NIF correcto -------*/
function EsCifNif(obj) {
	 
	// Primero comprobamos si es un CIF primero 
	var bool=true;
	nif=obj.value;
	
	cadena="ABEGHPQF";
	cadena2="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	
	var num;
	var letra_i;
	var letra_f;
	var i;
	var j;
	
	if (Vacio(nif)) return true;
	
	//Convertimos a mayusculas.
	nif=nif.toUpperCase();
	
	nif=replace(nif, '.', '');
	nif=replace(nif, '-', '');
	nif=replace(nif, '_', '');
	nif=replace(nif, '+', '');
	obj.value=nif;
	
	
	//Guardamos num y letra
	letra_i=nif.substr(0,1);
	num=nif.substr(1,nif.length-1);
	
	
	longitud=num.length;
	longitud_espais=Trim(num);
	longitud_espais=longitud_espais.length;
	if ((longitud)!=(longitud_espais)) {
		alert('Ha de escriure sense espais en blanc');
		obj.focus();
		return false;	
	}
	
	//Comprobar si la primera es una P o Q.
	if ((letra_i!='P') && (letra_i!='Q')) {
		//No hay letras al final
		if (!IsNumeric(num))  bool=false; 
	}else{
		//letra_f = el ultimo caracter del numero
		letra_f=num.substr(num.length-1,num.length-1);
		j=cadena2.indexOf(letra_f);
		num=nif.substr(1,nif.length-2);
		//Es una letra?
		if ( (j==-1) ) {
			bool=false;	
		}		
		if (!IsNumeric(num))  bool=false; 
		longitud=num.length;
		longitud_espais=Trim(num);
		longitud_espais=longitud_espais.length;
		if ((longitud)!=(longitud_espais)) {
			alert('Ha de escriure sense espais en blanc');
			obj.focus();
			return false;	
		}
	}
	
	//Comprobamos que las letras sea correcta.
	i=cadena.indexOf(letra_i);
	
	if ( (i==-1) ) {
		bool=false;	
	}
		
	if (!bool) {
		
		//Si no es un CIF comprobamos si es un NIF
		bool=true;
		cadena="TRWAGMYFPDXBNJZSQVHLCKET";
		var letra;
		var longitud;
		var longitud_espais;
		
		if (Vacio(nif)) return true;
		
		//Convertimos a mayusculas.
		nif=nif.toUpperCase();
		
		//Comprobamos la longitud.
		if ((nif.length<8) || (nif.length>12)) bool=false;
		
		//Guardamos num y letra
		num=nif.substr(0,nif.length-1);
		letra=nif.substr(nif.length-1,1);
		
		//Comprobamos que no contenga espacios en blanco
		longitud=num.length;
		longitud_espais=Trim(num);
		longitud_espais=longitud_espais.length;
		if ((longitud)!=(longitud_espais)) {
			alert('Ha de escriure sense espais en blanc');
			obj.focus();
			return false;	
		}
		
		//Comprobamos que num sea numerico.
		if (!IsNumeric(num)) { bool=false; }
		
		
		//Comprobamos que la letra sea correcta.
		indice=(parseInt(num,10)%23);
		if (cadena.substr(indice,1)!=letra) bool=false; 
	}
	
	if (!bool) {
	
		alert("No es CIF o NIF ");
		obj.focus();
		return false;
	}
	return bool;
	
	
}
/* ---------------------------------------------------------------------------------*/

/* ------------------------------------ Comprueba si un NIEP es correcto ----------- 

							Formato X numero(7)letra(1)	o Y numero(7)letra(1)		*/
	
function EsNiep(obj) {

	var bool=true;
	niep=obj.value;
	cadena="TRWAGMYFPDXBNJZSQVHLCKET";
	var num;
	var letra;
	var longitud;
	var longitud_espais;
	
	if (Vacio(niep)) return true;
	
	//Convertimos a mayusculas.
	niep=niep.toUpperCase();
	
	//Comprobamos la longitud.
	if (niep.length!=10) bool=false; 
	
	//Comprobamos que el primer carácter es una X

	if (niep.substr(0,1)!='X' && niep.substr(0,1)!='Y') bool=false;

	//Guardamos num y letra
	num=niep.substr(1,niep.length-2);
	letra=niep.substr(niep.length-1,1);
	agregar = 0;
	if (niep.substr(0,1)=='X') agregar=0;
	if (niep.substr(0,1)=='Y') agregar=10000000;
	
	//Comprobamos que no contenga espacios en blanco               
	longitud=num.length;             								
	longitud_espais=Trim(num);										
	longitud_espais=longitud_espais.length; 						
	if ((longitud)!=(longitud_espais)) {     						
	 alert('Ha de escriure sense espais en blanc'); 			
	 return false;	     										
	}				
	
	//Comprobamos que num sea numerico.
	if (!IsNumeric(num))  bool=false; 
	
	//Comprobamos que la letra sea correcta.
	indice=((agregar+parseInt(num,10))%23);
	if (cadena.substr(indice,1)!=letra) bool=false; 
	
	//Preguntar por bool.
	if (!bool) {
	
		alert("Tarjeta d'estrangeria incorrecta");
		return false;
	}
	return bool;
	
}
/* -------------------------------------------------------------------------------- */


/* -------------------------------- Comprueba si es un CIF o un NIF correcto -------*/
function EsCifNifNiep(obj) {
	 
	// Primero comprobamos si es un CIF primero 
	var bool=true;
	nif=obj.value;
	
	cadena="ABEGHPQF";
	cadena2="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	
	var num;
	var letra_i;
	var letra_f;
	var i;
	var j;
	
	if (Vacio(nif)) return true;
	
	//Convertimos a mayusculas.
	nif=nif.toUpperCase();
	
	nif=replace(nif, '.', '');
	nif=replace(nif, '-', '');
	nif=replace(nif, '_', '');
	nif=replace(nif, '+', '');
	obj.value=nif;
	
	
	//Guardamos num y letra
	letra_i=nif.substr(0,1);
	num=nif.substr(1,nif.length-1);
	
	
	longitud=num.length;
	longitud_espais=Trim(num);
	longitud_espais=longitud_espais.length;
	if ((longitud)!=(longitud_espais)) {
		alert('Ha de escriure sense espais en blanc');
		obj.focus();
		return false;	
	}
	
	//Comprobar si la primera es una P o Q.
	if ((letra_i!='P') && (letra_i!='Q')) {
		//No hay letras al final
		if (!IsNumeric(num))  bool=false; 
	}else{
		//letra_f = el ultimo caracter del numero
		letra_f=num.substr(num.length-1,num.length-1);
		j=cadena2.indexOf(letra_f);
		num=nif.substr(1,nif.length-2);
		//Es una letra?
		if ( (j==-1) ) {
			bool=false;	
		}		
		if (!IsNumeric(num))  bool=false; 
		longitud=num.length;
		longitud_espais=Trim(num);
		longitud_espais=longitud_espais.length;
		if ((longitud)!=(longitud_espais)) {
			alert('Ha de escriure sense espais en blanc');
			obj.focus();
			return false;	
		}
	}
	
	//Comprobamos que las letras sea correcta.
	i=cadena.indexOf(letra_i);
	
	if ( (i==-1) ) {
		bool=false;	
	}
		
	if (!bool) {
		
		//Si no es un CIF comprobamos si es un NIF
		bool=true;
		cadena="TRWAGMYFPDXBNJZSQVHLCKET";
		var letra;
		var longitud;
		var longitud_espais;
		
		if (Vacio(nif)) return true;
		
		//Convertimos a mayusculas.
		nif=nif.toUpperCase();
		
		//Comprobamos la longitud.
		if ((nif.length<8) || (nif.length>12)) bool=false;
		
		//Guardamos num y letra
		num=nif.substr(0,nif.length-1);
		letra=nif.substr(nif.length-1,1);
		
		//Comprobamos que no contenga espacios en blanco
		longitud=num.length;
		longitud_espais=Trim(num);
		longitud_espais=longitud_espais.length;
		if ((longitud)!=(longitud_espais)) {
			alert('Ha de escriure sense espais en blanc');
			obj.focus();
			return false;	
		}
		
		//Comprobamos que num sea numerico.
		if (!IsNumeric(num)) { bool=false; }
		
		
		//Comprobamos que la letra sea correcta.
		indice=(parseInt(num,10)%23);
		if (cadena.substr(indice,1)!=letra) bool=false; 
	}
	
	
	if (!bool) {
		//No es ni CIF  ni NIF. Comprobamos si es un extranjero.
		bool=true;
		
		niep=obj.value;
		cadena="TRWAGMYFPDXBNJZSQVHLCKET";
		var num;
		var letra;
		var longitud;
		var longitud_espais;
		
		if (Vacio(niep)) return true;
		
		//Convertimos a mayusculas.
		niep=niep.toUpperCase();
		
		//Comprobamos la longitud.
		if ((niep.length<8) || (niep.length>12)) bool=false; 
		
		//Comprobamos que el primer carácter es una X
	
		if (niep.substr(0,1)!='X') bool=false;
	
		//Guardamos num y letra
		num=niep.substr(1,niep.length-2);
		letra=niep.substr(niep.length-1,1);
		
		
		//Comprobamos que no contenga espacios en blanco               
		longitud=num.length;             								
		longitud_espais=Trim(num);										
		longitud_espais=longitud_espais.length; 						
		if ((longitud)!=(longitud_espais)) {     						
		 alert('Ha de escriure sense espais en blanc'); 			
		 return false;	     										
		}				
		
		//Comprobamos que num sea numerico.
		if (!IsNumeric(num))  bool=false; 
		
		//Comprobamos que la letra sea correcta.
		indice=(parseInt(num,10)%23);
		if (cadena.substr(indice,1)!=letra) bool=false; 
	}
	
	if (!bool) {
	
		alert("No es CIF, NIF ni tarjeta d'estrangeria");
		obj.focus();
		return false;
	}
	return bool;
	
	
}
/* ---------------------------------------------------------------------------------*/


/* ------------------------ Comprueba si la variable es un teléfono --------------- */

function EsTelefono(obj){
	var bool=true;
	var valid_carac='0123456789';
	var cad;
	if (Vacio(obj.value)) {
		return true;
	}
	
	
	cad=(obj.value);
	if (cad.length!=9) bool=false; 
	if (bool){
		for (i=0;i<9;i++){
			caracter = cad.charAt(i);
			if (valid_carac.indexOf(caracter,0)==-1) {		
				bool = false;
				break;
			}
		}
	}
	
	if (!bool) {
		alert("EL FORMAT HA DE SER: nnnnnnnnn");
		obj.focus();
	}
	return bool;

}
/* -------------------------------------------------------------------------------- */

/* ------------------------- Comprueba si es correo electrónico ------------------- */
function EsCorreo (obj) {
	
	var valid_carac="ABCDEFGHIJKLMNOPQRSTUVWXYZ.@-_0123456789";
	var i_arroba;
	var i_punto;
	var i=0;
	var j; 
	var bool=true;
	var correo=obj.value.toUpperCase();
	var salir=false;
	
	if (Vacio(correo)) return true;

	//Comprobamos que no haya caracteres invalidos. 
	while ((i<valid_carac.length) && (!salir)) {
		j=correo.substr(i,1);
		if (valid_carac.indexOf(j,0)==-1) {
			bool= false;
			salir=true;
		}
		i++;
	}
	
	//Buscamos la arroba despues de al menos un caracter.
	i_arroba=correo.indexOf("@",1);
	if (i_arroba==-1) bool = false; //No tiene arroba.

	//Tiene otra arroba despues de la arroba.
	if (correo.indexOf("@",i_arroba+1)!=-1) bool =false;
	
	//Buscamos el punto despues de la arroba y al menos un caracter.
	if (correo.indexOf(".",i_arroba+2)==-1) bool= false;
	
	//Al menos dos caracteres detras del punto
	if ( correo.length - correo.indexOf(".",i_arroba)<3 ) bool =false;
	
	if (!bool) {
		alert("Format correu electrònic incorrecte");
		obj.focus();
		return false;	
	}
	
	//Formato correcto.
	return bool;
}

/* -------------------------------------------------------------------------------- */
