//********************************************************************************************
//*  NOMBRE:     	getRadioValue
//*  DESCRIPCIÓN: Devolvemos el valor del atributo "value" del radio button pasado como parametro
//*  ENTRADA(S):  Radio Button del cual se quiere recuperar el valor para su atributo "value"
//*                               
//*  SALIDA(S):   Valor que contenia el atributo "value" del radio button o null (si no está seleccionado nada)
//*			
//*  AUTOR:      
//*  FECHA:       
//*  FECHA MODIFICACIÓN:
//*  REVISIONES:
//********************************************************************************************
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;
			return value;
		}
	} // end for loop

	if (radioObject.value !="" && radioObject.checked)
		value = radioObject.value;

	return value;
}


//********************************************************************************************
//*  NOMBRE:		Trim
//*  DESCRIPCIÓN:	Pasada una cadena de texto eleminamos los espacios en blancos que pueda
//*					tener al principio y al final de la misma
//*
//*  ENTRADA(S):	Cadena de texto a la que hay que quitar los espacios en blanco
//*                               
//*  SALIDA(S):		Devuelve la cadena de texto original sin los espacios en blanco al principio
//*					y al final
//*
//*  AUTOR:			
//*  FECHA:			
//*  REVISIONES:
//********************************************************************************************
function Trim(Texto)
{
	// Quitamos los espacios al principio y al final de la cadena
	return(LTrim(RTrim(Texto)))
}


//********************************************************************************************
//*  NOMBRE:		LTrim
//*  DESCRIPCIÓN:	Pasada una cadena de texto eleminamos los espacios en blancos que pueda
//*					tener al principio de la misma
//*
//*  ENTRADA(S):	Cadena de texto a la que hay que quitar los espacios en blanco
//*                               
//*  SALIDA(S):		Devuelve la cadena de texto original sin los espacios en blanco al principio
//*
//*  AUTOR:			
//*  FECHA:			
//*  REVISIONES:
//********************************************************************************************
function LTrim(Texto)
{
	var EspaciosInicio; // Expresion regular que elimina los espacios en blanco al principio
						// de una cadena de texto.

	EspaciosInicio = /^ */

	// Quitamos los espacios
	return(Texto.replace(EspaciosInicio, ""))
}


//********************************************************************************************
//*  NOMBRE:		RTrim
//*  DESCRIPCIÓN:	Pasada una cadena de texto eleminamos los espacios en blancos que pueda
//*					tener al final de la misma
//*
//*  ENTRADA(S):	Cadena de texto a la que hay que quitar los espacios en blanco
//*                               
//*  SALIDA(S):		Devuelve la cadena de texto original sin los espacios en blanco al final
//*
//*  AUTOR:			
//*  FECHA:			
//*  REVISIONES:
//********************************************************************************************
function RTrim(Texto)
{
	var EspaciosFin; // Expresion regular que elimina los espacios en blanco al final 
					 //	de una cadena de texto.

	EspaciosFin = / +$/

	// Quitamos los espacios
	return(Texto.replace(EspaciosFin, ""))
}


//********************************************************************************************
//*  NOMBRE:     isNumeric
//*  DESCRIPCIÓN: Esta función me asegura, si me devuelve TRUE, que el valor del campo es un 
//*				  numérico.
//*  ENTRADA(S):  nombreCampo: nombre que identifica al campo que contiene el dato a validar 
//*                               
//*  SALIDA(S):   true-->el campo contiene un numérico
//*		  		  false-->el campo no contiene un numérico
//*  AUTOR:      
//*  FECHA:       
//*  REVISIONES:
//********************************************************************************************

function isNumeric(nombreCampo)
{       
  
  var num=0;
  var numeros=new Array("1","2","3","4","5","6","7","8","9","0")


   for(k=0;k<=nombreCampo.length;k++)
   {
      for(m=0;m<=numeros.length-1;m++)
      {
         if(nombreCampo.charAt(k) == numeros[m])
              num++;   
       }
   }
   if(num!=0 && num==nombreCampo.length)
     return true
   else
     return false;
}       


