/*

* Producto: Función JavaScript que realiza las validaciones en los formularios

* ----------------------------------------------------------------------------------------------------------------

* Descripcion: Contiene las funciones JavaScript necesarias para realizar las validaciones de los formatos.

* ----------------------------------------------------------------------------------------------------------------

* Autor: RACE Informatica

*/



//***********************************************************************************************//

//Librería: Funciones de Formato, versión 1.0.

// INDICE :       

//   Función 1.  "validaFechaPost"

//		Función que valida si una fecha es posterior a otra.

//   Función 2.  "trim"

//		Función que limpia los espacios en blanco del comienzo y fin de la cadena

//   Función 3.  "validaLetras"

//		Función que valida que el dato contiene sólo letras

//   Función 4.  "fEsEntero"

//		Función que comprueba si es un entero

//   Función 5.  "fEsReal"

//		Función que comprueba si es un real con un punto

//   Función 6.  "fEsFecha"

//		Función que comprueba si una fecha es válida

//   Función 7.  "fEsAnterior"

//		Función que comprueba si una fecha es anterior a otra

//   Función 8.  "fEsComboSeleccionado"

//		Función que comprueba si un combo tiene algún elemento seleccionado

//   Función 9.  "fEsTodoEspacio"

//		Función que valida si un texto es compuesto unicamente de espacios

//   Función 10.  "fEsHoraValida"

//		Función que comprueba si una hora es válida

//   Función 11.  "fComprobar"

//		Función que valida un texto según otro texto de referencia

//   Función 12.  "fEsMoneda"

//		Función que valida que un campo tiene el formato de moneda

//   Función 13.  "fEsDigitoPositivoDecimal"

//		Función que valida un texto con formato hasta 2 decimales separadas con un punto

//   Función 14.  "fEsTelefonoValido"

//		Función que valida un telefono

//   Función 15.  "fValidarPorcentage"

//		Función que valida si un  numero es un porcentaje correcto

//   Función 16.  "fValidarEmail"

//		Función que comprueba si un texto es una dirrecion eMail

//   Función 17.  "fValidarCamposObligatorios"

//		Función que valida los campos obligatorios de un formulario

//   Función 18.  "fValidarFormulario"

//		Función que comprueba los formatos de los campos de un formulario

//   Función 19.  "fNoEsNulo"

//		Función que comprueba que un valor no es nulo

//   Función 20.  "fValidarPormilaje"

//		Función que comprueba que un valor es un pormilaje

//   Función 21.  "bNoEsNumero"

//		Función que comprueba si la tecla pulsada corresponde a un número

//   Función 22.  "formatea"

//		Función que formatea automáticamente una fecha u hora

//   Función 23.  "bNoEsNumeroTiempos"

//		Función que controla que solo se introduzcan datos numéricos y separadores de tiempos

//   Función 24.  "soltarTecla"

//		Función que controla que en la primera posición no se introduzca un separador de tiempos

//   Función 25.  "fijarAtencion"

//		Función que cambia el color de una caja de texto cuando le pasamos el foco

//   Función 26.  "ponBlanco"

//		Función que quita el color de una caja de texto

//   Función 27.  "GetRadioValue"

//		Función que obtiene el valor de un radio button

//   Función 28.  "GetSelectValue"

//		Función que obtiene el valor de una select

//   Función 29.  "validaCodigoPostal"

//		Función que valida que el código postal tiene un formato correcto

//   Función 30.  "chkCampo"

//		Función se encarga de pasar de un campo a otro, cuando llega al límite del tamaño del primero

//   Función 31.  "URLEncode"

//		Función se encarga de pasar una URL en JS en la que desaparecen los simbolos raros. Que pueden perjudicar en que la URL sea correcta

//   Función 32.  "GetRadioIndex"

//		Función que obtiene el índice de un radio button

//   Función 33.  "replace"

//		Función que reemplaza, dentro de una cadena, un string específico por otro que se le pasa a la función

//   Función 34.  "getAge"

//		Función que devuelve la edad de una persona

//   Función 35.  "setCeros"

//		Función que rellena con ceros

/*********************************************************************************/
/******************     Función que valida si una fecha       ********************/
/******************            es posterior a otra            ********************/
/*********************************************************************************/
function validaFechaPost(fechaFin,fechaIni)
{       
var dia1  = fechaFin.substring(0,2);
var mes1 = fechaFin.substring(3,5);
var anio1 = fechaFin.substring(6);
var dia2  = fechaIni.substring(0,2);
var mes2 = fechaIni.substring(3,5);
var anio2 = fechaIni.substring(6);
if(dia1 && anio1 && mes1 && mes2 && dia2 && anio2)
{
	if(parseInt(anio2)>parseInt(anio1))
	        {
	        return(false);
	        }               
	else if(parseInt(anio1,10)==parseInt(anio2,10))
	        {
	
	        if (parseInt(mes2,10)>parseInt(mes1,10))
	                {
	                return(false);
	                }
	        else if(parseInt(mes2,10)==parseInt(mes1,10))
	                {
	                if(parseInt(dia2,10)>parseInt(dia1,10))
	                        {
	                        return(false);
	                        }
	                else if(parseInt(dia2,10)<=parseInt(dia1,10))
	                        {
	                        return(true);
	                        }
	                }else return(true);
	        }else return(true);
 }
}
/**********************************************************************************/
/******************     Función que limpia los espacios          ******************/
/******************  en blanco del comienzo y fin de la cadena.	 ******************/
/**********************************************************************************/

