// Definición de la clase TDia_Seleccion
////////////////////////////////////////
  function TDia_Seleccion(Dia,Mes,Ano)
  {
    this.Dia=Dia;
    this.Mes=Mes;
	this.Ano=Ano;
  }
  

//*********************************************************


  function Buscar_Dia(Dia,Mes,Ano)
  // Devuelve la posición en la Lista del día en cuestión
  // Si no existe devuelve -1
  {
    i=0;
	encontrado=-1;
    while ((i<this.Lista.length) && (encontrado==-1))
	{
	  if (this.Lista[i]!=null)
	    if ((this.Lista[i].Dia==Dia) && (this.Lista[i].Mes==Mes) && (this.Lista[i].Ano==Ano))
	      encontrado=i;
	  i++;
	}	
	return (encontrado);
  }
  
  function Prepara_Dia(Dia,Mes,Ano)
  // Si el día no está en la lista lo añade
  // Si está lo elimina (Se iguala a null)
  {
    posicion=this.Buscar_Dia(Dia,Mes,Ano);
    if (posicion==-1) // No está
	{
	  this.Lista[this.Lista.length]=new TDia_Seleccion(Dia,Mes,Ano);
	}
	else
	{
	  this.Lista[posicion]=null;
	}
  }
  
  function Dame_Primer_Dia(convertir_a_txt)
  // Si el día no está en la lista lo añade
  // Si está lo elimina (Se iguala a null)
  {
    i=0;
	encontrado=-1;
    while ((i<this.Lista.length) && (encontrado==-1))
	{
	  if (this.Lista[i]!=null)
	  {
		  if(encontrado==-1)
		  	encontrado=this.Lista[i];
		  else
		  {
			  if(this.Lista[i].Ano>encontrado.Ano)
			  	encontrado=this.Lista[i];
			  else if((this.Lista[i].Mes>encontrado.Mes) && (this.Lista[i].Ano==encontrado.Ano))
			  	encontrado=this.Lista[i];
			  else if((this.Lista[i].Dia>encontrado.Dia) && (this.Lista[i].Mes==encontrado.Mes) && (this.Lista[i].Ano==encontrado.Ano))
			  	encontrado=this.Lista[i];
		  }
	  }
	  i++;
	}	
	if((convertir_a_txt) && (encontrado!=-1))
		return(encontrado.Dia +'-'+ encontrado.Mes +'-'+ encontrado.Ano);
	else
		return (encontrado);
  }
  
  function Dia_Seleccionado(Dia,Mes,Ano)
  // Devuelve true (>-1) si el día está seleccionado
  {
    resultado=this.Buscar_Dia(Dia,Mes,Ano);
	resultado=(resultado > -1);
    return (resultado);
  }
  
  function Limpiar()
  // Elimina todos los días de la lista
  {
    this.Lista=null;
	this.Lista=new Array();
  }
  
  function Vacia()
  {
    vaci=true;
    for (i=0;i<this.Lista.length;i++)
	{
	  if (this.Lista[i]!=null)
	    vaci=false;
	}
	return (vaci);
  }
  
  function TReserva_NDias()
  {
    cua=0;
    for (ri=0;ri<this.Lista.length;ri++)
      if (this.Lista[ri]!=null)
        cua++;
    return (cua);
  }
  
  function Pinta_Dias_Reservados()
  {
    cua=0;
	resultadin="";
    for (ro=0;ro<this.Lista.length;ro++)
	{
      if (this.Lista[ro]!=null)
	  {
        cua++;
		resultadin+="<input type=\"hidden\" name=\"DR"+(cua-1)+"\" value=\""+this.Lista[ro].Ano+"-"+this.Lista[ro].Mes+"-"+this.Lista[ro].Dia+"\">";
	  }
	}

	resultadin+="<input type=\"hidden\" name=\"ndias_reservados\" value=\""+cua+"\">";
	return(resultadin);
  }
 
  function TReserva_Distinct_Temporada()
  {
    resultar=true;
	
	encont=false;
	il=0;
	var tempo=0;
	var total_largo=this.Lista.length;
	while ((!encont) && (il<total_largo))
	{
	  if (this.Lista[il]!=null)
	  {
	    tempo=Temporadas_Globales.Dame_Tarifa(this.Lista[il].Dia,this.Lista[il].Mes,this.Lista[il].Ano);
		encont=true;
	  }
	  il++;
	}
	
	indl=il;

	while((indl<total_largo) && (resultar))
	{
	  if (this.Lista[indl]!=null)
	    if (parseInt(tempo)!=parseInt(Temporadas_Globales.Dame_Tarifa(this.Lista[indl].Dia,this.Lista[indl].Mes,this.Lista[indl].Ano)))
	      resultar=false;
	  indl++;
	}

	return (resultar);
  }
  
  function Dias_Presupuesto()
  {
	i=0;
	resultado='';
	while(i<this.Lista.length)
	{
	  if (this.Lista[i]!=null)
	  {
		  if(resultado.length==0)
		  	resultado+=this.Lista[i].Ano+'-'+this.Lista[i].Mes+'-'+this.Lista[i].Dia;
		  else
		  	resultado+=';'+this.Lista[i].Ano+'-'+this.Lista[i].Mes+'-'+this.Lista[i].Dia;
	  }
	  i++;
	}	

	return (resultado);
  }

  // Devuelve las fechas separadas por '|' y en formato TimeStamp
  function Dias_PresupuestoV6()
  {
	i=0;
	resultado='';
	while(i<this.Lista.length)
	{
	  if (this.Lista[i]!=null)
	  {
		  miFecha = new Date(this.Lista[i].Ano,this.Lista[i].Mes-1,this.Lista[i].Dia);
		  // Lo dividimos entre 1000 porq Java lo expresa en milisegundos y PHP en segundos
		  if(resultado.length==0)
		  	resultado=(miFecha.getTime() / 1000);
		  else
		  	resultado+='|'+(miFecha.getTime() / 1000);
	  }
	  i++;
	}	

	return (resultado);
  }
  

//	Clase TLista_Seleccion
////////////////////////////////////////////////////////////////
  function TLista_Seleccion()
  {
    this.Lista=new Array();
	this.Buscar_Dia=Buscar_Dia;
	this.Prepara_Dia=Prepara_Dia;
	this.Dia_Seleccionado=Dia_Seleccionado;
	this.Limpiar=Limpiar;
	this.Vacia=Vacia;
    this.TReserva_NDias=TReserva_NDias;  
	this.Pinta_Dias_Reservados=Pinta_Dias_Reservados;
	this.TReserva_Distinct_Temporada=TReserva_Distinct_Temporada;
	this.Dame_Primer_Dia=Dame_Primer_Dia;
	this.Dias_Presupuesto=Dias_Presupuesto;
	this.Dias_PresupuestoV6=Dias_PresupuestoV6;
  }
  