//********************************************************************************************
//*  NOMBRE:     isEmail
//*  DESCRIPCIÓN: Esta función nos dice si una dirección de correo es correcta
//*				  
//*  ENTRADA(S):  email:valor del campo Mail
//*              
//*                
//*  SALIDA(S):   true-->el campo es correcto
//*		  		  false-->el campo es incorrecto
//*  AUTOR:      
//*  FECHA:       
//*  REVISIONES:
//********************************************************************************************

function isEmail (email) {


   invalidChars = " /:,;"

   if (email == "")
   {
      return false
   }
   
   for (i=0; i<invalidChars.length; i++)
   {
      badChar = invalidChars.charAt(i)
      if (email.indexOf(badChar,0) > -1)
      {
         return false
      }
   }
   atPos = email.indexOf("@",1)
   if (atPos == -1) { return false }

   if (email.indexOf("@",atPos+1) > -1) { return false }

   periodPos = email.indexOf(".",atPos)
   if (periodPos == -1) { return false }

   if (periodPos+3 > email.length) { return false }
   
   atPos = email.indexOf("@.",1)
   if (atPos > -1) { return false }
   
   atPos = email.indexOf(".@",1)
   if (atPos > -1) { return false }
   
   atPos = email.indexOf("..",1)
   if (atPos > -1) { return false }
   
   //punto al principio
   badChar = email.charAt(0)
   if (badChar.indexOf('.',0) > -1)
   {  
   	return false   
   }
   
   //punto al final
   badChar = email.charAt(email.length-1)
   if (badChar.indexOf('.',0) > -1)
   {  
   	return false 
   }
   
   //repetimos algunas validaciones
   if (email.indexOf('@',0)==-1 || email.indexOf(';',0)!=-1
		|| email.indexOf(' ',0)!=-1 || email.indexOf('/',0)!=-1
		|| email.indexOf(';',0)!=-1 || email.indexOf('<',0)!=-1
		|| email.indexOf('>',0)!=-1 || email.indexOf('*',0)!=-1
		|| email.indexOf('|',0)!=-1 || email.indexOf('`',0)!=-1
		|| email.indexOf('&',0)!=-1 || email.indexOf('$',0)!=-1
		|| email.indexOf('!',0)!=-1 || email.indexOf('"',0)!=-1
		|| email.indexOf(':',0)!=-1) {
			return false
	}

   return true
}


//********************************************************************************************
//*  
//*  DESCRIPCIÓN: A continuación se incluyen varios de validación de la pantalla
//*				  
//*
//********************************************************************************************
 
function TamanioArray(n){
        this.length=n;
        return this;
}
//************************************
function CargarDatos(){

        inicio=document.Reserva.AnioInicio.value;
        fin=y;
        EsBisiesto(AnioActual)// vale para las dos fechas

        CargarDias("I",DiasMes[MesActual-1]);
        CargarMeses("I");
        
        if (DiaActualF>DiasMes[MesActual-1]){
        		DiaActualF=1;
        		MesActualF=MesActualF+1;
        		if (MesActualF>12){
        			MesActualF=1;
        			AnioActualF=y+1;
        			fin=y+1
        		}
        }
        
        CargarDias("F",DiasMes[MesActualF-1]);
        CargarMeses("F");
        CargarAnio();

        setFecha("I");
        setFecha("F");
}
//************************************

function CargarDias(Op,Num){
       
        for (i=0;i<(Num);i++){
                if (Op=="I") // modificar los dias de inicio
                        document.Reserva.Dias.options[i]=new Option(i+1,i,false,false);
                else
                        document.Reserva.DiasF.options[i]=new Option(i+1,i,false,false);
        }
}	