function trim(theFormtxtDsNombre) {
    if(theFormtxtDsNombre.value)
	{
		var x = theFormtxtDsNombre.value;
		theFormtxtDsNombre.value = (x.replace(/^\s+/,'')).replace(/\s+$/,'');
	}
}
/*********************************************************************************/
/******************       Función que valida que el           ********************/
/******************        dato sea sólo letras               ********************/
/*********************************************************************************/
function validaLetras(theFormtxtNombre)
{  var checkOK = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚabcdefghijklmnñopqrstuvwxyzáéíóú ";
  var checkStr = theFormtxtNombre.value;

  var allValid = true;

  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);

    for (j = 0;  j < checkOK.length;  j++){     if (ch == checkOK.charAt(j)) break;    }    if (j == checkOK.length)
    {
      allValid = false;

      break;
    }
  }
  if (!allValid)
  {
    return (false);
  }
  return (true);
}
/*
function validaNumero2(theFormtxtNombre)
{
  var checkOK = "0123456789 \t\r\n\f";
  var checkStr = theFormtxtNombre;
  var allValid = true;
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
  }
  if (!allValid)
  {
    return (false);
  }
  return (true);
}*/
/************************************************************************/
/************    Función que comprueba si es un entero     **************/
/************************************************************************/
function fEsEntero(oNumero)
{
 	var sCadenaEnteros = "0123456789";
     	var bEsEntero = true;
     	var sCaracter = "";     	
     	
	if (oNumero.value=="")
	{
		bEsEntero = false;
	}
		
     	for (k = 0;  k < oNumero.value.length;  k++)
     	{
       		sCaracter = oNumero.value.charAt(k);
       		for (j = 0;  j < sCadenaEnteros.length;  j++)
		{
         		if (sCaracter == sCadenaEnteros.charAt(j))
           			break;
		}// fin for

       		if (j == sCadenaEnteros.length)
       		{
         		bEsEntero = false;
         		break;
       		}// fin if
     	}// fin for
	return (bEsEntero);
}// fin fEsEntero
/************************************************************************/
/********* Función que comprueba si es un real con un punto *************/
/************************************************************************/
function fEsReal(oNumero)
{
	var sCadenaEnteros = "0123456789";
	var sCaracter = "";
     	var bEsReal = true;
     	var iNumPuntoDecimales = 0;

	if (oNumero.value == "")
	{
		bEsReal = false;		
	}
			
     	for (k = 0;  k < oNumero.value.length;  k++)
     	{
       		sCaracter = oNumero.value.charAt(k);
		if (sCaracter == ".")
		{
			iNumPuntoDecimales = iNumPuntoDecimales + 1;
		}
		else
		{
       			for (j = 0;  j < sCadenaEnteros.length;  j++)
			{
         	  		if (sCaracter == sCadenaEnteros.charAt(j))
					break;
			}// fin for
		}//fin else		
		
       		if (j == sCadenaEnteros.length)
       		{
         		bEsReal = false;
         		break;
       		}// fin if
       		
	     	if (iNumPuntoDecimales>1)
	     	{
         		bEsReal = false;
         		break;
	     	}// fin if
	}//fin for
	return (bEsReal);
}// fin fEsReal
/************************************************************************/
/************ Función que comprueba si una fecha es válida **************/
/************************************************************************/
function fEsFormatoFecha(p_valor) {

	if(!p_valor) p_valor=this.value;
	return /^(\d{2})\/(\d{2})\/(\d{4})$/.test(p_valor);

}

function fEsFecha(p_valor) {
	if(!p_valor) p_valor = (this.value ? this.value : "");
	else p_valor = p_valor.value;
	var l_valido = fEsFormatoFecha(p_valor);
	if (l_valido) {

		var l_fecha = new Date(RegExp.$3, parseFloat(RegExp.$2)-1, RegExp.$1);

		l_valido = (l_fecha.getDate()==RegExp.$1)&&((l_fecha.getMonth()+1)==RegExp.$2)&&(l_fecha.getFullYear()==RegExp.$3)

	}
	return l_valido;

}
/************************************************************************/
/********* Función que comprueba si una fecha es anterior a otra ********/
/************************************************************************/

