	/************************************* Expresiones reculares *****************************************/
	/**/
	/**/   var NIF= /^([0-9]{8}[a-zA-Z])$/;        // Valído el número del NIF
	/**/   var NIE= /^\X([0-9]{7}[a-zA-Z]{1})$/;   // Valído el número del NIE
	/**/   var Email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
	/**/   var MAC = /^[0-9A-Fa-f]{2}(\:[0-9A-Fa-f]{2}){5}$/;
	/**/   var TelefonoM1 = /^[6]([0-9]{8,15})$/;     // Valído el Telefono Fijo (Formato 964123456 ó 964-123-456 ó 964-123456)
	/**/   var TelefonoM2 = /^[6][0-9]{2}\-?[0-9]{3}\-?[0-9]{3}$/;     // Valído el Telefono Fijo (Formato 964123456 ó 964-123-456 ó 964-123456)
	/**/   var TelefonoF1 = /^[8-9]([0-9]{8,15})$/;     // Valído el Telefono Móvil (Formato 600123456 ó 600-123-456 ó 600-123456)
	/**/   var TelefonoF2 = /^[8-9][0-9]{2}\-?[0-9]{3}\-?[0-9]{3}$/;     // Valído el Telefono Fijo (Formato 964123456 ó 964-123-456 ó 964-123456)
	/**/   var TelefonoPais = /^(\+)([0-9]{9,15})$/;     // Cualquier telefono que empieza por + seguido de numeros, maxima longitud 15.
	/**/   var Hora = /^([0-2]{1}[0-9]{1})\:([0-5]{1}[0-9]{1})$/; // Valida la hora con el formato HH:MM
	/**/   var CIF = /^([a-zA-Z][0-9]{7}[0-9a-zA-Z])$/;                      // Validar numero C.I.F
	/**/
	/**/   var Fecha1 = /^([1-2]{1}[0-9]{1}[0-9]{1}[0-9]{1})\-([0-1]{1}[0-9]{1})\-([0-3]{1}[0-9]{1})$/; // Formato de la fecha: aaaa-mm-dd
	/**/   var Fecha2 = /^([0-9]{1,2})\-([0-9]{1,2})\-([1-2]{1}[0-9]{1}[0-9]{1}[0-9]{1})$/; // Formato de la fecha: dd-mm-aaaa
	/**/
	/**/   var Decimal1 = /^([0-9]*)\,([0-9]*)$/;
	/**/   var Decimal2 = /^([0-9]*)\.([0-9]*)$/; 
	/**/   var Entero = /^([0-9]*)$/;
	/**/   var CP= /^([0-9]{5})$/;        // Valído el número del codigo postal.
	/**/   // Falta depurarla para valores entre 0 y 255
	/**/   var IP = /^(\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}$/;
	/**/   var IPM = /^(\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}$/;
	/**/   var IP_Masc = /^(\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}\/(\d){1,4}?$/;
	/**/
	/**/   var cc = /^([0-9]{4})\-([0-9]{4})\-([0-9]{2})-([0-9]{10})$/;
	/**/   var Iden_Disp = /^([A-Z]{1,6})\-([0-9]{2})\-([A-Z]{2}[0-9]{2})[:_]{1}([a-zA-Z0-9])*$/;	//
	/*****************************************************************************************************/

	/******************************************************************************************************************/
	/* Función que me valida los datos según el tipo que sea                                                          */
	/******************************************************************************************************************/
	var provincia;  //variable que almacena el codigo de la provincia para comprobar que el codigo postal sea correcto.

	function validar_campo( nombre, val )
		{
		//	valor=val.value;

			// Variales para el calculo del CIF
				var suma_pares = 0;     // Contiene la suma de los numeros pares
				var suma_impares = 0;   // Contiene la suma de los numeros impares
				var numero_impar = 0;
				var num = 0;
				var valor;
			 //Pongo la cadena recibida en mayusculas
//			   if (nombre != 'fecha') {
//					valor = val.value.toUpperCase();
//			   		} else {
//					valor = val.value;	
//					}
			
				//alert ("Nombre: "+nombre+" - Valor: "+val.value);
				//if (valor) 
				//{
								
				switch (nombre)
					{
					/*********************************************************************************/
					case 'nif':
								valor = val.value.toUpperCase();
								if ( !NIF.exec(valor) ) {
									NoValido(val);
									return false;	
								}else{
									//Ponemos un 1 para que nos deje comprobar los nif que empiezan por 0
									dni="1"+valor.substring(0,valor.length-1);
									dni=parseInt(dni)%100000000; //Quitamos el 1 de delante.

									tmp = (dni % 23);
									LetraNIF = dimeLetra (dni % 23);

									if (valor.substring(valor.length-1,valor.length)==LetraNIF) return true;
									else	return false;
								}

								break;
							
							
					/*********************************************************************************/
					case 'cif':
								valor = val.value.toUpperCase();
								if ( !CIF.exec(valor) ) {
									NoValido(val);
									return false;
								}else {
									digito_control_a_comprobar = valor.substr (valor.length-1,valor.length);	
									//digito_control_a_comprobar = parseInt (digito_control_a_comprobar);
									suma_pares=0;
									suma_impares=0;
									numeros_centrales = valor.substr (1,7);	
									// Sumo los pares e impares
									for (i=0; i < numeros_centrales.length; i++) {
										if (i % 2 != 0) {
											num = numeros_centrales.substr (i,1);
											num = parseInt (num);
											suma_pares += num;
										}else{
											num = numeros_centrales.substr (i,1);
											num = parseInt (num);
											
											numero_impar = num * 2;
											numero_impar = parseInt (numero_impar);
											if ( numero_impar > 9 )	{
												parte_entera = numero_impar / 10;
												parte_entera = parseInt (parte_entera);
												resto = numero_impar % 10;
												temp = parte_entera + resto;
												suma_impares += temp;
											}else{
												suma_impares += numero_impar;
											}
										}
									}
									tmp = suma_pares + suma_impares;
									
									digito_control = tmp % 10;
									
									digito_control = parseInt (digito_control);
									
									digito_control = 10 - (tmp % 10);
	
									letras = "JABCDEFGHI";  
																		
									if ((digito_control_a_comprobar == digito_control) || (digito_control_a_comprobar == letras.substr(digito_control,1))) return true;
									else return false;
								}
								break;
							
					/*********************************************************************************/
					case 'nie':
								valor = val.value.toUpperCase();
								if ( !NIE.exec(valor) ) {
									NoValido(val);	
									return false;
								}else{
									dni="1"+valor.substring(1,valor.length-1);
									dni=parseInt(dni)%10000000; //Quitamos el 1 de delante.
									tmp = (dni % 23);
									LetraNIE = dimeLetra (dni % 23);
	
									if (valor.substring(valor.length-1,valor.length)==LetraNIE) return true;
									else return false;
								}
								break;


					/*********************************************************************************/
					case 'telefono_fijo':
								//alert(val.value);
								if ( !TelefonoPais.exec(val.value) && !TelefonoF1.exec(val.value) && !TelefonoF2.exec(val.value) ) { 
								NoValido(val);
								return false;
								}else{ return true; }
								break;
					
					/*********************************************************************************/
					case 'telefono_movil':
								if ( !TelefonoPais.exec(val.value) && !TelefonoM1.exec(val.value) && !TelefonoM2.exec(val.value) ) { 
									return false;	
									NoValido(val);
								}else 
									return true;
								break;
								
					case 'entero':
								if ( !Entero.exec(val.value) ) { 
									return false;	
									NoValido(val);
								}else 
									return true;
								break;

					/*********************************************************************************/
					case 'email':
								if ( !Email.exec(val.value) ) { 
									NoValido(val);
									return false;	
								} else 
									return true;
								break;
								
					/*********************************************************************************/
					case 'cp':
						valor=val.value;
						codigo=valor.substr (0,2);
						if (parseInt (codigo)!=provincia) { return false; }
						if ( !CP.exec(valor) ) {
							NoValido(val);
							return false;	
						}else return true;
						break;
					
					
					/*********************************************************************************/
					case 'ip':
						valor=val.value;
						if ( !IPM.exec(valor) && !IP_Masc.exec(valor) ) 
							{
							NoValido(val);
							return false;
							}
							else
							{
							return true;
							}
						break;
								
								
					/*********************************************************************************/
					case 'mac': 
						valor=val.value;
						if ( !MAC.exec(valor) ) 
							{
							NoValido(val);
							return false;	
							}
							else
							{
							return true;
							}
						break;
								
								
					/*********************************************************************************/
					case 'hora':
						valor=val.value;
						if ( !Hora.exec(valor) ) 
							{
							NoValido(val);
							return false;	
							}
							else
							{
								return true;
							}
						break;
								
								
					/*********************************************************************************/
					case 'fecha':
						valor=val.value;
						if ( !Fecha1.exec(valor) ) 
							{
							if ( !Fecha2.exec(valor) ) 
								{
								NoValido(val);
								return false;	
								}
								else
								{
								return true;
								}
							}
							else
							{
							return true;
							}
						break;
								
								
					/*********************************************************************************/
					case 'decimal':
						valor=val.value;
						if ( !Decimal1.exec(valor) ) 
							{
							if ( !Decimal2.exec(valor) ) 
								{
								//NoValido(val);
								return false;	
								}
								else
								{
								return true;
								}
							}
							else
							{
							return true;
							}
						break;
								
					case 'precio':
						valor=val.value;
						if ( Decimal2.exec(valor) || Entero.exec(valor) ) 
							{
								return true;
							} else {
								NoValido(val);
								return false;	
							}
						break;			
					/*********************************************************************************/
					case 'cc':
						if ( !cc.exec(val) ) 
							{
							NoValido(val);
							return false;
						} else {
							dig = obtenerDigito(val.substr (0,4)+val.substr (5,4),val.substr (13,10));
							if (dig == val.substr (10,2) ) return true;
							else return false;

							return true;
						}
						break;
								
					/*********************************************************************************/
					case 'Iden_Disp':
						valor=val.value;
						if ( !Iden_Disp.exec(valor) ) {
							NoValido(val);
							return false;
						}else{  return true; }
						break;
					
					default: return true; break;
					
					} // Fin switch
					
			//}
		
		
		return true;	
	
		}
	
	

	/******************************************************************************************************************/
	/* Esta función la utilizo para que me diga el digito de control                                                  */
	/******************************************************************************************************************/
	function obtenerDigito (Banco,Cuenta) {
		
      Pesos= new Array(6,3,7,9,10,5,8,4,2,1);
      var result ='';
      var iTemp =0;
      for (var n=0;n<=7;n++){
         iTemp  = iTemp + Banco.substr(7 - n, 1) * Pesos[n];
      }
      result = 11 - iTemp % 11;
      if (result > 9){
        result=1-result % 10;
      }
      iTemp=0;
      for (var n=0;n<=9;n++){
         iTemp  = iTemp + Cuenta.substr(9 - n, 1) * Pesos[n];
      }
      iTemp =11 - (iTemp % 11);
      if (iTemp > 9){
       iTemp =1-(iTemp % 10);
      }
      result=result*10+iTemp;
		
	  return result;
			
}
	
	

	/******************************************************************************************************************/
	/* Esta función la utilizo para que me diga la letra del DNI y NIE                                                */
	/******************************************************************************************************************/
	function dimeLetra (tmp)
		{
			switch (tmp) {
			  case 0: LetraNIF = "T"; break;
			  case 1: LetraNIF = "R"; break;
			  case 2: LetraNIF = "W"; break;
			  case 3: LetraNIF = "A"; break;
			  case 4: LetraNIF = "G"; break;
			  case 5: LetraNIF = "M"; break;
			  case 6: LetraNIF = "Y"; break;
			  case 7: LetraNIF = "F"; break;
			  case 8: LetraNIF = "P"; break;
			  case 9: LetraNIF = "D"; break;
			  case 10: LetraNIF = "X"; break;
			  case 11: LetraNIF = "B"; break;
			  case 12: LetraNIF = "N"; break;
			  case 13: LetraNIF = "J"; break;
			  case 14: LetraNIF = "Z"; break;
			  case 15: LetraNIF = "S"; break;
			  case 16: LetraNIF = "Q"; break;
			  case 17: LetraNIF = "V"; break;
			  case 18: LetraNIF = "H"; break;
			  case 19: LetraNIF = "L"; break;
			  case 20: LetraNIF = "C"; break;
			  case 21: LetraNIF = "K"; break;
			  case 22: LetraNIF = "E"; break;
			  case 23: LetraNIF = "T"; break;
			  default: LetraNIF = "Error"; break;
			}
			return LetraNIF;
		}
		
		
	/******************************************************************************************************************/
	/* Esta función verifica y rellena una hora introducida                                                           */
	/******************************************************************************************************************/
	function Hora_valida(fr) {
		var H= /^[0-2][0-9][0-5][0-9]$/;
		var H0= /^[0-9]$/;
		var H1= /^[0-2][0-9][0-5]$/;
		var H2= /^[0-2][0-9].[0-5][0-9]$/;
		var H3= /^[0-2][0-9].[0-5]$/;
		var H4= /^[0-2][0-9]$/;
		var H5= /^[0-9].[0-5]$/;
		var H6= /^[0-9].[0-5][0-9]$/;
		var H7= /^[0-9]:[0-5]$/;
		var H8= /^[0-9]:$/;
		var H9= /^[0-2][0-9]:$/;	
		var ok = false;		
		obj=document.getElementById(fr.name);

		if (H7.exec(fr.value)) {
			c=fr.value;
			obj.value="0"+c.substr (0, 1)+":"+c.substr (2, 1)+"0";
			ok = true;
		}
		if (H0.exec(fr.value) && !ok) {
			c=fr.value;
			obj.value="0"+c+":"+"00";
			ok = true;
		}
		if (H.exec(fr.value)&& !ok) {
			c=fr.value;
			obj.value=c.substr (0, 2)+":"+c.substr (2, 2);
			ok = true;
		}
		if (H1.exec(fr.value)&& !ok) {
			c=fr.value;
			obj.value=c.substr (0, 2)+":"+c.substr (2, 1)+"0";
			ok = true;
		}
		if (H2.exec(fr.value)&& !ok) {
			c=fr.value;
			obj.value=c.substr (0, 2)+":"+c.substr (3, 2);
			ok = true;
		}
		if (H3.exec(fr.value)&& !ok) {
			c=fr.value;
			obj.value=c.substr (0, 2)+":"+c.substr (3, 1)+"0";
			ok = true;
		}
		if (H4.exec(fr.value)&& !ok) {
			c=fr.value;
			obj.value=c.substr (0, 2)+":"+"00";
			ok = true;
		}
		if (H5.exec(fr.value)&& !ok) {
			c=fr.value;
			obj.value="0"+c.substr (0, 1)+":"+c.substr (3, 1)+"0";
			ok = true;
		}
		if (H6.exec(fr.value)&& !ok) {
			c=fr.value;
			obj.value="0"+c.substr (0, 1)+":"+c.substr (3, 2);
			ok = true;
		}
		if (H8.exec(fr.value)&& !ok) {
			c=fr.value;
			obj.value="0"+c.substr (0, 1)+":00";
			ok = true;
		}
		if (H9.exec(fr.value)&& !ok) {
			c=fr.value;
			obj.value=c.substr (0, 2)+":00";
			ok = true;
		}
		
		c=fr.value;
		if (c.substr (0, 2) > 23) obj.value="00:00";
		return true;
		
		
		alert("La Fecha introducida no es correcta.");
		obj.value="";
		return false;
	}
	
	function NoValido(val) {
		//val.style.color = '#FF0000';
	}