//************************************
function CargarMeses(Op){
                      
        for (i=0;i<12;i++){
                if (Op=="I") // modificar los meses de inicio
                        document.Reserva.Meses.options[i]=new Option(NombreMes[i],NombreMes[i],false,false);
                else
                        document.Reserva.MesesF.options[i]=new Option(NombreMes[i],NombreMes[i],false,false);
        }
}
//************************************
function CargarAnio(){
	if ((fin-inicio)<1)
		fin=fin+1;
	for (i=inicio;i<=fin;i++){//fin
        	document.Reserva.Anio.options[i-inicio]=new Option(i,i);
         document.Reserva.AnioF.options[i-inicio]=new Option(i,i);
        }
}
//************************************

function EsBisiesto(anyo){
        if (((anyo % 4)==0) && ((anyo % 100)!=0) || ((anyo % 400)==0))
                DiasMes[1]=29;
        else
                DiasMes[1]=28;
}
//************************************
function setFecha(Op){
        if (Op=="I"){
                document.Reserva.Dias.selectedIndex=DiaActual-1;
                document.Reserva.Meses.selectedIndex=MesActual-1;
                if ((AnioActual>=inicio)&&(AnioActual<=fin))
                	document.Reserva.Anio.selectedIndex=AnioActual-inicio;
                else{
                	document.Reserva.Anio.selectedIndex=0;
                	AnioActual=document.Reserva.Anio.options[0].value;
                }
        }
        else{
                document.Reserva.DiasF.selectedIndex=DiaActualF-1;
                document.Reserva.MesesF.selectedIndex=MesActualF-1;
                if ((AnioActualF>=inicio)&&(AnioActualF<=fin))
                	document.Reserva.AnioF.selectedIndex=AnioActualF-inicio;
                else{
                	document.Reserva.AnioF.selectedIndex=0;
                	AnioActualF=document.Reserva.AnioF.options[0].value;
                }
        }
}
//************************************
function ActualizarDias(Op){
        for (i=0;i<5;i++){
                if (Op=="I")
                        document.Reserva.Dias.options[i] = null;
                else
                        document.Reserva.DiasF.options[i] = null;
        }
        if (Op=="I")
                CargarDias("I",DiasMes[MesActual-1]);
        else
                CargarDias("F",DiasMes[MesActualF-1]);
}
//************************************
function ActualizarUltimoDia(Op){
        if (Op=="I"){
		   	    if (DiaActual>=document.Reserva.Dias.length)
      	          DiaActual=document.Reserva.Dias.length;
                document.Reserva.Dias.selectedIndex=DiaActual-1;
        }
        else{
                if (DiaActualF>=document.Reserva.DiasF.length)
                        DiaActualF=document.Reserva.DiasF.length;
                document.Reserva.DiasF.selectedIndex=DiaActualF-1;
        }
}
//************************************
function ValidarDias(Op){
	
	if (Op=="I")
                	DiaActual=document.Reserva.Dias.selectedIndex+1;
   else
                	DiaActualF=document.Reserva.DiasF.selectedIndex+1;

}
//************************************
function ValidarMeses(Op){
	     if (Op=="I"){
                	MesActual=document.Reserva.Meses.selectedIndex+1;
                	EsBisiesto(AnioActual);
                	ActualizarDias("I");
                	ActualizarUltimoDia("I");
        }
        else{
	                MesActualF=document.Reserva.MesesF.selectedIndex+1;
	                EsBisiesto(AnioActualF);
	                ActualizarDias("F");
	                ActualizarUltimoDia("F");
        }
}
//************************************
function ValidarAnio(Op,valor){
        if (Op=="I"){
                AnioActual=document.Reserva.Anio.options[valor].value;
                if (MesActual==2){
                        EsBisiesto(AnioActual);
                        ActualizarDias("I");
                        ActualizarUltimoDia("I");
                }
        }
        else{
                AnioActualF=document.Reserva.AnioF.options[valor].value;
                if (MesActualF==2){
                        EsBisiesto(AnioActualF);
                        ActualizarDias("F");
                        ActualizarUltimoDia("F");
                }
        }
}
//************************************