function fEsAnterior(fecha, fechaReferencia)

{

	Re = /^(\d{2}).+(\d{2}).+(\d{4})$/;

	l_fecha = Re.test(fecha);

	ld_fecha = new Date(RegExp.$3,(RegExp.$2-1),RegExp.$1);

	l_fechaReferencia = Re.test(fechaReferencia);

	ld_fechaR = new Date(RegExp.$3,(RegExp.$2-1),RegExp.$1);

	return (!(ld_fecha > ld_fechaR));

}

/************************************************************************/
/*********           Función que comprueba si un combo           ********/
/*********           tiene algún elemento seleccionado           ********/
/************************************************************************/

function fEsComboSeleccionado(p_combo)

{

	if(!p_combo) p_combo = this;

	var l_indice = p_combo.selectedIndex;

	var l_retorno = (l_indice>-1) && (p_combo.options[l_indice].value!=-1) && (p_combo.options[l_indice].selected);

	return l_retorno;

}

/************************************************************************/
/*********             Función que valida si un texto            ********/
/*********           es compuesto unicamente de espacios         ********/
/************************************************************************/

function fEsTodoEspacio(checkStr) {

	if(!checkStr) checkStr = (this.value ? this.value : "");

	return !(/^\s+$/.test(checkStr));

}

/************************************************************************/
/*********      Función que comprueba si una hora es válida      ********/
/************************************************************************/

function fEsHoraValida(l_valor)

{

	l_retorno = true;

	

	if(l_valor.length==2)

		l_valor+= ":00:00";

	else if(l_valor.length==5)

		l_valor+= ":00";

	Re = /^(\d{2})[\s\.:](\d{2})[\s\.:](\d{2})$/;

	if (l_valor != '') {

		l_retorno = Re.test(l_valor) && (RegExp.$1<24) && (RegExp.$2<61) && (RegExp.$3<61);

	}

	return l_retorno;

}

/************************************************************************/
/****** Función que valida un texto según otro texto de referencia  *****/
/************************************************************************/

function fComprobar(textoAComprobar, textoDeReferencia)

{

	var valido=true;

	for (i = 0; (i < textoAComprobar.length) && (valido); i++)

		valido = (textoDeReferencia.indexOf(textoAComprobar.charAt(i)) > -1);

	return (valido);

}

/************************************************************************/
/****** Función que valida que un campo tiene el formato de moneda  *****/
/************************************************************************/

function fEsMoneda(checkStr)

{

	if(!checkStr) checkStr = (this.value ? this.value : "");

	l_valido = false;

	if((/^\d+$/.test(checkStr))||(/^\d*,\d{1,2}$/.test(checkStr))) {

		l_valido = true;

	} else {

		l_miles = checkStr.split(".");



		l_indice = l_miles.length-1;

		if (l_indice==0) {

			l_valido = (/^\d{1,3}$/.test(l_miles[0]))||(/^\d{1,3},\d{1,2}$/.test(l_miles[0]));

		} else {

			l_valido = (/^\d{3}$/.test(l_miles[l_indice]))||(/^\d{3},\d{1,2}$/.test(l_miles[l_indice]));

			while(((--l_indice)>0)&&(l_valido)) l_valido = /^\d{3}$/.test(l_miles[l_indice--]);

			if (l_valido) l_valido = /^\d{1,3}$/.test(l_miles[0]);

		}

	}

	return l_valido;

}

/************************************************************************/
/******       Función que valida que un campo tiene el formato      *****/
/******           hasta 2 decimales separadas con un punto          *****/
/************************************************************************/

function fEsDigitoPositivoDecimal(checkStr)

{

	if(!checkStr) checkStr = (this.value ? this.value : "");

	l_valido = (/^\d+$/.test(checkStr))||(/^\d*[\,]\d{1,2}$/.test(checkStr))

	return l_valido;

}

/************************************************************************/
/***** Función que valida que un campo tiene el formato de teléfono *****/
/************************************************************************/

function fEsTelefonoValido(checkStr)

{
	if(!checkStr) checkStr = (this.value ? this.value : "");

	return (/^[689]\d{8}$/.test(checkStr));

}
function fEsTelefonoFijoValido(checkStr)

{

	if(!checkStr) checkStr = (this.value ? this.value : "");

	return (/^[9]\d{8}$/.test(checkStr));

}
function fEsTelefonoMovilValido(checkStr)

{

	if(!checkStr) checkStr = (this.value ? this.value : "");

	return (/^[6]\d{8}$/.test(checkStr));

}
//Ejemplo de validación JS llamando a una clase fEsTelefonoValido
function fValidarTelefono(p_telefono)

