/* **********************************************************************************
 *                                                FUNCIONES DE VALIDACION GENERICAS
 * PROYECTO:
 *           TODOS
 *
 * Desarrollado por:
 *           FORMATIA - Formación, Consulta y Desarrollo PEFER, S.L.
 *                    - C/ Capitán Gallarza, 1 entlo. - 26001 - Logroño - La Rioja
 *                    - 941 202 596 - 941 214 304 - desarrollo@formatia.net
 *
 * Fecha de inicio del proyecto: 07/11/2007
 * **********************************************************************************
 * Fichero JavaScript: js/general_validator.js
 * Archivos asociados:
 *    cualquiera
 *
 * Fecha de creación del fichero:  20/07/2007
 * Desarrollador: Luis Fernández
 * Modificaciones:
 *
 * ******************************************************************************* */
function PasarJSaASP(cadena){
      cadena.value = cadena.value.replace(/\x27/g,'&#39;');//" 39
      cadena.value = cadena.value.replace(/\x22/g,'&quot;');//" 34
	  cadena.value = cadena.value.replace(/\xE1/g,'&aacute;');//á 255
	  cadena.value = cadena.value.replace(/\xE9/g,'&eacute;');//é 233
	  cadena.value = cadena.value.replace(/\xED/g,'&iacute;');//í 237
	  cadena.value = cadena.value.replace(/\xF3/g,'&oacute;');//ó 243
	  cadena.value = cadena.value.replace(/\xFA/g,'&uacute;');//ú 250
	  cadena.value = cadena.value.replace(/\xC1/g,'&Aacute;');//Á 193
	  cadena.value = cadena.value.replace(/\xC9/g,'&Eacute;');//É 201
	  cadena.value = cadena.value.replace(/\xCD/g,'&Iacute;');//Í 205
	  cadena.value = cadena.value.replace(/\xD3/g,'&Oacute;');//Ó 211
	  cadena.value = cadena.value.replace(/\xDA/g,'&Uacute;');//Ú 218
	  cadena.value = cadena.value.replace(/\xF1/g,'&ntilde;');//ñ 241
	  cadena.value = cadena.value.replace(/\xD1/g,'&Ntilde;');//Ñ 209
	  //cadena.value = cadena.value.replace(/\n/g,'<br>');//salto de linea y retorno de carro
	  //cadena.value = cadena.value.replace(/\r/g,'');//salto de linea
	  cadena.value = cadena.value.replace(/\xFC/g,'&uuml;');//ü 252
	  cadena.value = cadena.value.replace(/\xDC/g,'&Uuml;');//Ü 220
	  cadena.value = cadena.value.replace(/\x24/g,'&#36;');//$ 36
	  cadena.value = cadena.value.replace(/\xBA/g,'&ordm;');//º 186
	  cadena.value = cadena.value.replace(/\xD8/g,'&Oslash;');//ODiametro 216
	  cadena.value = cadena.value.replace(/\xF8/g,'&oslash;');//odiametro 248
	  cadena.value = cadena.value.replace(/\xAA/g,'&ordf;');//ª 170
	  cadena.value = cadena.value.replace(/\x80/g,'&euro;');//€ 128
}
function PasarHTMLaJS(cadena){
   //Transforma el contenido html tipo &aacute; en JS para cuadros de texto.
      cadena.value = cadena.value.replace(/&#39;/g,String.fromCharCode(39));//' 27
      cadena.value = cadena.value.replace(/&quot;/g,String.fromCharCode(34));//" 22
	  cadena.value = cadena.value.replace(/&aacute;/g,String.fromCharCode(225));//á E1
	  cadena.value = cadena.value.replace(/&eacute;/g,String.fromCharCode(233));//é E9
	  cadena.value = cadena.value.replace(/&iacute;/g,String.fromCharCode(237));//í ED
	  cadena.value = cadena.value.replace(/&oacute;/g,String.fromCharCode(243));//ó F3
	  cadena.value = cadena.value.replace(/&uacute;/g,String.fromCharCode(250));//ú FA
	  cadena.value = cadena.value.replace(/&Aacute;/g,String.fromCharCode(193));//Á C1
	  cadena.value = cadena.value.replace(/&Eacute;/g,String.fromCharCode(201));//É C9
	  cadena.value = cadena.value.replace(/&Iacute;/g,String.fromCharCode(205));//Í CD
	  cadena.value = cadena.value.replace(/&Oacute;/g,String.fromCharCode(211));//Ó D3
	  cadena.value = cadena.value.replace(/&Uacute;/g,String.fromCharCode(218));//Ú DA
	  cadena.value = cadena.value.replace(/&ntilde;/g,String.fromCharCode(241));//ñ F1
	  cadena.value = cadena.value.replace(/&Ntilde;/g,String.fromCharCode(209));//Ñ D1
	  //cadena.value = cadena.value.replace(/\n/g,'<br>');//salto de linea y retorno de carro
	  //cadena.value = cadena.value.replace(/\r/g,'');//salto de linea
	  cadena.value = cadena.value.replace(/&uuml;/g,String.fromCharCode(252));//ü FC
	  cadena.value = cadena.value.replace(/&Uuml;/g,String.fromCharCode(220));//Ü DC
	  cadena.value = cadena.value.replace(/&#36;/g,String.fromCharCode(36));//$ 24
	  cadena.value = cadena.value.replace(/&ordm;/g,String.fromCharCode(186));//º BA
	  cadena.value = cadena.value.replace(/&Oslash;/g,String.fromCharCode(216));//ODiametro D8
	  cadena.value = cadena.value.replace(/&oslash;/g,String.fromCharCode(248));//odiametro F8
	  cadena.value = cadena.value.replace(/&ordf;/g,String.fromCharCode(170));//ª AA
	  cadena.value = cadena.value.replace(/&euro;/g,String.fromCharCode(128));//€ 80
}

function EliminarEtiquetas(cadena){
   cadena = cadena.replace(/\x3C/g,'&lt;');//< 60
   cadena = cadena.replace(/\x3E/g,'&gt;');//> 62
   return cadena;
}
/* **********************************************************************************
 * function campoVacio(campo, nombre, msg)
 *    Entrada:
 *       campo: texto del campo del formulario que queremos validar.
 *       nombre: Nombre del campo - se muestra en el mensaje.
 *       msg: true/false dependiendo si hay que lanzar alerta javascript.
 *
 *    Salida:
 *       Devuelve true si la cadena campo está vacía y false en caso contrario.
 *       Si msg es true lanza un aviso en el explorador en forma de alert.
 * ******************************************************************************* */
function campoVacio(campo, nombre, msg){
   retorno = false;
   cadena = campo.replace(/ /g,'');
   if (cadena.length == 0) campo = "";
   if (campo.length == 0){
      if (msg) alert('Debe rellenar el campo \''+nombre+'\'.');
	  retorno = true;
   }
   return retorno;
}

/* **********************************************************************************
 * function validar_email(email)
 *
 * Entrada: email: Dirección de correo tipo nombre@dominio.es o similar.
 *
 * Salida:  Devuelve 1 si es una dirección de correo bien construida y 0 en caso
 *          contrario. (Validado con expresiones regulares PCRE de PERL)
 *
 * Fechas:
 *    Creado: 25/06/2007 (Luis)
 *    Modificado:
 * ******************************************************************************* */
function validar_email(email){
   var expresion = /(^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*((\.\w{2,3})+$|(\.\w{2,3}\.\w{2,3})+$))/;
   return expresion.test(email);
}

/* **********************************************************************************
 * function validarDominio(dominio)
 *
 * Entrada: dominio: Nombre de dominio tipo dominio.es o similar.
 *
 * Salida:  Devuelve 1 si es un nombre de dominio válido y 0 en caso contrario
 *          (Validado con expresiones regulares PCRE de PERL)
 *
 * Fechas:
 *    Creado: 25/06/2007 (Luis)
 *    Modificado:
 * ******************************************************************************* */
function validarDominio(dominio){
   var strHTTP = dominio.slice(0,7);
   if (strHTTP.toUpperCase() == "HTTP://")
      dominio = dominio.slice(7,dominio.length);
   var arrAuxiliar = dominio.split("/");
   var expresion = /(^\w+([\.-]?\w+)*((\.\w{2,3})+$|(\.\w{2,3}\.\w{2,3})+$))|(^[1-9][0-9]{0,2}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$)/;
   es_Valido = expresion.test(arrAuxiliar[0]);
   return(es_Valido);
}
function ValidarTelefono(telefono){
   telefono.value = telefono.value.replace(/ /g,"");
   var EsValido = !isNaN(telefono.value);
   if (EsValido){
      var longn = telefono.value.length;
      if (longn != 9 && longn != 11 && longn != 13) EsValido = false;
	  else{
	     if (longn == 9) telefono.value = "0034" + telefono.value;
		 if (longn == 11) telefono.value = "00" + telefono.value;
	  }
   }
   return EsValido;
}
function ValidarTelefono2(telefono){
   telefono = telefono.replace(/ /g,"");
   var EsValido = !isNaN(telefono);
   if (EsValido){
      var longn = telefono.length;
      if (longn != 9) EsValido = false;
   }
   return EsValido;
}

/*function esNIFesCIF(str) devuelve 0 si no es válido, 1 si es NIF y 2 si es CIF */
function esNIFesCIF(cif) {
	par = 0;
	non = 0;
	letras="ABCDEFGHKLMNPQS";
	let=cif.charAt(0);

	if (!isNaN(let)) {
		nif=cif;
		dni=nif.substring(0,nif.length-1);
		let=nif.charAt(nif.length-1);
		if (!isNaN(let)) {
			//alert('Falta la letra');
			//document.formulario.nif.focus();
			return 0;
		}
		else
		{
			cadena="TRWAGMYFPDXBNJZSQVHLCKET";
			posicion = dni % 23;
			letra = cadena.substring(posicion,posicion+1);
			if (letra!=let.toUpperCase()) {
				//alert("Nif no válido");
				//document.formulario.nif.focus();
				return 0;
			}
			}
		//alert("Nif válido");
		return 1;
	}

	if (cif.length!=9) {
		//alert('El Cif debe tener 9 dígitos');
		//document.formulario.nif.focus();
		return 0;
	}

	if (letras.indexOf(let.toUpperCase())==-1) {
		//alert("El comienzo del Cif no es válido");
		//document.formulario.nif.focus();
		return 0;
	}

	for (zz=2;zz<8;zz+=2) {
		par = par+parseInt(cif.charAt(zz));
	}

	for (zz=1;zz<9;zz+=2) {
		nn = 2*parseInt(cif.charAt(zz));
		if (nn > 9) nn = 1+(nn-10);
		non = non+nn;
	}

	parcial = par + non;

	control = (10 - ( parcial % 10));

	if (control==10) control=0;

	if (control!=cif.charAt(8)) {
		//alert("El Cif no es válido");
		//document.formulario.nif.focus();
		return 0;
	}
	//alert("El Cif es válido");
	return 1;
}

function validar(abc) {
	dni=abc.substring(0,abc.length-1);
	let=abc.charAt(abc.length-1);
	if (!isNaN(let)) {
		//alert('Falta la letra');
		//document.formulario.nif.focus();
		return 0;
	}
	else
	{
		cadena="TRWAGMYFPDXBNJZSQVHLCKET";
		posicion = dni % 23;
		letra = cadena.substring(posicion,posicion+1);
		if (letra!=let.toUpperCase()) {
			//alert("Nif no válido");
			//document.formulario.nif.focus();
			return 0;
   	}
 	}
	//alert("Nif válido");
	return 1;
}

/* **********************************************************************************
 * function validarCuentaCorriente(id_entidad,id_sucursal,id_digitosControl,id_numeroCuenta)
 *
 * Entrada: id_entidad - id del campo de texto con los digitos 1-4
 *          id_sucursal - id del campo de texto con los digitos 5-8
 *          id_control - id del campo de texto con los digitos 9-10
 *          id_numeroCuenta - id del campo de texto con los digitos 11-20
 *
 * Salida:  Devuelve true si la cuenta es válida, y false en caso contrario
 *
 * Fechas:
 *    Creado: 08/08/2008 (Toño)
 *    Modificado:
 * ******************************************************************************* */
function validarCuentaCorriente(id_entidad,id_sucursal,id_digitosControl,id_numeroCuenta) {

   entidad = document.getElementById(id_entidad).value;
   sucursal = document.getElementById(id_sucursal).value;
   entidadSucursal=String(entidad)+String(sucursal);
   digitosControl = document.getElementById(id_digitosControl).value;
   numeroCuenta = document.getElementById(id_numeroCuenta).value;

   entidadSucursal = String(entidadSucursal).split("");
   APesos = new Array(1,2,4,8,5,10,9,7,3,6); // Array de "pesos"
	DC1=0;
	DC2=0;
	x=8;
	while(x>0) {
		digito=entidadSucursal[x-1];
		DC1=parseInt(DC1)+parseInt(APesos[x+1]*(parseInt(digito)));
		x = x - 1;
	}
	Resto = DC1%11;
	DC1=11-Resto;
	if (DC1==10) DC1=1;
	if (DC1==11) DC1=0;              // Dígito control Entidad-Oficina

	x=10;
	numeroCuenta = String(numeroCuenta).split("");
	while(x>0) {
		digito=numeroCuenta[x-1];
		DC2=DC2+(APesos[x-1]*(digito));
		x = x - 1;
	}
	Resto = DC2%11;
	DC2=11-Resto;
	if (DC2==10) DC1=1;
	if (DC2==11) DC1=0;         // Dígito Control C/C

	DigControl=String(DC1)+String(DC2);   // los 2 números del D.C.
 	if(DigControl == digitosControl)
	   return true;
	else
	  return false;
}
/* **********************************************************************************
 * comprobarCuenta(id_entidad,id_sucursal,id_control,id_numero)
 *
 *       formatea los campos de introducción de nº de cuenta, mientras
 *       se introduce el nº de cuenta, fondo amarillo, cuando se
 *       introducen todos los dígitos si es correcta --> fondo blanco
 *       en caso controntrario --> fondo rojo
 *
 *
 * Entrada: id_entidad - id del campo de texto con los digitos 1-4
 *          id_sucursal - id del campo de texto con los digitos 5-8
 *          id_control - id del campo de texto con los digitos 9-10
 *          id_numeroCuenta - id del campo de texto con los digitos 11-20
 *
 * Salida:  void
 *
 * Fechas:
 *    Creado: 08/08/2008 (Toño)
 *    Modificado:
 * ******************************************************************************* */
function comprobarCuenta(id_entidad,id_sucursal,id_control,id_numero){
   if(document.getElementById(id_numero).value.length==10 && document.getElementById(id_control).value.length==2 && document.getElementById(id_sucursal).value.length==4 && document.getElementById(id_entidad).value.length==4){
      if(!validarCuentaCorriente(id_entidad,id_sucursal,id_control,id_numero)){
         document.getElementById(id_numero).style.backgroundColor=document.getElementById(id_control).style.backgroundColor=document.getElementById(id_sucursal).style.backgroundColor=document.getElementById(id_entidad).style.backgroundColor='#c1121e';
         document.getElementById(id_numero).style.color=document.getElementById(id_control).style.color=document.getElementById(id_sucursal).style.color=document.getElementById(id_entidad).style.color='#ffffff';
      }
      else{
         document.getElementById(id_numero).style.backgroundColor=document.getElementById(id_control).style.backgroundColor=document.getElementById(id_sucursal).style.backgroundColor=document.getElementById(id_entidad).style.backgroundColor='#ffffff';
         document.getElementById(id_numero).style.color=document.getElementById(id_control).style.color=document.getElementById(id_sucursal).style.color=document.getElementById(id_entidad).style.color='#000000';
      }
   }
   else{
      document.getElementById(id_numero).style.backgroundColor=document.getElementById(id_control).style.backgroundColor=document.getElementById(id_sucursal).style.backgroundColor=document.getElementById(id_entidad).style.backgroundColor='#fff17e';
         document.getElementById(id_numero).style.color=document.getElementById(id_control).style.color=document.getElementById(id_sucursal).style.color=document.getElementById(id_entidad).style.color='#000000';
   }
}
/* **********************************************************************************
 * function function fechaNoValida(dia,mes,anio){
 *
 * Entrada: dia - int/string dia que se quiere comprobar
 *          mes - string mes que se quiere comprobar (01-12)
 *          anio - int/string anio que se quiere comprobar (si es = '' valida dia y mes
 *                 si es != de '' validacion bisiestos
 * Salida:  Devuelve true si la fecha no es valida, y false en caso contrario
 *
 * Fechas:
 *    Creado: 08/08/2008 (Toño)
 *    Modificado:
 * ******************************************************************************* */
function fechaNoValida(dia,mes,anio){
   if(anio.indexOf('_') != -1){
      return true;
   }
   var NoValido = true;
   switch (mes){
    case '01':
    case '01':
    case '03':
    case '05':
    case '07':
    case '08':
    case '10':
    case '12':
        NoValido = false;
    break;
    case '02':
        if(dia>29){
            NoValido = true;
        }
        else{
           NoValido = false;
        }
    case '04':
    case '06':
    case '09':
    case '11':
        if(dia>30)
           NoValido = true;
        else
           NoValido = false;
    break;
    }
    if(anio != ''){
       if ((anio % 4 == 0) && ((anio % 100 != 0) || (anio % 400 == 0))){
          NoValido = false;
       }
       else if(dia>28 && mes=='02'){
          NoValido = true;
       }
       else
          NoValido = false;
    }
    return NoValido;
}
/* **********************************************************************************
 * function fechaAutomaticaDown(e,campoFecha)
 *
 *       formatea campoFecha con colores: si la fecha es invalida aparece con
 *       fondo amarillo, si es valida el campo aparece en blanco, si la fecha
 *       es invalida se borra (solo admite numeros y fechas validas)
 *
 * Entrada: e - evento poner en algun evento del campo de texto 'event' (tecla pulsada)
 *          campoFecha - campo de la texto de la fecha ej: 'this'
 *
 * Salida:  void - formatea el campo con colores si la fecha es invalida aparece con
 *                 fondo amarillo, si es valida el campo aparece en blanco
 *
 * Fechas:
 *    Creado: 08/08/2008 (Toño)
 *    Modificado:
 * ******************************************************************************* */
function fechaAutomaticaDown(e,campoFecha){
   var keyCode
   if(window.event)keyCode=window.event.keyCode;
   else if(e) keyCode=e.which;
   switch (keyCode) {
      case 48:
      case 96:
      keyCode = 0;
      break;
      case 49:
      case 97:
      keyCode = 1;
      break;
      case 50:
      case 98:
      keyCode = 2;
      break;
      case 51:
      case 99:
      keyCode = 3;
      break;
      case 52:
      case 100:
      keyCode = 4;
      break;
      case 53:
      case 101:
      keyCode = 5;
      break;
      case 54:
      case 102:
      keyCode = 6;
      break;
      case 55:
      case 103:
      keyCode = 7;
      break;
      case 56:
      case 104:
      keyCode = 8;
      break;
      case 105:
      case 57:
      keyCode = 9;
      break;
      case 8:
      keyCode = 'retroceso';
      break;
      default:
      keyCode = 'noNumero';
   }
   if(keyCode != 'noNumero'){
      switch (campoFecha.value.indexOf('_')){
         case 0: // __/__/____
            if(keyCode == 'retroceso' || keyCode>3){
               campoFecha.value = '__/__/_____';
            }
            else
               campoFecha.value = keyCode + '_/__/____';
            //campoFecha.style.backgroundColor='#fff17e';
            //campoFecha.style.color='#000000';
            break;
         case 1: // x_/__/____
            if(keyCode == 'retroceso' || campoFecha.value.substring(0,1)+keyCode>31){
               campoFecha.value = '__/__/_____';
            }
            else
               campoFecha.value = campoFecha.value.substring(0,1)+keyCode + '/__/____';
            break;
         case 3: // xx/__/____
            if(keyCode == 'retroceso')
               campoFecha.value = campoFecha.value.substring(0,1)+'_/__/_____';
            else if(keyCode>1)
               campoFecha.value = campoFecha.value.substring(0,2)+'/__/____';
            else
               campoFecha.value = campoFecha.value.substring(0,3)+keyCode + '_/____';
         break;
         case 4: // xx/x_/____
            if(keyCode == 'retroceso')
               campoFecha.value = campoFecha.value.substring(0,3)+'__/_____';
            else if(campoFecha.value.substring(3,4)+keyCode>12)
               campoFecha.value = campoFecha.value.substring(0,4)+'_/____';
            else if(fechaNoValida(campoFecha.value.substring(0,2),campoFecha.value.substring(3,4)+keyCode,'')){
               campoFecha.value = '__/__/____';
            }
            else
               campoFecha.value = campoFecha.value.substring(0,4)+keyCode + '/____';
         break;
         case 6: // xx/xx/_____
            if(keyCode == 'retroceso')
               campoFecha.value = campoFecha.value.substring(0,4)+'_/_____';
            else
               campoFecha.value = campoFecha.value.substring(0,6)+keyCode + '___';
         break;
         case 7: // xx/xx/x___
            if(keyCode == 'retroceso')
               campoFecha.value = campoFecha.value.substring(0,6)+'_____';
            else
              campoFecha.value = campoFecha.value.substring(0,7)+keyCode + '__';
         break;
         case 8:
         if(keyCode == 'retroceso')
               campoFecha.value = campoFecha.value.substring(0,7)+'____';
            else
               campoFecha.value = campoFecha.value.substring(0,8)+keyCode + '_';
         break;
         case 9:
         if(keyCode == 'retroceso')
               campoFecha.value = campoFecha.value.substring(0,8)+'___';
         else if(fechaNoValida(campoFecha.value.substring(0,2),campoFecha.value.substring(3,5),campoFecha.value.substring(6,9)+keyCode))
               campoFecha.value = '__/__/____';
            else {
            campoFecha.value = campoFecha.value.substring(0,9)+keyCode;
            //campoFecha.style.backgroundColor='#ffffff';
            //campoFecha.style.color='#666666';
            }
         break;
         case -1:
         if(keyCode == 'retroceso'){
            campoFecha.value = '__/__/_____';
            //campoFecha.style.backgroundColor='#fff17e';
            //campoFecha.style.color='#000000';
         }
         break;
       }
   }
}

/* **********************************************************************************
 * formato fecha Manual
* ******************************************************************************* */

function IsNumeric(valor) {
	var log=valor.length; var sw="S";
	for (x=0; x<log; x++) { v1=valor.substr(x,1);
		v2 = parseInt(v1);
		//Compruebo si es un valor numérico
		if (isNaN(v2)) { sw= "N";}
	}
	if (sw=="S") {return true;} else {return false; }
}

var primerslap=false;
var segundoslap=false;

function formatoFechaManual(fecha) {
	var long = fecha.length;
	var dia;
	var mes;
	var ano;
	if ((long>=2) && (primerslap==false)) {
		dia=fecha.substr(0,2);
		if ((IsNumeric(dia)==true) && (dia<=31) && (dia!="00")) {
			fecha=fecha.substr(0,2)+"/"+fecha.substr(3,7); primerslap=true;
		}
		else {
			fecha="";
			primerslap=false;
		}
	}
	else {
		if (fecha.substr(3,1)=='/') fecha = fecha.substr(0,3); // Linea mia
		dia=fecha.substr(0,1);
		if (IsNumeric(dia)==false) fecha="";
		if ((long<=2) && (primerslap=true)) {
			fecha=fecha.substr(0,1);
			primerslap=false;
		}
	}

	if ((long>=5) && (segundoslap==false)) {
		mes=fecha.substr(3,2);
		if ((IsNumeric(mes)==true) &&(mes<=12) && (mes!="00")) {
			fecha=fecha.substr(0,5)+"/"+fecha.substr(6,4); segundoslap=true;
		}
		else {
			fecha=fecha.substr(0,3);; segundoslap=false;}
	}
	else 	{
		if ((long<=5) && (segundoslap=true)) { fecha=fecha.substr(0,4); segundoslap=false; }
	}
	if (long>=7) {
		ano=fecha.substr(6,4);
		if (IsNumeric(ano)==false) { fecha=fecha.substr(0,6); }
		else { if (long==10){ if ((ano==0) || (ano<1800) || (ano>2100)) { fecha=fecha.substr(0,6); } } }
	}
	if (long>=10) {
		fecha=fecha.substr(0,10);
		dia=fecha.substr(0,2);
		mes=fecha.substr(3,2);
		ano=fecha.substr(6,4);
		// Año no viciesto y es febrero y el dia es mayor a 28
		if ( (ano%4 != 0) && (mes ==02) && (dia > 28) ) { fecha=fecha.substr(0,2)+"/"; }
	}
	return (fecha);
}

function formatoHoraManual(hora) {
	var long = hora.length;
	var horas;
	var minutos;
	if (long==1) {
		horas=hora.substr(0,1);
		if ((IsNumeric(horas)==false) || (horas=='3' || horas=='4' || horas=='5' || horas=='6' || horas=='7' || horas=='8' || horas=='9')) {
			hora="";
			primerslap=false;
		}
	}
	if ((long>=2) && (primerslap==false)) {
		horas=hora.substr(0,2);
		if ((IsNumeric(horas)==true) && (horas<=23) && horas!='3' && horas!='4' && horas!='5' && horas!='6' && horas!='7' && horas!='8' && horas!='9') {
			hora=hora.substr(0,2)+":"+hora.substr(3,2); primerslap=true;
		}
		else {
			hora="";
			primerslap=false;
		}
	}
	else {
		if (hora.substr(2,1)==':') hora = hora.substr(0,5); // Linea mia
		//else hora = hora.substr(0,2)+':'+hora.substr(3,2);
		horas=hora.substr(0,1);
		if (IsNumeric(horas)==false) hora="";
		if ((long<=2) && (primerslap=true)) {
			hora=hora.substr(0,2);
			primerslap=false;
		}
	}

	if ((long>=4) && primerslap==true) {
		horas=hora.substr(0,2);
		minutos=hora.substr(3,2);
		if (IsNumeric(minutos)==true && (minutos<=59) && minutos!='6' && minutos!='7' && minutos!='8' && minutos!='9') {
			hora=horas+':'+minutos;
		}
		else {
			hora=horas+':';
		}
	}

	return (hora);
}


/* **********************************************************************************
 * campoBlanco(campo,tipo){
 *
 *       formatea los campos de introducción de texto,
 *       si el campo esta en blanco y evento (keyup/keydown) fondo amarillo
 *       si el campo esta en blanco y evento (blur) fondo rojo
 *       si el campo tiene contenido fondo blanco
 *
 * Entrada: campo - campo de texto ej: this
 *          tipo - tipo de evento -'blur' pone fondo rojo si esta en blanco
 *                                -'key' pone fondo amarillo si esta en blanco
 *
 * Salida:  void
 *
 * Fechas:
 *    Creado: 08/08/2008 (Toño)
 *    Modificado:
 * ******************************************************************************* */
function campoBlanco(campo,tipo){
   expreg = /\b/;
	if (!expreg.test(campo.value) || campo.value.length>254) {
	   if(tipo=='blur'){
	      fondoError(campo);
	   }
		else if(tipo=='key')
		 fondoAlerta(campo);
	}
	else
	  fondoOk(campo);
}
/* **********************************************************************************
 * campoTelefono(campo,tipo){
 *
 *       formatea los campos de introducción de texto,
 *       si el campo esta en blanco y telefono invalido evento (keyup/keydown) fondo amarillo
 *       si el campo esta en blanco y telefono invalido evento (blur) fondo rojo
 *       si el campo tiene telefono valido fondo blanco
 *
 * Entrada: campo - campo de texto ej: this
 *          tipo - tipo de evento -'blur' pone fondo rojo si esta en blanco
 *                                -'key' pone fondo amarillo si esta en blanco
 *
 * Salida:  void
 *
 * Fechas:
 *    Creado: 08/08/2008 (Toño)
 *    Modificado:
 * ******************************************************************************* */
function campoTelefono(campo,tipo){
   if (!ValidarTelefono2(campo.value)) {
	   if(tipo=='blur'){
	      fondoError(campo);
	   }
		else if(tipo=='key'){
		   fondoAlerta(campo);
		}
	}
	else
	  fondoOk(campo);
}
/* **********************************************************************************
 * selectBlanco(campo,tipo){
 *
 *       formatea los campos select
 *       si el campo esta a 0 y evento (change) fondo amarillo
 *       si el campo esta a 0 y evento (blur) fondo rojo
 *       si el campo no es 0
 *
 * Entrada: campo - campo select ej: this
 *          tipo - tipo de evento -'blur' pone fondo rojo si esta en blanco
 *                                -'change' pone fondo amarillo si esta en blanco
 *
 * Salida:  void
 *
 * Fechas:
 *    Creado: 08/08/2008 (Toño)
 *    Modificado:
 * ******************************************************************************* */
function selectBlanco(campo,tipo){
	if (campo.value == '0') {
	   if(tipo=='blur'){
	        fondoError(campo);
	   }
		else if(tipo=='change')
		    fondoAlerta(campo);
	}
	else
	  fondoOk(campo);
}
/* **********************************************************************************
 * campoLogin(campo,tipo){
 *
 *       formatea los campos de introducción de texto,
 *       si el campo tiene menos de 5 caracteres y evento (keyup/keydown)
 *       fondo amarillo
 *       si el login ya existe fondo rojo
 *       si el campo tiene menos de 5 caracteres y evento (blur) fondo rojo
 *       si el campo tiene 5 o mas caracteres fondo blanco
 *
 * Entrada: campo - campo de texto ej: this
 *          tipo - tipo de evento -'blur' pone fondo rojo si esta en blanco
 *                                -'key' pone fondo amarillo si esta en blanco
 *
 * Salida:  void
 *
 * Fechas:
 *    Creado: 08/08/2008 (Toño)
 *    Modificado:
 * ******************************************************************************* */
function campoLogin(campo,tipo){
   expreg = /\b/;
	if (!expreg.test(campo.value) || campo.value.length<5) {
      ocultarCapa("loginExistente");
	   if(tipo=='blur'){
	      fondoError(campo);
	   }
		else if(tipo=='key')
		 fondoAlerta(campo);
	}
	else {
	   if(ajax_get_request_text("../../ajax/ajax.php?func=val_login&login="+campo.value,"","GET",false,null,null,"todoOK") == 1){
	      fondoOk(campo);
	      ocultarCapa("loginExistente");
	   }
	   else{
	     fondoError(campo);
	     mostrarCapa("loginExistente");
	   }
 	}
}
/* **********************************************************************************
 * campoPass(campo,tipo){
 *
 *       formatea los campos de introducción de texto,
 *       si el campo tiene menos de 5 caracteres y evento (keyup/keydown)
 *       fondo amarillo
 *
 *       si el campo tiene menos de 5 caracteres y evento (blur) fondo rojo
 *       si el campo tiene 5 o mas caracteres fondo blanco
 *
 * Entrada: campo - campo de texto ej: this
 *          tipo - tipo de evento -'blur' pone fondo rojo si esta en blanco
 *                                -'key' pone fondo amarillo si esta en blanco
 *
 * Salida:  void
 *
 * Fechas:
 *    Creado: 08/08/2008 (Toño)
 *    Modificado:
 * ******************************************************************************* */
function campoPass(campo,tipo){
   expreg = /\s/;
	if (!expreg.test(campo.value) && campo.value.length > 5) {
	   fondoOk(campo);
	}
	else {
	   if(tipo=='blur'){
	      fondoError(campo);
	   }
		else if(tipo=='key')
		 fondoAlerta(campo);
	   }
}
/* **********************************************************************************
 * campoPassOk(campo,tipo){
 *
 *       si la repeticion de contraseña es distinta de la contraseña
 *       fondo rojo
 *
 *
 * Entrada: campo - campo de texto ej: this
 *          tipo - tipo de evento -'blur' pone fondo rojo si esta en blanco
 *                                -'key' pone fondo amarillo si esta en blanco
 *
 * Salida:  void
 *
 * Fechas:
 *    Creado: 08/08/2008 (Toño)
 *    Modificado:
 * ******************************************************************************* */
function campoPassOk(campo,tipo){
   if (campo.value != document.getElementById('pass').value || campo.value == '') {
	   if(tipo=='blur'){
	      fondoError(campo);
	   }
		else if(tipo=='key')
		 fondoAlerta(campo);
	}
	else {
	      fondoOk(campo);

	   }
}
/* **********************************************************************************
 * campoEmail(campo,tipo){
 *
 *       si el email no es valido error
 *       si el email ya existe error
 *
 *
 * Entrada: campo - campo de texto ej: this
 *          tipo - tipo de evento -'blur' pone fondo rojo si esta en blanco
 *                                -'key' pone fondo amarillo si esta en blanco
 *
 * Salida:  void
 *
 * Fechas:
 *    Creado: 08/08/2008 (Toño)
 *    Modificado:
 * ******************************************************************************* */
function campoEmail(campo,tipo){
	if (!validar_email(campo.value)) {
	   ocultarCapa("emailExistente");
	   if(tipo=='blur'){
	      fondoError(campo);
	   }
		else if(tipo=='key')
		 fondoAlerta(campo);
	}
	else {
	   if(ajax_get_request_text("../../ajax/ajax.php?func=val_email&email="+campo.value,"","GET",false,null,null,"todoOK") == 1){
	      fondoOk(campo);
	      ocultarCapa("emailExistente");
	   }
	   else{
	     fondoError(campo);
	     mostrarCapa("emailExistente");
	   }
 	}
}
/* **********************************************************************************
 * campoCarpeta(campo,tabla,campoTabla,tipo,id){
 *
 *       comprueba que una carpeta es valida, no existe y contiene solo numeros,
 *       letras y guiones bajos
 *
 *       si el campo si el campo no contiene solo números, letras y "_" y evento (blur) fondo rojo
 *       si el campo contiene solo números, letras y "_" fondo blanco
 *
 * Entrada: campo - campo de texto ej: this
 *          tabla - nombre de la tabla en la que se almacena el nombre de la carpeta
 *          campoTabla - nombre del campo donde se almacena el nombre de la carpeta
 *          tipo - tipo de evento -'blur' pone fondo rojo si esta en blanco
 *                                -'key' pone fondo amarillo si esta en blanco
 *          id - id del registro, para no mostrar error si la carpeta ya existe
 *          y pertence al registro que se esta mostrando (solo modificar, en nuevo
 *          pasarle id = 0 o cualquier otro que nunca exista
 *
 * Salida:  void
 *
 * Fechas:
 *    Creado: 08/08/2008 (Toño)
 *    Modificado:
 * ******************************************************************************* */
function campoCarpeta(campo,tabla,campoTabla,tipo,id){
   expreg = /\W+/;
	if (!expreg.test(campo.value)){
	   if(ajax_get_request_text("../../ajax/ajax.php?func=val_carpeta&carpeta="+campo.value+"&tabla="+tabla+"&campoTabla="+campoTabla+"&id="+id,"","GET",false,null,null,"todoOK") == '0')
	     fondoOk(campo);
	   else {
   	   if(tipo=='blur')
   	      fondoError(campo);

   		else if(tipo=='key')
   		 fondoAlerta(campo);
   	}
   }
	else {
	   if(tipo=='blur')
	      fondoError(campo);

		else if(tipo=='key')
		    fondoAlerta(campo);
   }
}


/* **********************************************************************************
 * campoArchivo(campo,extensiones){
 *
 *       comprueba la extensión del archivo, introducido en un input file
 *
 *       si la extension del archivo no concuerda con ninguna del array
 *       extensiones y blur fondo rojo
 *
 *       si la extension del archivo no concuerda con ninguna del array
 *       extensiones y change fondo amarillo
 *
 * Entrada: campo - campo de texto ej: this
 *
 *       extensiones = extensiones permitidas del archvio en minúsculas
 *                     separadas por comas
 *
 * Salida:  void
 *
 * Fechas:
 *    Creado: 02/09/2008 (Toño)
 *    Modificado:
 * ******************************************************************************* */
function campoArchivo(campo,extensionesCadena,tipo){

      extensiones = new Array();
      extensiones = extensionesCadena.split(',');

      for(i=0; i<extensiones.length; i++){
         ruta = campo.value.toLowerCase();
         indiceExtension = ruta.search(extensiones[i]);

         if(indiceExtension==-1 || indiceExtension<campo.value.length-5){
            if(tipo=='blur')
   	        fondoError(campo);
   	     	else if(tipo=='key')
   		     fondoAlerta(campo);
         }
         else{
            fondoOk(campo);
            break;
         }
      }
}



