// Definimos la clase TDia_Reserva => Datos necesarios por cada día de reserva
function TDia_Reserva(id_habitacion,id_habitacion_base,casa_completa,Dia,Mes,Ano,Temporada)
{
  this.id_habitacion=id_habitacion;
  this.id_habitacion_base=id_habitacion_base;
  this.casa_completa=casa_completa;
  this.Dia=Dia;
  this.Mes=Mes;
  this.Ano=Ano;
  this.Temporada=Temporada;
}



// Definimos los métodos de la clase TDatos_Reserva
function Aniadir_Reserva(id_habitacion,id_habitacion_base,casa_completa,Dia,Mes,Ano,Temporada)
{
  this.Lista[this.Lista.length]=new TDia_Reserva(id_habitacion,id_habitacion_base,casa_completa,Dia,Mes,Ano,Temporada);
}

function Mostrar()
{
  salida="";
  for (i=0;i<this.Lista.length;i++)
  {
    if (this.Lista[i]!=null)
	  salida=salida + "id_habitacion: "+this.Lista[i].id_habitacion + " - casa_completa: "+ this.Lista[i].casa_completa +" - Temporada: "+this.Lista[i].Temporada+" / "+ this.Lista[i].Dia + "-" + this.Lista[i].Mes + "-" + this.Lista[i].Ano + " \n ";
  }
  alert(salida);
}

function Dia_Completo(Dia,Mes,Ano)
{
  n_habitaciones=Lista_Habitaciones.TLista_NHabitaciones();
  cuantos=0;
  completo=false;
  
  // Control del bloqueo para operadores
  if(this.DiaBloquedao(Dia,Mes,Ano))
  	return true;
  
  if ((this.Lista.length!=null) && (this.Lista.length>0))
  {
    for (i=0;i<this.Lista.length;i++)
    {
      if (this.Lista[i]!=null)
	  {
//		    alert (this.Lista[i].Dia+'=='+Dia+'  /  '+this.Lista[i].Mes+'=='+Mes+'  /  '+this.Lista[i].Ano+'=='+Ano);
        if ((this.Lista[i].Dia==Dia) &&(this.Lista[i].Mes==Mes) &&(this.Lista[i].Ano==Ano) )
	    {
	      if (this.Lista[i].casa_completa)
		    completo=true;
		  cuantos++;
	    }
	  } // Si no es nullo
    }
	//alert(Dia+"-"+Mes+"-"+Ano+" / cuantos:"+cuantos+" - Hab:"+n_habitaciones)
    if (!completo)
	{
		if(n_habitaciones==0) n_habitaciones=1;
	  completo=(cuantos>=n_habitaciones);
	  //alert(cuantos+'>='+n_habitaciones);
	}
  }	
  return (completo);
}

// Comprueba si el dia en cuestión está bloqueado para el operador
function DiaBloquedao(Dia,Mes,Ano)
{
	ind=0;
	enc=false;
	if(Dia<10) Dia='0'+Dia;
	if(Mes<10) Mes='0'+Mes;

	while((!enc) && (ind<Lista_Bloqueo.length))
	{
		//alert(Lista_Bloqueo[ind] +' / '+Dia+'-'+Mes+'-'+Ano);
		if(Lista_Bloqueo[ind]==Dia+'-'+Mes+'-'+Ano)
			enc=true;
		ind++;
	}

	return enc;
}

function Dia_SemiCompleto(Dia,Mes,Ano)
{
  n_habitaciones=Lista_Habitaciones.TLista_NHabitaciones();
  cuantos=0;
  completo=false;
  semicompleto=false;
  
  if ((this.Lista.length!=null) && (this.Lista.length>0))
  {
    for (i=0;i<this.Lista.length;i++)
    {
      if (this.Lista[i]!=null)
	  {
//		    alert (this.Lista[i].Dia+'=='+Dia+'  /  '+this.Lista[i].Mes+'=='+Mes+'  /  '+this.Lista[i].Ano+'=='+Ano);
        if ((this.Lista[i].Dia==Dia) &&(this.Lista[i].Mes==Mes) &&(this.Lista[i].Ano==Ano) )
	    {
	      if (this.Lista[i].casa_completa)
		    completo=true;
		  cuantos++;
	    }
	  } // Si no es nullo
    }
	//alert(Dia+"-"+Mes+"-"+Ano+" / cuantos:"+cuantos+" - Hab:"+n_habitaciones)
    if (!completo)
	{
		if(n_habitaciones==0) n_habitaciones=1;
	  semicompleto=((cuantos<n_habitaciones) && (cuantos>0));
	  //alert(cuantos+'>='+n_habitaciones);
	}
  }	
  return (semicompleto);
}

function Dame_Habitaciones_Ocupadas(Lista_Ocupacion,Dia,Mes,Ano)
{
	//alert('si:'+this.Lista.length);
    for (iO=0;iO<this.Lista.length;iO++)
	{
      if (this.Lista[iO]!=null)
        if ((this.Lista[iO].Dia==Dia) &&(this.Lista[iO].Mes==Mes) &&(this.Lista[iO].Ano==Ano) )
		{
		  Lista_Ocupacion[Lista_Ocupacion.length]=this.Lista[iO].id_habitacion_base;
		  //alert(this.Lista[iO].id_habitacion_base);
		}
	} // Del for
}  

function Dame_Tarifa(Dia,Mes,Ano)
{
  color=1;
    for (iO=0;iO<this.Lista.length;iO++)
    {
      if (this.Lista[iO]!=null)
        if ((this.Lista[iO].Dia==Dia) &&(this.Lista[iO].Mes==Mes) &&(this.Lista[iO].Ano==Ano) )
	    {
		  color=this.Lista[iO].Temporada;
		}
	}
  return (color);
}  

function Dame_Todas_Ocupadas()
{
  resulta=new Array();  
    for (iO=0;iO<this.Lista.length;iO++)
      if (this.Lista[iO]!=null)
		resulta[resulta.length]=this.Lista[iO].id_habitacion_base;
  return (resulta);
}

function Esta_Ocupada(id_base)
{
  enc=false;
  id=0;
  while((id<Lista_Seleccion.Lista.length) && (!enc))
  {
    ib=0;
    while((ib<this.Lista.length) && (!enc))
    {
	  if (Lista_Seleccion.Lista[id]!=null)
	  {
        enc=((Lista_Seleccion.Lista[id].Dia==this.Lista[ib].Dia)
	  	 && (Lista_Seleccion.Lista[id].Mes==this.Lista[ib].Mes)
	  	 && (Lista_Seleccion.Lista[id].Ano==this.Lista[ib].Ano)
	  	 && (this.Lista[ib].id_habitacion_base==id_base));
	  }
      ib++;
    }
	id++;
  }
  return (enc);
}

// Definimos la clase TDatos_Reserva => Contiene los días con reserva
/////////////////////////////////////////////////////////////////////
function TDatos_Reserva()
{
  this.Lista=new Array();
  this.Aniadir_Reserva=Aniadir_Reserva;
  this.Mostrar=Mostrar;
  this.Dia_Completo=Dia_Completo;
  this.Dia_SemiCompleto=Dia_SemiCompleto;
  this.Dame_Habitaciones_Ocupadas=Dame_Habitaciones_Ocupadas;
  this.Dame_Todas_Ocupadas=Dame_Todas_Ocupadas;
  this.Dame_Tarifa=Dame_Tarifa;
  this.Esta_Ocupada=Esta_Ocupada;
  this.DiaBloquedao=DiaBloquedao;
}
  