{

	if(!p_telefono) p_telefono= (this.value ? this.value : "");

	l_valido = fEsTelefonoValido(p_telefono);

	if(!l_valido)

	{

		pintarMensaje("ERROR_TELEFONO_NO_VALIDO");

	}

	if(!l_valido && this.focus && this.type!="hidden")

		this.focus();

	return l_valido;

}

/************************************************************************/
/*****  Función que valida si un  numero es un porcentaje correcto  *****/
/************************************************************************/

function fValidarPorcentage(p_elemento)

{

	l_valido = true

	if(!p_elemento) p_elemento= (this.value ? this.value : "");

	if(fValidarDigitoPositivoDecimal(p_elemento))

	{

		

		var l_x = p_elemento;

		l_x = l_x.replace(/\,/,".")

		if(l_x > 100 || l_x == 0)

		{

			l_valido = false

			pintarMensaje("ERROR_MAYOR_QUE_CIEN");

			

		}

	}else

		l_valido = false

	

	if(!l_valido && this.focus && this.type!="hidden")

			this.focus();

	return l_valido

}
/************************************************************************/
/*****     Función que valida si un texto es una dirrecion eMail    *****/
/************************************************************************/

function fValidarEmail(p_valor)

{
	if(!p_valor) p_valor= (this.value ? this.value : "");	else p_valor = p_valor.value;	l_valido = /^([0-9a-zA-Z]([-.\w]?[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]*\.)+[a-zA-Z]{2,4})+$/.test(p_valor);		return l_valido;
}

/************************************************************************/
/*****  Función que valida los campos obligatorios de un formulario *****/
/************************************************************************/

function fValidarCamposObligatorios(p_alert) 

{

	l_esValidado = true;

	switch(this.type) 

	{

		case "text":
			l_esValidado = this.value != ""; 
			break;

		case "hidden":

			l_esValidado = this.value != ""; 

			break;

		case "textarea":

			l_esValidado = this.value != ""; 

			break;

		case "select-one": 
			l_esValidado = fEsComboSeleccionado(this);
			break;

		case "select-multiple": 			
			l_esValidado = this.length != 0; 
			break;

		case "radio": 
			for(var l_indiceRadio=this.length-1;l_indiceRadio>=0;l_indiceRadio--) 
				this.checked = this.checked || this[l_indiceRadio].checked;
			l_esValidado = this.checked;
			break;

		case "checkbox": 

			l_esValidado = this.checked != -1; 

			break;

	}

	if (!l_esValidado && !p_alert)

	{

		pintarMensajeLibre(getMensaje(25) + this.descripcion + getMensaje(26));

		if(this.type!="hidden")

			this.focus();

	}

	return(l_esValidado);

}

/************************************************************************/
/*****  Función que comprueba el formato de campos de un formulario *****/
/************************************************************************/

function fValidarFormulario(p_formulario, p_campos) {

	if(!p_campos) p_campos = g_campos;

	var l_estado = "";

	if(typeof(g_estado) == "string") l_estado = g_estado;

	else if (g_estado.name) l_estado = g_estado.name;

	for(var i_campo in p_campos) {

	

		if(!p_formulario.elements[i_campo]) {

			pintarMensaje("ERROR_DEPURACION",p_campos[i_campo].descripcion);

			return false;

		}

	

		if(p_campos[i_campo][l_estado]) {

			var l_esInformado = fEsCampoInformado(p_formulario.elements[i_campo]);

			var l_campoFormulario = p_formulario.elements[i_campo];

			if((p_campos[i_campo].obligatorio) && !l_esInformado){

				pintarMensaje("ERROR_CAMPO_OBLIGATORIO",p_campos[i_campo].descripcion);

				if(!l_campoFormulario.disabled) l_campoFormulario.focus();

				return false;

			} else if((p_campos[i_campo].formato) && l_esInformado && (!p_campos[i_campo].formato(l_campoFormulario.value))) {

				pintarMensaje("ERROR_CAMPO_FORMATO",p_campos[i_campo].descripcion);

				if(!l_campoFormulario.disabled) l_campoFormulario.focus();

				return false;				

			} else if((p_campos[i_campo].validacion) && l_esInformado && (!p_campos[i_campo].validacion(l_campoFormulario.value))) {

				if(!l_campoFormulario.disabled) l_campoFormulario.focus();

				return false;

			} else if ((p_campos[i_campo].tipo == "text") && (l_campoFormulario.value.length > p_campos[i_campo].longitud)) {

				pintarMensaje("ERROR_CAMPO_TAMANIO",p_campos[i_campo].descripcion, p_campos[i_campo].longitud);

				if(!l_campoFormulario.disabled) l_campoFormulario.focus();

				return false;

			}

		}

	}

	

	if ((typeof fCruzada) == "function") {

		return fCruzada(p_formulario);

	}



	return true;

}

/************************************************************************/
/*****         Función que comprueba que un valorno es nulo         *****/
/************************************************************************/

function fNoEsNulo(valor)

