  ///////////////////// Clase TServicio //////////////////////
  function TServicio(id_serv,tipo,nombre,PB,PM,PA,PE)
  {
    this.id_serv=id_serv; 	// id_servicios / id_ofertas
	this.tipo=tipo;			// 0=>Diario(Ofertas)  1=>Extraordinario(Servicios)
	this.nombre=nombre;
	this.seleccionado=false;
	this.cantidad=0;
	this.Pintar=Pintar;
	this.Precios=new Array();
	this.Precios[1]=PB;
	this.Precios[2]=PM;
	this.Precios[3]=PA;
	this.Precios[4]=PE;
	this.Servicio_PresupuestoV6=Servicio_PresupuestoV6;
  }
  
	/**
	* Devuelve la estructura para cada servicio seleccionado, para pasarlo a confirmación y reservar
	*		Estructura: Separado cada elemento por |
	*			· id_servicio
	*			· tipo
	*			· nombre
	*			· n_dias
	*			· cantidad
	*			· precio
	*/
	function Servicio_PresupuestoV6()
	{
		resulta='';
		
		// Si no está seleccionado devolvemos vacío
		if(!this.seleccionado)
			return resulta;
	
		resulta+=this.id_serv+'|';
		resulta+=this.tipo+'|';
		resulta+=this.nombre+'|';
		if(this.tipo==0)	// Diarios
		{
			_ndias=Lista_Seleccion.TReserva_NDias();
			resulta+=_ndias+'|';
			resulta+=this.cantidad+'|';
			//resulta+=FormatoPrecio(parseFloat(this.Precios[3]) * this.cantidad * _ndias,2,false);
			resulta+=FormatoPrecio(parseFloat(this.Precios[3]),2,false);

		}
		else				// Extra
		{
			resulta+='1|';
			resulta+=this.cantidad+'|';
			//resulta+=FormatoPrecio(parseFloat(this.Precios[3]) * this.cantidad,2,false);
			resulta+=FormatoPrecio(parseFloat(this.Precios[3]),2,false);
		}
	
		return resulta;
	}
  
  function Pintar(Solo_Lectura)
  {
	salida="";  
    /*salida=salida + "<script languaje=\"javascript\">ListaServicios.AddServicio("+ this.id_serv +","+ this.tipo +","+this.nombre+");</script>";*/
    salida=salida + "<tr>";
    salida=salida + "<td width=\"10\"></td>";
    salida=salida + "<td class=\"texto_oscuro2\" height=\"16\">";
	
	salida=salida + "<table width=\"100%\" height=\"16\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
    salida=salida + "<tr>";
    salida=salida + "<td width=\"10\"></td>";
	if(this.tipo==0)
	  nombre_c="DS";
	else
	  nombre_c="ES";
	nombre_c=nombre_c+this.id_serv;
	chequeao="";
	if (this.seleccionado)
	  chequeao=" checked";
	ndias=Lista_Seleccion.TReserva_NDias();

    if (Solo_Lectura)
      salida=salida + "<td width=\"1\"></td>";
	else
      salida=salida + "<td width=\"1\"><input type=\"checkbox\" name=\""+nombre_c+"AC"+this.id_serv+"\" value=\"checkbox\" onClick=\"Globales.ListaServicios.ChequearServicios("+this.id_serv+","+this.tipo+",this.checked); Pinta_Servicios(false);\""+chequeao+"></td>";

    salida=salida + "<td width=\"10\"></td>";
    salida=salida + "<td class=\"texto_oscuro2\">"+this.nombre+"<input type=\"hidden\" name=\""+nombre_c+"NM"+this.id_serv+"\" value=\""+this.nombre+"\"></td>";
    salida=salida + "<td width=\"5\"></td>";
	
	// Precio Base
	salida=salida + "<td width=\"60\" align=\"center\" class=\"precio_servicios\"><input name=\""+nombre_c+"PD"+this.id_serv+"\" id=\""+nombre_c+"PD"+this.id_serv+"\" type=\"text\" value=\""+this.Precios[3]+"\" class=\"precio_servicios\" readonly style=\"width:60px;\"></td>";
	salida=salida + "<td width=\"5\"></td>";
	
	// Cantidad
	if (this.seleccionado)
	{
	  if (Solo_Lectura)
        salida=salida + "<td width=\"30\" align=\"center\" class=\"precio_servicios\"><input id=\""+nombre_c+"CA"+this.id_serv+"\" name=\""+nombre_c+"CA"+this.id_serv+"\" type=\"text\" value=\""+this.cantidad+"\" maxlength=\"3\"class=\"precio_servicios\" readonly style=\"width:30px;\"></td>";	
	  else
        salida=salida + "<td width=\"30\" align=\"center\"><input id=\""+nombre_c+"CA"+this.id_serv+"\" name=\""+nombre_c+"CA"+this.id_serv+"\" type=\"text\" onKeyUp=\"ControlCant("+this.id_serv+","+this.tipo+",this); ControlPrecio('"+ nombre_c +"PD"+this.id_serv+"','"+ nombre_c +"CA"+this.id_serv+"','"+ nombre_c +"ND"+this.id_serv+"','"+ nombre_c +"TI"+this.id_serv+"');\" value=\""+this.cantidad+"\" maxlength=\"3\" class=\"servicio_calendario\"></td>";	
	}
	else
      salida=salida + "<td width=\"30\"></td>";	
    salida=salida + "<td width=\"5\"></td>";
	
	// Número de días
	if (this.seleccionado)
	{
	  if (this.tipo==0) //Diario
	    salida=salida + "<td width=\"40\" align=\"center\" class=\"precio_servicios\"><input name=\""+nombre_c+"ND"+this.id_serv+"\" id=\""+nombre_c+"ND"+this.id_serv+"\" type=\"text\" onKeyUp=\"\" value=\""+ndias+"\" maxlength=\"2\" class=\"precio_servicios\" readonly style=\"width:40px;\"></td>";
	  else  
		salida=salida + "<td width=\"40\" align=\"center\"><input name=\""+nombre_c+"ND"+this.id_serv+"\" id=\""+nombre_c+"ND"+this.id_serv+"\" type=\"hidden\" onKeyUp=\"\" value=\"1\" maxlength=\"2\"></td>";
	}
	else
      salida=salida + "<td width=\"40\"></td>";	
    salida=salida + "<td width=\"5\"></td>";
	
	// Importe Total
	if (this.seleccionado)
	{
	  if (this.tipo==0) //Diario
        salida=salida + "<td width=\"60\" align=\"center\" class=\"precio_servicios\"><input name=\""+nombre_c+"TI"+this.id_serv+"\" id=\""+nombre_c+"TI"+this.id_serv+"\" type=\"text\" onKeyUp=\"\" value=\""+FormatoPrecio(parseFloat(this.Precios[3]) * this.cantidad * ndias,2,false)+"\" class=\"precio_servicios\" readonly style=\"width:60px;\"></td>";
	  else
        salida=salida + "<td width=\"60\" align=\"center\" class=\"precio_servicios\"><input name=\""+nombre_c+"TI"+this.id_serv+"\" id=\""+nombre_c+"TI"+this.id_serv+"\" type=\"text\" onKeyUp=\"\" value=\""+FormatoPrecio(parseFloat(this.Precios[3]) * this.cantidad,2,false)+"\"  class=\"precio_servicios\" readonly style=\"width:60px;\"></td>";
	}
	else
      salida=salida + "<td width=\"60\"></td>";	
    salida=salida + "<td width=\"10\"></td>";
    salida=salida + "</tr>";
    salida=salida + "</table>";

    salida=salida + "</td></tr>";
    salida=salida + "<tr><td height=\"5\" colspan=\"2\"></td></tr>";    

	return(salida);
  }
  
  ///////////////////// Fin Clase TServicio ///////////////////
  
  
  
  ////////////////////// Clase TListaServivios /////////////////////
  function TListaServicios()
  {
    this.Lista=new Array();
	this.ChequearServicios=ChequearServicios;
	this.AddServicio=AddServicio;
	this.ControlCantidad=ControlCantidad;
	this.BuscarServ=BuscarServ;
	this.PintarServicios=PintarServicios;
	this.PintaCabecera=PintaCabecera;
	this.DameImporteTotal=DameImporteTotal;
	this.Datos_PresupuestoV6=Datos_PresupuestoV6;
  }
  
	/**
	* Devuelve la estructura para pasársela a la confirmación para la reserva
	*/
	function Datos_PresupuestoV6()
	{
		__resulta='';
		
		// Servicios diarios
		_control_serv=0;	// controla si montamos diarios=0 o extraordinarios=1
		ipd=0;
		
		//alert('Nº Servicios: '+this.Lista.length);		
		while((ipd<this.Lista.length) && (_control_serv<=1))
		{
			_servicio=this.Lista[ipd];
			_aux='';
			//alert('Control: '+_control_serv+' / Ind: '+ipd+' / Serv: '+_servicio.nombre+' / Tipo:'+_servicio.tipo);
			// Servicios Diarios
			if ((_control_serv==0) && (_servicio.tipo==0) && (_servicio.seleccionado))
				_aux=_servicio.Servicio_PresupuestoV6();
			
			// Servicios Extraordinarios
			if ((_control_serv==1) && (_servicio.tipo==1) && (_servicio.seleccionado))
				_aux=_servicio.Servicio_PresupuestoV6();
				
			//alert('_aux: '+_aux);
			
			// Montamos el elemento con la separación, si la necesita
			if(_aux!='')
			{
				//alert('1-__resulta: '+__resulta);
				if(__resulta=='')	__resulta=_aux;
				else			__resulta+='¨'+_aux;
			}
			
			//alert('__resulta: '+__resulta);
			
			if(ipd==(this.Lista.length-1))
			{
				_control_serv++;
				ipd=-1;
			}
			ipd++;
		} // Del While
		
		return __resulta;
	}
  
  function PintarServicios(Solo_Lectura)
  {	
	// Servicios Diarios
	salidaD="";;
	for (ipd=0;ipd<this.Lista.length;ipd++)
	  if (this.Lista[ipd].tipo==0)
	    if (!((!this.Lista[ipd].seleccionado) && (Solo_Lectura)))
	      salidaD+=this.Lista[ipd].Pintar(Solo_Lectura);
	
	// Servicios Extraordinarios
	salidaE="";
	for (ipe=0;ipe<this.Lista.length;ipe++)
	  if (this.Lista[ipe].tipo==1)
	    if (!((!this.Lista[ipe].seleccionado) && (Solo_Lectura)))
	      salidaE+=this.Lista[ipe].Pintar(Solo_Lectura);

	salida="<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
    if (salidaD!="")
	{
	  salida+=this.PintaCabecera(0,Solo_Lectura);
	  salida+=salidaD+"<tr><td height=\"20\" colspan=\"2\"></td></tr>";;
	}
    if (salidaE!="")
	{
	  salida+=this.PintaCabecera(1,Solo_Lectura);
	  salida+=salidaE;
	}
    salida+="</table>";
	return(salida);
  }
  
  function PintaCabecera(tipo,Solo_Lectura)  // Tipo => 0=Diario / 1=Extraordinario  
  {
    salida="<tr>";
    salida=salida + "<td width=\"10\"></td>";
    salida=salida + "<td>";

	salida=salida + "<table width=\"100%\"  border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
    salida=salida + "<tr>";
    if (Solo_Lectura)
	  salida=salida + "<td width=\"254\" class=\"texto_oscuro_3\">";
	else
	  salida=salida + "<td width=\"217\" class=\"texto_oscuro_3\">";
	
	if (tipo==0) // Diarios
      salida=salida + servicios_diarios;
	else 
      salida=salida + servicios_extraordinarios;
	salida=salida + "</td>";
    salida=salida + "<td width=\"68\" class=\"texto_oscuro2\">"+precio_dia_2+"</td>";
    salida=salida + "<td width=\"35\" class=\"texto_oscuro2\">"+cant+"</td>";
    salida=salida + "<td width=\"43\" class=\"texto_oscuro2\">";
	if(tipo==0)
	  salida=salida + n_dias;
	salida=salida + "</td>";
    salida=salida + "<td class=\"texto_oscuro2\" nowrap>"+importe_total+"</td>";
    salida=salida + "</tr>";
    salida=salida + "</table>";
    salida=salida + "</td>";
    salida=salida + "</tr>";
    salida=salida + "<tr bgcolor=\"#C28658\"><td height=\"1\" colspan=\"2\" bgcolor=\"#C28658\"></td></tr>";
    salida=salida + "<tr><td height=\"5\" colspan=\"2\"></td></tr>";
	
	return(salida);
  }

  function BuscarServ(id_serv,tipo)
  {
    resultado=null;
    ind=0;
	enc=false;
	while ((ind<this.Lista.length)  && (!enc))
	{
	  if ((this.Lista[ind].id_serv==id_serv) && (this.Lista[ind].tipo==tipo))
	  {
	    resultado=this.Lista[ind];
		enc=true;
	  }
	  ind++;
	} // del while de la lista

	return (resultado);
  }
  
  function AddServicio(id_serv,tipo,nombre,PB,PM,PA,PE)
  {
    elemento=new TServicio(id_serv,tipo,nombre,PB,PM,PA,PE);
    this.Lista[this.Lista.length]=elemento;
	return (elemento);
  }
  
  function ChequearServicios(id_serv,tipo,check)
  {
    elemento=this.BuscarServ(id_serv,tipo);
	if (elemento!=null)
	  elemento.seleccionado=check;
  }

  function ControlCant(id_serv,tipo,elemento)
  {
    if (!EsNumero(elemento.value)) // Si no es número
      elemento.value=0;
    ListaServicios.ControlCantidad(id_serv,tipo,elemento.value);
  }

  function ControlCantidad(id_serv,tipo,valor)
  {
    elemento=this.BuscarServ(id_serv,tipo);
    if (elemento!=null)
     elemento.cantidad=parseInt(valor);
  }
  
  function DameImporteTotal()
  {
	  ndias=Lista_Seleccion.TReserva_NDias();
	  
  	// Servicios Diarios
	total=0;
	for (ind=0;ind<this.Lista.length;ind++)
	if (this.Lista[ind].seleccionado)
	{
		//Diarios
		if (this.Lista[ind].tipo==0)
			total+=parseFloat(this.Lista[ind].Precios[3]) * this.Lista[ind].cantidad * ndias;
		else
		// Extraordinario
		if (this.Lista[ind].tipo==1)
			total+=parseFloat(this.Lista[ind].Precios[3]) * this.Lista[ind].cantidad;
	}
	//alert('Total en la clase: '+ total);
	
	return FormatoPrecio(total,2,0);
  }
  /////////////////////////// Fin Clase TListaServicios ///////////////////////