{
	if(valor==""||valor=="undefined"){
		return false;

	}else{
		return true;
	}
}

/************************************************************************/
/*****     Función que comprueba que un valor es un pormilaje       *****/
/************************************************************************/

function fValidarPormilaje(p_elemento)
{
	l_valido = true
	if(!p_elemento) p_elemento= (this.value ? this.value : "");
	if(fValidarDigitoPositivoDecimal(p_elemento))
	{
		
		var l_x = p_elemento;
		l_x = l_x.replace(/\,/,".")
		if(l_x > 1000 || l_x == 0)
		{
			l_valido = false
			pintarMensaje("ERROR_MAYOR_QUE_MIL");
			
		}
	}else
		l_valido = false
	
	if(!l_valido && this.focus && this.type!="hidden")
			this.focus();
	return l_valido
}

/*****************************************************************************/
/***** Función que comprueba si la tecla pulsada corresponde a un número *****/
/*****************************************************************************/

function bNoEsNumero(event)
{
	var byTecla;
	if((navigator.appName=="Netscape"))
	{
		byTecla = event.which;
		if(byTecla==8) return false;
	}
	else
	{
		byTecla = event.keyCode;
	}
	var digito = String.fromCharCode(byTecla);
	
	if(digito == ' ')
	{
		return true;		
	}		
	
	if ((digito!=0)&&(digito!=1)&&(digito!=2)&&(digito!=3)&&(digito!=4)&&(digito!=5)&&(digito!=6)&&(digito!=7)&&(digito!=8)&&(digito!=9))
	{
		return true;
	}
	
	return false;
}
/*****************************************************************************/
/***** Función que comprueba si la tecla pulsada corresponde a una letra *****/
/*****************************************************************************/

function bEsLetra(event)
{
	var byTecla;
	var checkOK = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz";
	if((navigator.appName=="Netscape"))
	{
		byTecla = event.which;
		if(byTecla==8) return false;
	}
	else
	{
		byTecla = event.keyCode;
	}
	var digito = String.fromCharCode(byTecla);
	
	if(digito == ' ') return false;		
    for (j = 0;  j < checkOK.length;  j++){
	    	if (digito == checkOK.charAt(j)) break;
	}
	if (j==checkOK.length) return true;
	return false;
}
/*****************************************************************************/
/*****       Función que formatea automáticamente una fecha u hora       *****/
/*****************************************************************************/

function formatea(valor,tipo){
	
	
	// Formateo de fechas..
	if(tipo=="f"){
		var fecha = valor.value;
		var dia = "";
		var mes = "";
		
		// Al pulsar en '/' comprobamos que hay dos caracteres para el dia y para el mes y que no hay más de dos en total.
		if(window.event.keyCode==47){
	 	   
		   if(fecha.length==1){
		   	valor.value = '0' + fecha;
		  	
		   }
		   
		   else{
		   	if(fecha.length>2){
		   		if(fecha.length==4){
		   			dia = fecha.substring(0,3);
		   			mes = fecha.substring(3,4);
		   			valor.value = dia + "0" + mes;
		   		}
		   		
		   		if(fecha.length==3){
		   			valor.value  = "" + fecha.substring(0,2);
		   		}
		   		if(fecha.length==6){
		   			valor.value  = "" + fecha.substring(0,5);
		   		}	   		
		   	}
	
		   		
		   }
		   
		   
		}
			
		if((fecha.length==2)&&(window.event.keyCode!=47)){
			valor.value = fecha + "/";
		}
		
		if((fecha.length==5)&&(window.event.keyCode!=47)){
			valor.value = fecha + "/";
		}  
	}
	
	// Formateo de horas
	else{
		var tiempo = valor.value;
		var hora = "";
		var minuto = "";
		
		// Al pulsar en ':' comprobamos que hay dos caracteres para la hora y para el minuto y que no hay más de dos en total.
		if(window.event.keyCode==58){
	 	   
		   if(tiempo.length==1){
		   	valor.value= "0" + tiempo;
		   	
		   }
		   
		   else{
		   	if(tiempo.length>2){
		   		if(tiempo.length==4){
		   			hora   = tiempo.substring(0,3);
		   			minuto = tiempo.substring(3,4);
		   			valor.value = hora + "0" + minuto;
		   		}
		   		
		   		if(tiempo.length==3){
		   			valor.value  = "" + tiempo.substring(0,2);
		   		}
		   			   		
		   	}
	
		   		
		   }
		   
		   
		}
			
		if((tiempo.length==2)&&(window.event.keyCode!=58)){
			valor.value = tiempo + ":";
		}
		  
	}
	
	
}

/*****************************************************************************/
/*****           Función que controla que solo se introduzcan            *****/
/*****              datos numéricos y separadores de tiempos             *****/
/*****************************************************************************/

function bNoEsNumeroTiempos(event,tipo)
{
	var caract;
	if(tipo=="f"){
	  caract = '/';	
	}
	
	else if(tipo=="h"){
	  caract = ':';
	}
	
	var byTecla;
	if((navigator.appName=="Netscape"))
	{
		byTecla = event.which;
		if(byTecla==8) return false;
	}
	else
	{
		byTecla = event.keyCode;
	}
	var digito = String.fromCharCode(byTecla);
	
	
	if ((digito!=caract)&&(digito!=0)&&(digito!=1)&&(digito!=2)&&(digito!=3)&&(digito!=4)&&(digito!=5)&&(digito!=6)&&(digito!=7)&&(digito!=8)&&(digito!=9))
	{
		return true;
	}
	
	return false;
}


/*****************************************************************************/
/*****           Función que controla que en la primera posición         *****/
/*****              no se introduzca un separador de tiempos             *****/
/*****************************************************************************/

function soltarTecla(valor,tipo){
	
	var caract;
	if(tipo=="f"){
	  caract = '/';	
	}
	
	else if(tipo=="h"){
	  caract = ':';
	}
	
	var fecha = eval('document.forms[0].'+valor+'.value');
	if((fecha.length==1)&&(fecha == caract)){
	  eval("document.forms[0]."+valor+".value = ''");
	}
}

/**********************************************************************************/
/***************  Función que cambia el color de una caja de texto ****************/
/**********************************************************************************/
function fijarAtencion(campo){
	campo.style.backgroundColor = '#FFFF80';
}
/**********************************************************************************/
/***************  Función que cambia el color de una caja de texto ****************/
/**********************************************************************************/
function quitarAtencion(myName){
       	myName.style.backgroundColor = '#FFFFFF';
}

/**********************************************************************************/
/***************  Función que quita el color de una caja de texto  ****************/
/**********************************************************************************/
 function ponBlanco(campo){
	campo.style.backgroundColor = '';
}

/********************************************************************************/
/*****************  OBTENER VALOR DE UN RADIO BUTTON   ******************/
/********************************************************************************/
function GetRadioValue( radioObject ) { 

	var value = null;

	// Validate parameter value
	if (radioObject+"" == "undefined" || radioObject == null)
		return null;

	for (var i=0; i < radioObject.length; i++) { 
		if (radioObject[i].checked) { 
			value = radioObject[i].value;
			break;
		} 
	} // end for loop 
	
	return value;
}
function radioIndex( radioObject ){
	for (var i=0; i < radioObject.length; i++) { 
		if (radioObject[i].checked) { 
			break;
		} 
	}
	return i;
}
/********************************************************************************/
/*******************     OBTENER VALOR DE UNA SELECT      ********************/
/********************************************************************************/
function GetSelectValue( selectObject ) {
	// Validate parameter value
	if (selectObject == null)
		return null;
	
	if (selectObject.selectedIndex+"" == "undefined" || 
				selectObject.selectedIndex == null ||
				selectObject.selectedIndex < 0)
		return null;

	return selectObject.options[selectObject.selectedIndex].value;
} 

/********************************************************************/
/*********** FUNCION QUE VALIDA EL CODIGO POSTAL         ************/
/********************************************************************/
function validaNoNulo(theFormtxtNombre){
	if (theFormtxtNombre.value == "") {
		return (false);
	}//fin del if
 	else{
		return(true);
	}
}//fin del validaNoNulo
function validaCodigoPostal(txtForm){
	var nombreProvincia;
	var correcto=false;	if (validaNoNulo(txtForm)){		
		if (fEsEntero(txtForm)){
			if ( (txtForm.value.length>5)  ||  (txtForm.value.length<5)   ){							correcto=false;
			}else{				if ( (txtForm.value.substring(0,2) >0 )  &&  (txtForm.value.substring(0,2) < 53) ){					correcto=true;
				}else{
					if (  (txtForm.value.substring(0,2)>52)  || (txtForm.value.substring(0,2)<1)  ){						correcto=false;		
					}
				}
			}
		}
	}
	return correcto;
}

/********************************************************************/
/***********    FUNCION QUE PASA DE CAMPO A CAMPO        ************/
/********************************************************************/
/*Esta función se encarga de pasar de un campo a otro, cuando llega al límite del tamaño del primero*/

function chkCampo(rCampoA, rCampoS, maxLon) {
    if (rCampoA.value.length == maxLon) rCampoS.focus();
    else rCampoA.focus();
}

/*********************************************************************/
/***********    FUNCION QUE PASA CORRECTAMENTE UNA URL    ************/
/*********************************************************************/
/*
Esta función se encarga de pasar una URL en JS en la que desaparecen los simbolos raros.
Que pueden perjudicar en que la URL sea correcta.
*/
function URLEncode(strIn) {

	var len = strIn.length;
	var i,ch;
	
	var strOut = "";
	for (i=0; i<len; i++) {
		ch = strIn.charAt(i);
		
		if (ch == " ") {
			ch = '+';
		} else if (ch == "&") {
			ch = "%26";
		} else if (ch == "á") {
			ch = "%E1";
		} else if (ch == "é") {
			ch = "%E9";
		} else if (ch == "í") {
			ch = "%ED";
		} else if (ch == "ó") {
			ch = "%F3";
		} else if (ch == "ú") {
			ch = "%FA";
		} else if (ch == "Á") {
			ch = "%C1";
		} else if (ch == "É") {
			ch = "%C9";
		} else if (ch == "Í") {
				ch = "%CD";
		} else if (ch == "Ó") {
			ch = "%D3";
		} else if (ch == "Ú") {
			ch = "%DA";
		} else if (ch == "ñ") {
			ch = "%F1";
		} else if (ch == "Ñ") {
			ch = "%D1";
		} else if (ch == "/") {
			ch = "%2F";
		} else if (ch == "\\") {
			ch = "";
		} else if (ch == "=") {
			ch = "%3D";
		} else if (ch == ":") {
			ch = "%3A";
		} else if (ch == ";") {
			ch = "%3B";
		} else if (ch == "'") {
			ch = "%27";
		} else if (ch == "\"") {
			ch = "%22";
		}
		
		strOut += ch;
	}
	
	return strOut;

}

/********************************************************************************/
/*****************    OBTENER EL ÍNDICE DE UN RADIO BUTTON     ******************/
/********************************************************************************/
function GetRadioIndex( radioObject ) { 
	for (var i=0; i < radioObject.length; i++) { 
		if (radioObject[i].checked) { 
			break;
		} 
	}
	return i;
}
/********************************************************************************/
/**************** CAMBIA UN STRING POR OTRO DENTRO DE UNA CADENA ****************/
/********************************************************************************/
function replace(cadena,text,by) {
    var strLength = cadena.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return cadena;

    var i = cadena.indexOf(text);
    if ((!i) && (text != cadena.substring(0,txtLength))) return cadena;
    if (i == -1) return cadena;

    var newstr = cadena.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(cadena.substring(i+txtLength,strLength),text,by);

    return newstr;
}
/********************************************************************************/
/*****************       OBTIENE LA EDAD DE UNA PERSONA        ******************/
/********************************************************************************/
function getAge(dateString,dateType) {
 /*
    function getAge
    parameters: dateString dateType
    returns: boolean

    dateString is a date passed as a string in the following
    formats:

    type 1 : 19970529
    type 2 : 970529
    type 3 : 29/05/1997
    type 4 : 29/05/97

    dateType is a numeric integer from 1 to 4, representing
    the type of dateString passed, as defined above.

    Returns string containing the age in years, months and days
    in the format yyy years mm months dd days.
    Returns empty string if dateType is not one of the expected
    values.
 */
     var now = new Date();
     var today = new Date(now.getYear(),now.getMonth(),now.getDate());

     var yearNow = now.getYear();

     if (yearNow.toString().length==4){
		yearNow=yearNow-1900;
     }

     var monthNow = now.getMonth();

     var dateNow = now.getDate();


     if (dateType == 1)
         var dob = new Date(dateString.substring(0,4),
                             dateString.substring(4,6)-1,
                             dateString.substring(6,8));
     else if (dateType == 2)
         var dob = new Date(dateString.substring(0,2),
                             dateString.substring(2,4)-1,
                             dateString.substring(4,6));
     else if (dateType == 3)
         var dob = new Date(dateString.substring(6,10),
                             dateString.substring(3,5)-1,
                             dateString.substring(0,2));
     else if (dateType == 4)
         var dob = new Date(dateString.substring(6,8),
                             dateString.substring(3,5)-1,
                             dateString.substring(0,2));
     else
         return '';

     var yearDob = dob.getYear();

     var monthDob = dob.getMonth();

     var dateDob = dob.getDate();

     yearAge = yearNow - yearDob;
     if (monthNow >= monthDob)
         var monthAge = monthNow - monthDob;
     else {
         yearAge--;
         var monthAge = 12 + monthNow -monthDob;
     }

     if (dateNow >= dateDob)
         var dateAge = dateNow - dateDob;
     else {
         monthAge--;
         var dateAge = 31 + dateNow - dateDob;

         if (monthAge < 0) {
             monthAge = 11;

             yearAge--; 
         }
     }
     return yearAge;
}
/********************************************************************************/
/*****************        AÑADE CEROS POR LA IZQUIERDA         ******************/
/********************************************************************************/
function setCeros(campo,tamano){
	valor = campo.value;
	if (campo.value.length<tamano){
		for (var i=campo.value.length;i<tamano;i++){
			valor = "0"+valor;
		}
	campo.value = valor;
	}
}
function rellenaCeros(campo,tamano){
	valor = campo;
	if (campo.length<tamano){
		for (var i=campo.length;i<tamano;i++){
			valor = "0"+valor;
		}
	}
	return valor;
}
// *********************************************************************
//	Nombre: FORMATEA
//	Función que formatea automáticamente una fecha u hora
//	
//	Entrada : el campo y el tipo
//	Salida :  
// *********************************************************************
function formatea(valor,tipo){
	
	
	// Formateo de fechas..
	if(tipo=="f"){
		var fecha = valor.value;
		var dia = "";
		var mes = "";
		
		// Al pulsar en '/' comprobamos que hay dos caracteres para el dia y para el mes y que no hay más de dos en total.
		if(window.event.keyCode==47){
	 	   
		   if(fecha.length==1){
		   	valor.value = '0' + fecha;
		  	
		   }
		   
		   else{
		   	if(fecha.length>2){
		   		if(fecha.length==4){
		   			dia = fecha.substring(0,3);
		   			mes = fecha.substring(3,4);
		   			valor.value = dia + "0" + mes;
		   		}
		   		
		   		if(fecha.length==3){
		   			valor.value  = "" + fecha.substring(0,2);
		   		}
		   		if(fecha.length==6){
		   			valor.value  = "" + fecha.substring(0,5);
		   		}	   		
		   	}
	
		   		
		   }
		   
		   
		}
			
		if((fecha.length==2)&&(window.event.keyCode!=47)){
			valor.value = fecha + "/";
		}
		
		if((fecha.length==5)&&(window.event.keyCode!=47)){
			valor.value = fecha + "/";
		}  
	}
	
	// Formateo de horas
	else{
		var tiempo = valor.value;
		var hora = "";
		var minuto = "";
		
		// Al pulsar en ':' comprobamos que hay dos caracteres para la hora y para el minuto y que no hay más de dos en total.
		if(window.event.keyCode==58){
	 	   
		   if(tiempo.length==1){
		   	valor.value= "0" + tiempo;
		   	
		   }
		   
		   else{
		   	if(tiempo.length>2){
		   		if(tiempo.length==4){
		   			hora   = tiempo.substring(0,3);
		   			minuto = tiempo.substring(3,4);
		   			valor.value = hora + "0" + minuto;
		   		}
		   		
		   		if(tiempo.length==3){
		   			valor.value  = "" + tiempo.substring(0,2);
		   		}
		   			   		
		   	}
	
		   		
		   }
		   
		   
		}
			
		if((tiempo.length==2)&&(window.event.keyCode!=58)){
			valor.value = tiempo + ":";
		}
		  
	}
	
	
}


// *********************************************************************
//	Nombre: bNoEsNumeroTiempos
//	Función que controla que solo se introduzcan datos numéricos y separadores de tiempos
//	
//	Entrada : el event y el tipo
//	Salida :  
// *********************************************************************

function bNoEsNumeroTiempos(event,tipo)
{
	var caract;
	if(tipo=="f"){
	  caract = '/';	
	}
	
	else if(tipo=="h"){
	  caract = ':';
	}
	
	var byTecla;
	if((navigator.appName=="Netscape"))
	{
		byTecla = event.which;
		if(byTecla==8) return false;
	}
	else
	{
		byTecla = event.keyCode;
	}
	var digito = String.fromCharCode(byTecla);
	
	
	if ((digito!=caract)&&(digito!=0)&&(digito!=1)&&(digito!=2)&&(digito!=3)&&(digito!=4)&&(digito!=5)&&(digito!=6)&&(digito!=7)&&(digito!=8)&&(digito!=9))
	{
		return true;
	}
	
	return false;
}

// *********************************************************************
//	Nombre: soltarTecla
//	Función que controla que en la primera posición no se introduzca un separador de tiempos
//	
//	Entrada : el valor y el tipo
//	Salida :  
// *********************************************************************
function soltarTecla(valor,tipo){
	
	var caract;
	if(tipo=="f"){
	  caract = '/';	
	}
	
	else if(tipo=="h"){
	  caract = ':';
	}
	
	var fecha = eval('document.forms[0].'+valor+'.value');
	if((fecha.length==1)&&(fecha == caract)){
	  eval("document.forms[0]."+valor+".value = ''");
	}
}
//funcion qu muestra o oculta un objeto de la pantalla mediante un id
function visi(nr)
{
	if (document.layers)
	{
		current = (document.layers[nr].display == 'none') ? 'block' : 'none';
		document.layers[nr].display = current;
	}
	else if (document.all)
	{
		current = (document.all[nr].style.display == 'none') ? 'block' : 'none';
		document.all[nr].style.display = current;
	}
	else if (document.getElementById)
	{
		vista = (document.getElementById(nr).style.display == 'none') ? 'block' : 'none';
		document.getElementById(nr).style.display = vista;
	}
}