/*  Dise�o */

/* Para interaccion con el data-multiprecio */
/*
dataNav.prototype = {
	fnd_actual: '',
	over: function(obj) {
		var YUD = YAHOO.util.Dom;
		//YUD.addClass(obj,'hover');
	},
	out: function(obj) {
		var YUD = YAHOO.util.Dom;
		//YUD.removeClass(obj,'hover');
	}
}
function dataNav(){};
*/

var tabView;
var force_peticion=true;

function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)", "i") : null;
    var oCurrent;
    var oAttribute;
    for(var i=0; i<arrElements.length; i++){
        oCurrent = arrElements[i];
        oAttribute = oCurrent.getAttribute && oCurrent.getAttribute(strAttributeName);
        if(typeof oAttribute == "string" && oAttribute.length > 0){
            if(typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
                arrReturnElements.push(oCurrent);
            }
        }
    }
    return arrReturnElements;
}


function replaceHtml(el, html) {
	var oldEl = typeof el === "string" ? document.getElementById(el) : el;
	/*@cc_on // Pure innerHTML is slightly faster in IE
		oldEl.innerHTML = html;
		return oldEl;
	@*/
	var newEl = oldEl.cloneNode(false);
	newEl.innerHTML = html;
	oldEl.parentNode.replaceChild(newEl, oldEl);
	/* Since we just removed the old element from the DOM, return a reference
	to the new element, which can be used to restore variable references. */
	return newEl;
};


/* DESGLOSE DE PRECIO */
Desglose.prototype = {
	abierto: 		false,
	target:			'divDesglose_old',
	fx_duration:	1.5,
	fx_height:		150,
	init: function() {
		var YUD = YAHOO.util.Dom;

		height = new String(YUD.getStyle(this.target,'height'));
		this.fx_height = parseInt(height.substring(0, height.length - 2)) + 10;
		YUD.setStyle(this.target, 'height', '0px');
	},
	toggle: function() {
		var YUD = YAHOO.util.Dom;
		if(!this.abierto)
		{
			this.abierto = true;
			$('btnDesglose').innerHTML = 'Ocultar desglose de precios';
			// abrir
			var fx = {
			   height: { from: 0, to: this.fx_height, unit: 'px' }
			}
			var myAnim = new YAHOO.util.Anim(this.target, fx, this.fx_duration , YAHOO.util.Easing.easeOut);
		}
		else
		{
			this.abierto = false;
			$('btnDesglose').innerHTML = 'Ver desglose de precios';
			// cerrar
			var fx = {
			   height: { from: this.fx_height, to: 0, unit: 'px' }
			}
			var myAnim = new YAHOO.util.Anim(this.target, fx, this.fx_duration, YAHOO.util.Easing.easeOut);
		}
		myAnim.animate();
	}
}
function Desglose(){};
var desg = new Desglose();


var obj_maskara_modal_ficha = {
 init : function (el)
 {
         if (!this.overlay_via_ficha)
         {
                 this.overlay_via_ficha=new YAHOO.widget.Panel("overlay_via_ficha", {zIndex:9999,fixedcenter:true, monitorresize:false, visible: false, constrainToViewport: true,modal:false, modalPartial: false,close:false, draggable:false, width:"200px"});
                 this.overlay_via_ficha.setBody('<img align="middle" alt="Actualizando..." src="/images_new/hoteles/indicator_big.gif"/>&nbsp;Actualizando...');
                 this.overlay_via_ficha.render(document.body);
         }
 },
show : function () { if(!this.overlay_via_ficha){this.init();} this.overlay_via_ficha.show(); },
hide : function () { this.overlay_via_ficha.hide(); },
showRetrying: function() {
	this.hide();
	this.overlay_via_ficha.setBody('<img align="middle" style="text-align:center" alt="Actualizando..." src="/images_new/hoteles/indicator_big.gif"/>&nbsp;<br/><div style="text-align:center"> Un momento por favor... Estamos calculando el mejor precio</div>');
	this.show();
	},
resetText: function() {
		if (!this.overlay_via_ficha)
         {
         	this.init();
         }
         else this.overlay_via_ficha.setBody('<img align="middle" alt="Actualizando..." src="/images_new/hoteles/indicator_big.gif"/>&nbsp;Actualizando...');
}
};

/* TOOLS */
/*   Validar distribuci�n habitaciones x pasajero */

function redondea(v,d)
{
		if (v==0) return(0);
        var fc=parseInt("100000".substring(0,d+1));
        return (Math.round(v*fc)/fc);
//      return (v.toFixed(d));
}


function validarDistribucion()
{
		
		if (($('es_apartamento'))==null) { 
			return(true);
		}
		if ($('es_apartamento').value == 1) return(true);
		if ($('ad').value=="0")return(false);
         var totalPax = jFrm.get_viajes_q_ocupan();

         var dobles = parseInt($('dob').value) * 2;
         var triples = parseInt($('tr').value) * 3;
         var individuales = parseInt($('si').value);
         var cuadruples = parseInt($('qu').value) * 4;
         var totalPlazas = dobles + triples + individuales + cuadruples;

         if (totalPax != totalPlazas || totalPax==0) return false;
         return true;
}
/* Mensajes de alerta */
function showAlert(msg)
{
	if (msg=="") {
		$('msgUsuarios').innerHTML="";
		hidediv('con_msgUsuarios');
		}
	else {
		showdiv('con_msgUsuarios');
	//	$('con_msgUsuarios').style='visibility:block';
		$('msgUsuarios').innerHTML=msg;
	}
}

function confirmar_pedido()
{
	try
	{
        $('detalles_viaje').value=jFrm.get_detalles_precio();
        $('frm_via_calcula').accio.value="";
        $('frm_via_calcula').pg.value="reservar_viaje";
        $('frm_via_calcula').method="POST";
    }
    catch (e) {
        alert(e.message);
        return;
    }
	$('frm_via_calcula').submit();
}


function recupera_valor_array(ar,k,c,ret)
{
	var pos = findInArray(ar,k,c);
	var r = "";
	if (pos>=0) {
		r = ar[pos][ret];
	}
	return(r);
}


function calcula_precio()
{
	sr('calcula_precios','');
}

function cargaMes(i,a,m)
{
	jFrm.set_mes(m);
	jFrm.set_anyo(a);
	sr("obtener_calendario",'');
}
function cargaMes2(i,a,m)
{
	if(Flujo.getPaso() > 1)
	{
		cargaMes(i,a,m)
	}
	return false;
}

function loadDate(d)
{
	if(Flujo.getPaso() > 1)
	{
		jFrm.set_sel_fecha(d);
		jFrm.marca_en_calendario(d);
	   // mostrado
		/* Buscamos la query en memoria y si no est� la volvemos a pedir */
		var _cal = jInfo.peticion_exists(d);
		if (_cal!="") {
			jFrm.muestra_tabla_precios(_cal);
		}
		Flujo.next(3); // mike
	}
}

function frmChange(mode)
{
	// cualquier cambio en el paso 1 tiene q volver a calcular lo del paso 4
	if(mode!=1)
	{
        Flujo.next(1); // mike
	}

	// Una modificacion en el formulario puede invalidar la informaci�n de la pantalla.
	// por lo tanto, la ocultmaos.
	//hidediv('con_con_alojamiento');
	//mode=1 --> cambiar duracion viaje
	//mode=2 --> cambiar punto salida
	if (mode==1 || mode==2) { // requiere recarga?
	        // Cambio de ps --> eliminamos parametros almacenados.
	        $('frm_via_calcula').id_regimen.value="";
	        $('frm_via_calcula').id_alojamiento.value="";
	        $('frm_via_calcula').mes.value="";
	        $('frm_via_calcula').anyo.value="";
	        $('frm_via_calcula').id_fecha.value="";
	        $('frm_via_calcula').pg.value="ficha_accion";
	        // Ocultamos fichas de precios,
	        sr('cambia_datos_v2','');
	}
	else {
	
			if (!validarDistribucion()) {
				Flujo.guia('error_1');
				Flujo.lock();
			}
			else {
					Flujo.guia('guia_1');
					Flujo.unlock();
				}

	}
}


function removeFromArray(ar,v)
{
        arR=new Array();
        for (i=0;i<ar.length;i++)
        {
                if (ar[i]!=v) arR.push(ar[i]);
        }
        return arR;

}


var vHotels=new Array();


function carga_hotel(idh)
{

        if (!in_array(idh,vHotels)) {
                var h=$('hotel_'+idh); // id='hotel_{$hotel->getId()}'
                if (h) {
                        var d=$("detalle_hotel_"+idh);
                        d.innerHTML=h.innerHTML;
                        //showdiv("detalle_hotel_"+idh);
                        if(YAHOO.util.Dom.hasClass("detalle_hotel_"+idh,'oculto'))
                        {
                            YAHOO.util.Dom.removeClass("detalle_hotel_"+idh,'oculto');
                        }
                        //$('lnk_show_'+idh).innerHTML='Ocultar info';
                        vHotels.push(idh);
                }
        }
        else {
                //$('lnk_show_'+idh).innerHTML='Ver info';
                //hidediv("detalle_hotel_"+idh);
                if(!YAHOO.util.Dom.hasClass("detalle_hotel_"+idh,'oculto'))
                {
                    YAHOO.util.Dom.addClass("detalle_hotel_"+idh,'oculto');
                }
                vHotels=removeFromArray(vHotels,idh);
        }
        return (false);
}



/**
* Send request (sr)
* param: a: accion
* param: f: form2link
*/

function sr(a,f)
{
  obj_maskara_modal_ficha.show();
  var callback =
      {
        success: function(o) {manageResponse(o.responseText);obj_maskara_modal_ficha.hide();},
        failure: function(o) {return "No respondemos!";obj_maskara_modal_ficha.hide();},
        cache:false
      }
    $('frm_via_calcula').accio.value=a;
    $('frm_via_calcula').pg.value="ficha_accion";
    if (f!="")  YAHOO.util.Connect.setForm(f);
    else YAHOO.util.Connect.setForm($('frm_via_calcula'));
        var cObj = YAHOO.util.Connect.asyncRequest('GET', '/viajes/index.php', callback);
}


/**
* manageResponse
*/

function manageResponse(d)
{
        var errors=0;
        var msgError="";
        try {
            jInfo.info=eval('(' + d + ')'); // YAHOO.lang.JSON.parse(d);
        } catch (e) {
        	alert(e.message);
            errors++;
        }

        if (errors==0) {
                if (jInfo.info.status!=0) {
                 errors++;
                        if (jInfo.info.message!="") msgError=jInfo.info.message;
                        else msgError='se ha producido un error';
                 }
                else {
                        if (jInfo.info.exec!="") {
                                setTimeout("eval(\""+jInfo.info.exec+"\")",10);
                        }
                        if (jInfo.info.position!="" && jInfo.info.data!="") $(jInfo.info.position).innerHTML=jInfo.info.data;
                        if (jInfo.info.debug_info!="") $('debug').innerHTML+=jInfo.info.debug_info;
                }
                if (errors>0) alert(msgError);
        }
        else alert ('invalid info');
}

/**
* Objetos de gestion
*/


/* Atrapalo.viajes.fechas */

Atrapalo.viajes.fechas = {};
Atrapalo.viajes.room = {};
Atrapalo.viajes.precios = {};
Atrapalo.viajes.frmviaje = {};

Atrapalo.viajes.fechas = function() {};



Atrapalo.viajes.precios= function() {};
Atrapalo.viajes.frmviaje = function() {};

Atrapalo.viajes.fechas.prototype = {
		ds_tipo_alojamiento: [],
		ds_alojamientos: [],
		ds_regimenes: [],
		ds_tipos_room: [],
		ds_duraciones: [],
		ds_fechas: [],
		ds_propiedades_viaje: [],
		item_barato: [],
		load_ds: function(d) // Primera carga desde controller
		{
			if (jInfo.info.data["a"]) this.ds_alojamientos = jInfo.info.data["a"]; //
			if (jInfo.info.data["r"]) this.ds_regimenes = jInfo.info.data["r"]; //d.r;
			if (jInfo.info.data["t"]) this.ds_tipos_room = jInfo.info.data["t"]; //d.tr;
			if (jInfo.info.data["d"]) this.ds_duraciones = jInfo.info.data["d"]; //d.d;
			if (jInfo.info.data["b"]) {
					this.item_barato = jInfo.info.data["b"]; //d.b;
					jFrm.set_precio(parseInt(this.item_barato["pp"])>0?this.item_barato["pp"]:this.item_barato["p"]);
			}
			if (jInfo.info.data["f"]) this.ds_fechas = jInfo.info.data["f"]; //d.f;
			if (jInfo.info.data["pa"]) this.ds_propiedades_viaje = jInfo.info.data["pa"]; //d.f;
			if (jInfo.info.data["tpa"]) this.ds_tipo_alojamiento = jInfo.info.data["tpa"]; //d.f;
			jFrm.ajusta_frm(this.ds_propiedades_viaje[this.ds_tipo_alojamiento[0].i]); // Eliminamos del form lo q el viaje no tiene.

		},
		cargaduraciones: function(du)
		{
			if(Flujo.getPaso() >= 2)
			{
				jFrm.set_sel_duracion(du);
				var _durList = $('duraciones_list');
				var _list = _durList.getElementsByTagName('li');
				/* Eliminamos la seleccion de todos los lis i dejamos solo el actio */
				for (var _i=0;_i<_list.length;_i++)
				{
					YAHOO.util.Dom.removeClass(_list[_i].id, 'selected');
				}
				YAHOO.util.Dom.addClass('duraciones_'+du, 'selected');
				frmChange(1);
			}
		}
};

Atrapalo.viajes.frmviaje.prototype = {
		marca_en_calendario: function(sCId)
		{
			var cal=$('innerCal');
			var el=cal.getElementsByTagName("div");
			for (ii=0;ii<el.length;ii++) {
				if (el[ii].id!="") {
					if (el[ii].id=="c_"+sCId)  el[ii].className="cssSeleccionado";
					else {
							if (el[ii].id!="")  el[ii].className="cssDia";
						}
				}
			}

		},
		actualiza_precio_final: function()
		{
			var id_fecha=jFrm.get_sel_fecha();
			var id_regimen= jFrm.get_sel_regimen();
			var id_alojamiento = jFrm.get_sel_alojamiento();
			var id_tp_room = jFrm.get_sel_room();
			this.marca_elemento_seleccion(id_fecha, id_regimen, id_alojamiento, id_tp_room);
		},
		marca_elemento_byid: function(id)
		{
			try {
				this.muestra_nochesextras("nextra_"+id);
				$('chk_'+id).checked=true;
				var itms = id.split("-");
				this.marca_elemento_seleccion(itms[0],itms[1], itms[2],itms[3]);
			}
			catch (_er) {
				alert(_er.message);
			}

		},
		marca_elemento_seleccion: function(id_fecha, id_regimen, id_alojamiento, id_tp_room)
		{
            var YUD = YAHOO.util.Dom;
			var exists_items = document.getElementById("hi_"+id_fecha+"-"+id_regimen+"-"+id_alojamiento+"-"+id_tp_room);
			if (exists_items)
			{
				this.set_sel_fecha(id_fecha);
				this.set_sel_regimen(id_regimen);
				this.set_sel_alojamiento(id_alojamiento);
				this.set_sel_room(id_tp_room);
				jExtras.muestra_extras_fecha(id_fecha);
				this.muestra_desglose("hi_"+id_fecha+"-"+id_regimen+"-"+id_alojamiento+"-"+id_tp_room);
				this.muestra_descripcion("des_"+id_fecha+"-"+id_regimen+"-"+id_alojamiento+"-"+id_tp_room);
			
				var _nid = id_fecha + "-" +id_regimen +"-"+id_alojamiento+"-"+id_tp_room;
				try {
					this.marca_en_tabla_precios(false); // Repintamos tabla sin marcar el mb;
					var elems = YAHOO.util.Dom.getElementsByClassName('seleccionado', 'td', 'alojamiento_fechas');
					for (var _i=0;_i<elems.length;_i++) YAHOO.util.Dom.removeClass(elems[_i].id, 'seleccionado');
					YAHOO.util.Dom.addClass(_nid, 'seleccionado');
					YAHOO.util.Dom.removeClass(_nid, 'bk_gris2');

					var _lp = this.get_precio_html(id_fecha,id_regimen,id_alojamiento,id_tp_room);
					if (_lp!="")
					{
						// Recuperamos importe extras opcionales
						var _impex = jExtras.obtener_importe_extras();
						var _impnextra = jExtras.obtener_importe_nextras();
						if (!isNaN(_impnextra)) $('imp_nextras').innerHTML = redondea(parseFloat(_impnextra),2)+" &euro;";
						else $('imp_nextras').innerHTML = "0"+" &euro;";
						$('importe_reserva').innerHTML =  redondea(parseFloat(_impnextra)+parseFloat(_lp)+parseFloat(_impex),2)+" &euro;";
						$('precio_total').value = redondea(parseFloat(_impnextra)+parseFloat(_lp)+parseFloat(_impex),2);
					}
					else {
						$('importe_reserva').innerHTML = "";
						$('precio_total').value = "";
					}

					var _dt = this.get_dto_html(id_fecha,id_regimen,id_alojamiento,id_tp_room);
					if (_dt!="" && _dt!="0")
					{
						$('importe_normal').innerHTML = redondea(parseInt(_dt) + parseInt($('precio_total').value),2)+" &euro;";
						$('importe_ahorro').innerHTML = redondea(_dt,2)+" &euro;";
						YUD.removeClass('con_ahorro', 'oculto');
						YUD.removeClass('con_normal', 'oculto');
                        if(YUD.hasClass('con_totalreserva','width100'))
                        {
                            YUD.addClass('con_totalreserva', 'width33');
                            YUD.removeClass('con_totalreserva', 'width100');
                        }
					}
					else {
						YUD.addClass('con_ahorro', 'oculto');
						YUD.addClass('con_normal', 'oculto');
						if(YUD.hasClass('con_totalreserva','width33'))
						{
							YUD.removeClass('con_totalreserva', 'width33');
							YUD.addClass('con_totalreserva', 'width100');
						}

						$('importe_normal').innerHTML = "&nbsp;";
						$('importe_ahorro').innerHTML = "&nbsp;";
					}

				} catch (e) {}
			}
			else alert("La distribuci�n elegida no est� disponible para esta fecha / alojamiento");
		},
		muestra_nochesextras:function (id)
        {
			// reiniciamos noches extras.
			$('noches_extras_a').value=0;
			$('noches_extras_p').value=0;
			$('imp_noches_extras_a').value=0;
			$('imp_noches_extras_p').value=0;
			if ($(id)) $('bloc_nextras').innerHTML = $(id).innerHTML;
			else $('bloc_nextras').innerHTML = "<input type='hidden' name='nextra_ant' value=0><input type='hidden' name='nextra_post' value=0>Esta selecci&oacute;n no dispone de noches extras";
        },
		muestra_descripcion:function (id)
        {
            $('var_descripcion').innerHTML = $(id).innerHTML;
        },
		muestra_desglose:function (id)
		{
			$('var_precios').innerHTML = $(id).innerHTML;
		},
		marca_en_tabla_precios: function(bb)
		{
			var _sd = jFrm.get_sel_fecha();

			if (_sd!="")
			{
				var _ids_fechas = $('alojamiento_fechas');

				// marcar la columna de la fecha mike
				var _tds = _ids_fechas.getElementsByTagName('td');
                for (var _ii=0;_ii<_tds.length;_ii++)
                {
                    if (_tds[_ii].headers) // ie hack
                    {
                        if (_tds[_ii].headers == 'th_'+_sd)
                        {
                            YAHOO.util.Dom.addClass(_tds[_ii].id, 'bk_gris2');
                        }
                        else {
                            YAHOO.util.Dom.removeClass(_tds[_ii].id, 'bk_gris2');
                        }
                    }
                }

				// marcar cabecera de la fecha
				var _ths = _ids_fechas.getElementsByTagName('th');
				for (var _ii=0;_ii<_ths.length;_ii++)
				{
					if (_ths[_ii].id) // ie hack
					{
						if (_ths[_ii].id == 'th_'+_sd)
						{
							var _hijos = getElementsByAttribute($('alojamiento_fechas'),'td','headers','th_'+_sd);
							if (bb) this.busca_precio_mas_barato(_hijos);
							YAHOO.util.Dom.addClass(_ths[_ii].id, 'bk_gris4'); // mike
						}
						else {
							YAHOO.util.Dom.removeClass(_ths[_ii].id, 'bk_gris4'); // mike
						}
					}
				}
				//alert(_sd);
				//this.muestra_nochesextras("nextra_"+id_fecha+"-"+id_regimen+"-"+id_alojamiento+"-"+id_tp_room);				
			}
		},
		selecciona_precio: function(id_fecha,id_regimen,id_alojamiento,id_tp_room)
		{
			$('noches_extras_a').value=0;
			$('noches_extras_p').value=0;			
			this.muestra_nochesextras("nextra_"+id_fecha+"-"+id_regimen+"-"+id_alojamiento+"-"+id_tp_room);
			this.marca_elemento_seleccion(id_fecha, id_regimen, id_alojamiento, id_tp_room);
			Flujo.scrollStart('scroll_4');
			//document.location.href = '#paso4'; // mike
		},
		get_precio_html: function(id_fecha,id_regimen,id_alojamiento,id_tp_room)
		{
			var _p="";
			try {
				_p = $("pnr_"+id_fecha+"-"+id_regimen+"-"+id_alojamiento+"-"+id_tp_room).innerHTML;
				return (_p);
			}
			catch (e) {}
		},
		get_dto_html: function(id_fecha,id_regimen,id_alojamiento,id_tp_room)
		{
			var _p="";
			try {
				_p = $("dto_"+id_fecha+"-"+id_regimen+"-"+id_alojamiento+"-"+id_tp_room).innerHTML;
				return (_p);
			}
			catch (e) {}
		},
		get_detalles_precio: function()
		{
			var id_fecha=jFrm.get_sel_fecha();
			var id_regimen= jFrm.get_sel_regimen();
			var id_alojamiento = jFrm.get_sel_alojamiento();
			var id_tp_room = jFrm.get_sel_room();
			var d_p=$("dtl_"+id_fecha+"-"+id_regimen+"-"+id_alojamiento+"-"+id_tp_room);
			var tmp_de = document.getElementById("extra_"+id_fecha+"-"+id_regimen+"-"+id_alojamiento+"-"+id_tp_room);
			var d_e="";
			if (tmp_de) d_e = tmp_de.innerHTML;
			return(d_p.innerHTML +""+ jExtras.obtener_lineas_extras()+d_e);
		},
		busca_precio_mas_barato: function(e)
		{
			var _pm = 99999;
			var _minel = null;
			for (_i=0;_i<e.length;_i++)
			{
				var _p=e[_i].getElementsByTagName('a');
				if (_p.length>0)
				{
					var _pim = parseInt(_p[0].innerHTML);
					if (_pm > _pim)
					{
						_pm = _pim;
						_minel = e[_i];
					}
					else YAHOO.util.Dom.removeClass(e[_i], 'seleccionado');
				}
			}
			if (_minel!=null) {
				this.marca_elemento_byid(_minel.id);
//				YAHOO.util.Dom.addClass(_minel, 'seleccionado');
				}

		},
		muestra_tabla_precios: function(d)
		{
			$('alojamiento_fechas').innerHTML = d;
			//showdiv('con_con_alojamiento');
			this.marca_en_tabla_precios(true);
		},
		muestra_precios: function(c)
		{
			if (jInfo.info.data.e!="")
			{
				jInfo.extras_add(jInfo.info.data.e);
			}
			if (jInfo.info.data.p!="") {
				jInfo.peticion_add(this.get_sel_fecha(), jInfo.info.data);
				this.muestra_tabla_precios(jInfo.info.data.p );
			}
		},
		recarga_calendario: function(c)
		{
		  $('innerCal').innerHTML = jInfo.info.data.c;
		  if (jInfo.info.data.sf) {
		  	this.set_sel_fecha(jInfo.info.data.sf);
		  }
		  if (jInfo.info.data.a) {
		  	this.set_anyo(jInfo.info.data.a);
		  }
		  if (jInfo.info.data.m) {
		  	this.set_anyo(jInfo.info.data.m);
		  }
		},
        get_viajeros_txt: function()
        {
            var psv="";
            try {
	            psv=psv+"-"+parseInt($('ad').options[$('ad').selectedIndex].value);
	            psv=psv+"-"+parseInt($('ni').options[$('ni').selectedIndex].value);
	            psv=psv+"-"+parseInt($('be').options[$('be').selectedIndex].value);
            } catch (e) {};
			return (psv);
        },
        get_viajeros: function()
        {
            var psv=0;
            psv=psv+parseInt($('ad').options[$('ad').selectedIndex].value);
            psv=psv+parseInt($('ni').options[$('ni').selectedIndex].value);
            psv=psv+parseInt($('be').options[$('be').selectedIndex].value);
			return (psv);
        },
        get_viajes_q_ocupan: function()
        {
            var psv=0;
            psv=psv+parseInt($('ad').options[$('ad').selectedIndex].value);
            psv=psv+parseInt($('ni').options[$('ni').selectedIndex].value);
			return (psv);
        },
        modify_nextra: function(tipo,idx,val)
        {
        	var _count = $('noches_extras_'+tipo);
        	var _import = $('imp_noches_extras_'+tipo);
        	if (_count)_count.value = idx;
        	if (_import) _import.value= val; 
        	jFrm.actualiza_precio_final();
        },
        get_adultos: function()
        {
            var psv=0;
            psv=psv+parseInt($('ad').options[$('ad').selectedIndex].value);
                return(psv);
        },
        get_ninos: function()
        {
            var psv=0;
            psv=psv+parseInt($('ni').options[$('ni').selectedIndex].value);
                return(psv);
        },
        get_bebes: function()
        {
            var psv=0;
            psv=psv+parseInt($('be').options[$('be').selectedIndex].value);
                return(psv);
        },
        get_rooms_txt: function()
        {
        	var ret="";
        	try {
	            ret=ret+"-"+parseInt($('si').options[$('si').selectedIndex].value);
	            ret=ret+"-"+parseInt($('dob').options[$('dob').selectedIndex].value);
	            ret=ret+"-"+parseInt($('tr').options[$('tr').selectedIndex].value);
				ret=ret+"-"+parseInt($('qu').options[$('qu').selectedIndex].value);
			} catch (e) {};
			return(ret);
        },
        get_rooms: function()
        {
                var rooms4fill = {
                        1: parseInt($('si').options[$('si').selectedIndex].value),
                        2: parseInt($('dob').options[$('dob').selectedIndex].value),
                        3: parseInt($('tr').options[$('tr').selectedIndex].value),
                        4: parseInt($('qu').options[$('qu').selectedIndex].value)
                };
                return(rooms4fill);
        },
        get_sel_ps: function()
        {
                var ps="";
                try {
                    var tpV = $("frm_via_calcula").tipo.value;
                    if (tpV != 1) {	//	{t:0, p: curExtra.p, pp: 0, d: curExtra.n, pax: n, ppax: n*parseFloat(curExtra.p), dto:0}
	/*
	    	$dt_ds = $count."##".$descripcion;
    	$dt_ds .="##".($precio - $precio_promocion);
    	$dt_ds .="##".$precio;
    	$dt_ds .="##".$pax;
    	$dt_ds .="##".$precio_promocion;
    	$dt_ds .="##".$precio_promocion;
    	$dt_ds .="##1";
    	$dt_ds .="|";
    	*/
                        var sPs = $("ps");
                        var ps = sPs[sPs.selectedIndex].value;
                    }
                } catch (e) {};
                return(ps);
        },
        set_sel_fecha: function(v)
        {
                var vsf=$("id_fecha");
                vsf.value=v;
                this.sf=v;
                return(true);
        },
        get_sel_fecha: function()
        {
                var retorno=0;
                var sf=$("frm_via_calcula").id_fecha.value;
                if (sf!="") retorno=sf;
                else {
                        if (this.sf!="") retorno=this.sf;
                }
                return(retorno);
        },
        set_mes: function(m)
        {
                var vsf=$("mes");
                vsf.value=m;
                return(true);
        },
        set_anyo: function(a)
        {
                var vsf=$("anyo");
                vsf.value=a;
                return(true);
        },
        set_precio: function(p)
        {
	        //$('resumen_importe').innerHTML = this.formatea_precio(p);
        },
        set_sel_alojamiento: function(a)
        {
                var vsf=$("id_alojamiento");
                vsf.value=a;
                return(true);
        },
        set_sel_regimen: function(a)
        {
                var vsf=$("id_regimen");
                vsf.value=a;
                return(true);
        },
        set_sel_room: function(a)
        {
                var vsf=$("id_room");
                vsf.value=a;
                return(true);
        },
        get_sel_room: function()
        {
                var vsf=$("id_room");
                if (vsf.value!="") return(vsf.value);
                else return("");
        },
        get_sel_alojamiento: function()
        {
                var vsf=$("id_alojamiento");
                if (vsf.value!="") return(vsf.value);
                else return("");
        },
        get_sel_regimen: function()
        {
                var vsf=$("id_regimen");
                if (vsf.value!="") return(vsf.value);
                else return("");
        },
        set_sel_duracion: function(a)
        {
                var vsf=$("duracion");
                vsf.value=a;
                return(true);
        },
		ajusta_frm: function(v)
		{
			  if ($('es_apartamento').value == 1) return(true);
              /* Alojamientos */
              if (v) {
	              if (!v.ocupacion_indiv==1)  {
	                              hidediv('lbl_si');
	                              hidediv('con_si');
	              }
	              if (!v.ocupacion_triple==1)  {
	                              hidediv('lbl_tr');
	                              hidediv('con_tr');
	              }
	              if (!v.ocupacion_quad==1)  {
	                              hidediv('lbl_qu');
	                              hidediv('con_qu');
	              }
	              /* Viajeros */
	              if (!v.viajeros_bb==1)  {
	                              hidediv('lbl_be');
	                              hidediv('con_be');
	              }
	              if (!v.viajeros_n13==1 && !v.viajeros_n24==1)  {
	                              hidediv('lbl_ni');
	                              hidediv('con_ni');
	              }
				}

			if(!v.viajeros_bb==1 && !v.viajeros_n13==1 && !v.viajeros_n24==1)
			{
				hidediv('ast_edades');
			}
		},
		formatea_precio: function(p) {
			return(parseFloat(p).formatMoney(2, ".", ",")+" &euro;");
		}
};

Atrapalo.viajes.extras = function() {};

Atrapalo.viajes.extras.prototype = {
		sel_extras: [],
        tpl_extras: "<div id='extra_${id}' class='${id|toActivoDiv} pad5 float-width'>\
                                <div class='width50'>\
                                <div class='floatl'><strong><input id='ex_${id}' name='ex_${id}' type='checkbox' ${id|toActivo} \
                                class='border0 margin0' onclick=\"jExtras.seleccionar_extra('extra_${id}','${id}','${tp}','${nombre}','${m}',this.checked);\" /></div>\
                                <div style='margin-left:20px'><label for='ex_${id}' class='inline fonts11 gris9'> <!-- ${tp}: --> ${nombre}</label></div>\
                                </strong></div>\
                                <div class='width50'><strong>\
                                {if tp==1}\
                                <span class='floatl'>${v|toViajeros:id,q} x ${pr}&euro;=</span>\
                                <span class='floatr fonts12'>+ ${pr2}&euro;</span>\
                                {/if}\
                                {if tp==2}\
                                <span class='floatl'> ${v} <span class='normal'>personas</span> x ${pr}&euro;=</span>\
                                <span class='floatr fonts12'>+ ${pr2}&euro;</span>\
                                {/if}</strong></div>\
                                <div class='clear'></div>\
                                </div>\
                                <p class='padtop10'>${d|toDescripcion:u}</p> ",
	obtener_importe_extras: function()
	{
		var imp=0;
		for (var _i=0;_i<this.sel_extras.length;_i++)
		{
			var curE = this.sel_extras[_i];
			var imp_extra = this.get_importe_extra(curE.id);

			if (curE.tp=="1")
			{
				var opc_v = "opc_v_"+curE.id;
				var opc_id = $(opc_v);
				var affected = this.sel_extras[_i].q;//opc_id[opc_id.selectedIndex].value;
				imp = imp + affected * imp_extra;
			}
			else {
				var affected = jFrm.get_viajeros();
				imp = imp + affected * imp_extra;
			}

		}
		return(imp);
	},
	obtener_importe_nextras: function()
	{
		var imp=0;
		try {
			
	    	var _importa = $('imp_noches_extras_a');
	    	var _importp = $('imp_noches_extras_p');
	    	if (_importa)
	    	{
	    		imp = imp + parseFloat(_importa.value);
	    	}
	    	if (_importp)
	    	{
	    		imp = imp + parseFloat(_importp.value);
	    	}
		}
		catch (err) {}
		return(imp);
	},	
	seleccionar_extra: function(id_div, id_extra, tp_extra, nombre_extra, pedir_matricula, status)
	{
        var YUD = YAHOO.util.Dom;
		$('pedir_matricula').value = (pedir_matricula == 1 && status == true)?1:0;
		if (status==true) {
			if (tp_extra=="1") {
				var opc_v = "opc_v_"+id_extra;
				var opc_id = $(opc_v);
				var affected = opc_id[opc_id.selectedIndex].value;
				this.set_extra(id_extra,tp_extra,nombre_extra, affected);
			}
			else {
				var q = jFrm.get_viajeros();
				this.set_extra(id_extra,tp_extra,nombre_extra, q);
			}
			// cambiar fondo , mike
			YUD.removeClass(id_div, 'bk_rosa');
			YUD.addClass(id_div, 'gris2');
		}
		else {
			this.remove_extra(id_extra);
			// cambiar fondo , mike
			YUD.removeClass(id_div, 'gris2');
			YUD.addClass(id_div, 'bk_rosa');
		}
		$('id_extras').value = this.get_detalle_extras();
		this.muestra_extras_fecha(jFrm.get_sel_fecha());
		jFrm.actualiza_precio_final();
	},
	get_detalle_extras: function()
	{
		var ret="";
		for (var x=0;x<this.sel_extras.length;x++)
        {
        	if (this.sel_extras[x].id!="inArray")
        	{
        		e_tmp = this.sel_extras[x];
        		ret+="##"+e_tmp["id"]+";"+e_tmp["q"]+";"+e_tmp["tp"];
        	}
        }
		return(ret);
	},
    remove_extra: function(id_extra)
    {
            var ret=[];
            for (var x=0;x<this.sel_extras.length;x++)
            {
                     if (this.sel_extras[x].id!=id_extra && this.sel_extras[x].id!="inArray") ret[ret.length]=this.sel_extras[x];
            }
            this.sel_extras=ret;
           	this.muestra_extras_fecha();
    },
    set_extra: function(id_extra,tipo,nombre, cantidad)
    {
            this.remove_extra(id_extra);
            this.sel_extras[this.sel_extras.length]={id:id_extra,tp:tipo, n:nombre, q:cantidad};
            this.muestra_extras_fecha();
    },
    check_extra_seleccionado: function(idextra)
    {
            var ret=false;
            var selExtra=this.sel_extras;
            if (selExtra.length>0) {
                    var matched=false;
                    for (var i=0;(i<selExtra.length && !ret);i++) {
                            if (selExtra[i].id==idextra) ret=true;
                    }
            }
            return (ret);
    },
    get_desc_extra: function(id_extra)
    {
          try {
            var f=jFrm.get_sel_fecha();
           	var tmp_ds = jInfo.ds_extras[f];
		  }
		  catch (e) {

		  }
          var result =0;
          var found=false;
          if (tmp_ds) {
                  for (var i=0; i< tmp_ds.length && !found; i++)
                  {
                  	if (tmp_ds[i].id == id_extra)
                  	{
                  		result=tmp_ds[i].n;
                  		found=true;
                  	}
                  }
          }
          return(result);
    },
    get_importe_extra: function(id_extra)
    {
          try {
            var f=jFrm.get_sel_fecha();
           	var tmp_ds = jInfo.ds_extras[f];
		  }
		  catch (e) {

		  }
          var result =0;
          var found=false;
          if (tmp_ds) {
                  for (var i=0; i< tmp_ds.length && !found; i++)
                  {
                  	if (tmp_ds[i].id == id_extra)
                  	{
                  		result=tmp_ds[i].p;
                  		found=true;
                  	}
                  }
          }
          return(result);
    },
    get_q_extra: function(id_extra)
    {
    	var q=0;
    	for (var _ii=0; _ii<this.sel_extras.length && q==0;_ii++)
    	{
    		if (this.sel_extras[_ii].id==id_extra) q=this.sel_extras[_ii].q;
    	}
    	return(q);

    },
	muestra_extras_fecha: function(f)
	{
		$('info_extras').style.display = 'none';
		var mytplObj=TrimPath.parseTemplate(this.tpl_extras);
        var viaModifiers = {
           toViajeros: function(n,id,v2) {
	            var fn='opc_v';
	            var psv=n;
                var ret="<select class='margin0' name='"+fn+"_"+id+"' id='"+fn+"_"+id+"' onchange=\"jExtras.seleccionar_extra('extra_"+id+"','"+id+"','1','','0',true);\">";
                for (var i=0;i<psv;i++)
                {
                        if (i+1==v2)  ret+="<option selected value='"+(i+1)+"'>"+(i+1)+" viajeros</option>";
                        else ret+="<option value='"+(i+1)+"'>"+(i+1)+" viajeros</option>";
                }
                ret+="</select>";
                return(ret);
           },
           toActivo: function(n) {
                var r = "";
                if (jExtras.check_extra_seleccionado(n)) r=" checked ";
                return (r);
           },
           toActivoDiv: function(n) {
                var r = "";
                if (jExtras.check_extra_seleccionado(n)) r="bk_gris2 ";
                else r="bk_rosa";
                return (r);
           },
           toDescripcion: function(desc,url) {
        	   var r="<div class='padbot10'>";
        	   if (desc!="") r = r +"<p>"+ desc + "</p>";
        	   if (url!="") r = r + "<p><a class='marginleft0 sprite_eventos sprite_ico_nuevaventana' href='"+url+"' target='_blank'>Ver detalles</a></p>";
        	   r=r+"</div>";
        	   return(r);
           }
        };
     /* Extras opcionales */
      try {
       	var tmp_ds = jInfo.ds_extras[f];
	  }
	  catch (e) {

	  }
      var result = "";
      if (tmp_ds) {
              for (var i=0; i< tmp_ds.length; i++)
              {
                      var dataArray = {
                                      id: tmp_ds[i].id,
                                      tp: tmp_ds[i].tipo,
                                      d: tmp_ds[i].d,
                                      m:tmp_ds[i].m,
                                      u:tmp_ds[i].url,
                                      nombre: tmp_ds[i].n,
                                      v: jFrm.get_viajeros(), // jExtras.get_q_extra(tmp_ds[i].id), //
                                      pr: tmp_ds[i].p,
                                      q: jExtras.get_q_extra(tmp_ds[i].id),
                                      pr2: redondea(tmp_ds[i].p * jExtras.get_q_extra(tmp_ds[i].id)  * (this.check_extra_seleccionado(tmp_ds[i].id)?1:0),2)
                              };
                      dataArray._MODIFIERS=viaModifiers;
                      result += mytplObj.process(dataArray);
              }
      }
      if (result!="") {
        $('bloc_extras').innerHTML=result;
      	$('info_extras').style.display = 'block';
      }
      else
      {
      	$('bloc_extras').innerHTML="Este viaje no dispone de extras.";
      	$('info_extras').style.display = 'none';
      }

	},
	obtener_lineas_extras: function()
	{
		var cur_row=2;
		var ret="";
		for (var _ii=0; _ii<this.sel_extras.length; _ii++)
		{
			var i_e = this.get_importe_extra(this.sel_extras[_ii].id);
			ret+=cur_row+(_ii)+"##"+this.get_desc_extra(this.sel_extras[_ii].id) +"##0##"+i_e +"##"+this.sel_extras[_ii].q+"##0##ppax##0|";
		}
		return(ret);
	}
}


function carga_datos()
{
        if (vFichaData) {
                setInfo(vFichaData);
        }
}


function setInfo(d)
{
        var errors=0;
        var msgError="";
        try {
            jInfo.info=d;
        } catch (e) {
            errors++;
        }

        if (errors==0) {
                if (jInfo.info.status!=0) {
                 erros++;
                        if (jInfo.info.message!="") msgError=jInfo.info.message;
                        else msgError='se ha producido un error';
                 }
                else {
                        if (jInfo.info.exec!="") {
                                setTimeout("eval(\""+jInfo.info.exec+"\")",10);
                        }
                        if (jInfo.info.position!="" && jInfo.info.data!="") $(jInfo.info.position).innerHTML=jInfo.info.data;
                        if (jInfo.info.debug_info!="") $('debug').innerHTML+=jInfo.info.debug_info;
                }
                if (errors>0) alert(msgError);
        }
        else alert ('invalid info');
}

Atrapalo.viajes.ficha = {};

Atrapalo.viajes.ficha = function(){
        info: {
                data:[]
        }
};

Atrapalo.viajes.ficha.prototype=
{
	peticiones:[],
	rangos_fechas:[],
	ds_extras:[],
	peticion_exists: function(d)
	{
		var _cdb = jFrm.get_viajeros_txt()+"-"+jFrm.get_rooms_txt()+"-"+jFrm.get_sel_ps()+"-"+d; // idx uniq
		var _p1 = findInArray(this.rangos_fechas, "f", _cdb);
		if (_p1<0)
		{
			var _pos = findInArray(this.peticiones, "idx", _cdb);
			if ( _pos < 0 || force_peticion)
			{
				this.peticion_get(d);
			}
			else
			{
				return(this.peticiones[_pos].data);
			}
		}
		else
		{
			var _pos = this.rangos_fechas[_p1].p;
			return(this.peticiones[_pos].data);
		}
	},
	peticion_resend: function()
	{
		obj_maskara_modal_ficha.showRetrying();
		setTimeout("sr('calcula_precios','');",10);
	},
	peticion_get: function()
	{
		obj_maskara_modal_ficha.resetText();
		sr('calcula_precios','');
	},
	peticion_add: function(c,i)
	{
		var _cdb = jFrm.get_viajeros_txt()+"-"+jFrm.get_rooms_txt()+"-"+jFrm.get_sel_ps()+"-"+jFrm.get_sel_fecha(); // idx uniq
		this.peticiones[this.peticiones.length]={'idx':_cdb, 'data':i.p};
		if (i.f!="") this.rangos_add(i.f,this.peticiones.length-1);
	},
	rangos_add: function(aF, i)
	{
		for (var ii=0;ii<aF.length; ii++)
		{
			this.rangos_fechas[this.rangos_fechas.length] = {'f':jFrm.get_viajeros()+"-"+jFrm.get_sel_ps()+"-"+aF[ii],'p':i};
		}

	},
	extras_add: function(e)
	{
		this.ds_extras = e;
	}
}

ViaFlujo.prototype = {
    init: function()
    {
    	this.debug =           false;   // desactivar cuando en produccion
    	this.divMsg =          "";
    	this.fx_duration =     1;
    	this.locked =          true;
    	this.opacityInit =     0.25;
    	this.paso =            1;
    	this.scrollDesacelerar = true;
    	this.scrollIncrement = 30;
    	this.scrollInterval =  0.1; // en segundos
    	this.scrollSentido =   -1;
    	this.scrollTarget =    "";
    	this.scrollTargetY =   0;

    	YAHOO.util.Dom.setStyle('con_calendario', 'opacity', this.opacityInit);
    	YAHOO.util.Dom.setStyle('divPaso3', 'opacity', this.opacityInit);
    	this.guia('guia_1');

    	// comprobamos de entrada el form paso 1, que puede haberse quedado una combo incorrecta
    	frmChange(0);
    },
    btnVerFechas: function(modo)
    {
    	var YUD = YAHOO.util.Dom;
    	if(modo == 'off')
    	{
        	YUD.removeClass('btnVerFechas','btn_rojo_on');
            YUD.addClass('btnVerFechas','btn_rojo_off');
    	}
    	else if(modo == 'on')
    	{
        	YUD.removeClass('btnVerFechas','btn_rojo_off');
            YUD.addClass('btnVerFechas','btn_rojo_on');
    	}
    },
    calDayOut: function(obj,id) {
    	if(this.paso > 1)
    	{   // ponemos efecto rollover solo si ha pasado del paso 1
        	obj.className='cssDays'+id;
    	}
    },
    calDayOver: function(obj,id) {
    	if(this.paso > 1)
        {   // ponemos efecto rollover solo si ha pasado del paso 1
        	obj.className='cssHilight'+id;
        }
    },
    getLocked: function() {
    	return this.locked;
    },
    getPaso: function() {
    	return this.paso;
    },
    guia: function(div) {
    	var YUD = YAHOO.util.Dom;
    	if(div != this.divMsg)
    	{
	   	    var target =       'msgUsuarios';
	    	var divTarget =    'divMsgUsuarios';
	    	// BUG EN IE6
	    	//$(target).innerHTML = $(div).innerHTML;

	    	// solucion
	    	this.guiasOcultar();
	    	YUD.removeClass(div,'oculto');

	    	this.fx(divTarget,0.2,1,this.fx_duration + 1.5);
	    	this.divMsg = div;

	    	// si es un error, cambiar caja a amarillo
	    	if(div.substring(0,5) == "error" && YUD.hasClass(divTarget,'caja_info'))
	    	{
	    		YUD.addClass(divTarget,'caja_amarilla');
	    		YUD.removeClass(divTarget,'caja_info');
	    	}
	    	else if(YUD.hasClass(divTarget,'caja_amarilla'))
    		{
	    		YUD.removeClass(divTarget,'caja_amarilla');
	    		YUD.addClass(divTarget,'caja_info');
    		}
    	}
    },
    guiasOcultar: function() {
    	var YUD = YAHOO.util.Dom;
    	YUD.addClass('guia_1','oculto');
    	YUD.addClass('guia_2','oculto');
    	YUD.addClass('guia_3','oculto');
    	YUD.addClass('error_1','oculto');
    	    	
    },
    fx: function(target, from, to, duration) {
    	var ani = new YAHOO.util.Anim(
            target,
            { opacity: {from: from, to: to } },
            duration,
            YAHOO.util.Easing.easeOut
        );
        ani.animate();
    },
    lock: function()
    {
    	this.locked = true;
    },
    next: function(paso)
    {
    	if(!this.locked)
    	{
	    	var YUD = YAHOO.util.Dom;
	    	switch(paso)
	    	{
	    		case 1:
	    		   if(this.paso != 1)
	    		   {
		    		   Flujo.btnVerFechas('on');
		    		   // ocultar paso 2
		    		   if(!YUD.hasClass('con_calendario','deshabilitado')) {
	                       YUD.addClass('con_calendario','deshabilitado');
	                   }
		    	       this.fx('con_calendario',1,parseFloat(this.opacityInit),this.fx_duration);
					   //YUD.removeClass('msgPaso2','oculto');
						
		    	       // ocultamos paso 3
		    	       if(!YUD.hasClass('via3_paso3','oculto')) {
		    	           YUD.addClass('via3_paso3','oculto');
		    	       }

		    	       // ocultamos paso 4
		    	       if(!YUD.hasClass('via3_paso4','oculto')) {
		    	           YUD.addClass('via3_paso4','oculto');
		    	       }
		    	       this.resetPaso4();
	    		   }
	    	       break;
	    		case 2:
	    		   // con_calendario
	    	       this.btnVerFechas('off');
	    	       this.fx('con_calendario',parseFloat(this.opacityInit),1,this.fx_duration);
	    	       this.guia('guia_2');
	    	       this.unlock();
	    	       YUD.removeClass('con_calendario','deshabilitado');
	    	       YUD.addClass('msgPaso2','oculto');
	               break;
	    	    case 3:
		    	    if(YUD.hasClass('via3_paso3','oculto'))
		    	    {
		    	       YUD.removeClass('via3_paso3','oculto');
		    	    }
		    	    if(YUD.hasClass('via3_paso4','oculto'))
		    	    {
		    	       YUD.removeClass('via3_paso4','oculto');
		    	    }
	    	       this.fx('divPaso3',parseFloat(this.opacityInit),1,this.fx_duration);
	    	       this.guia('guia_3');

                   window.setTimeout('Flujo.scrollPaso3()',500);

	    	       // activar botones de volver presupuesto en pestana descripcion
	    	       if(YUD.hasClass('btnVolverPresu1','oculto'))
	               {
	                  YUD.removeClass('btnVolverPresu1','oculto');
	                  YUD.removeClass('btnVolverPresu2','oculto');
	                  YUD.addClass('btnVerFechasDes','oculto');
	               }

	               break;
	    	}
	    	this.paso = paso;
	    	if(this.debug) console.log('Flujo.next: paso='+this.paso)
	    	//alert(this.paso)
    	}
    },
    resetPaso4: function() {
    	$('var_descripcion').innerHTML = '';
    	$('var_precios').innerHTML = '';
    	$('bloc_extras').innerHTML = '';
    	$('importe_reserva').innerHTML = '';
    },
    unlock: function()
    {
        this.locked = false;
    },
    scrollPage: function() {
        var to = this.scrollIncrement * this.scrollSentido;
        var currentY = (document.all) ? document.documentElement.scrollTop : window.pageYOffset;

        // cuando este cerca desacelerar
        if(this.scrollDesacelerar)
        {
        	distancia = Math.abs(currentY - this.scrollTargetY);
        	if(distancia < 50)
        	{
        		to = to / 8;
        	}
        	else if(distancia < 100)
        	{
        		to = to / 4;
        	}
        	else if(distancia < 150)
        	{
        		to = to / 2;
        	}
        }

        window.scrollBy(0,to); // horizontal and vertical scroll increments

    	if(this.scrollSentido == 1)
    	{
	    	if(currentY <= this.scrollTargetY)
    		{
		        this.scrolldelay = setTimeout('scrollPage()',this.scrollInterval * 100); // scrolls every 100 milliseconds
    		}
    		else
    		{
    			this.scrollStop();
    		}
    	}
    	else if(this.scrollSentido == -1)
    	{
	    	if(currentY >= this.scrollTargetY)
    		{
		        this.scrolldelay = setTimeout('scrollPage()',this.scrollInterval * 100); // scrolls every 100 milliseconds
    		}
    		else
            {
                this.scrollStop();
            }
    	}
    },
    scrollPaso3: function() {
    	this.scrollStart('scroll_3');
    },
    scrollStart: function(target) {
    	var YUD = YAHOO.util.Dom;
    	var currentY = (document.all) ? document.documentElement.scrollTop : window.pageYOffset;
    	this.scrollTarget = target;
    	this.scrollTargetY = YUD.getY(target);
    	// decidir si hay que subir o bajar
    	if(this.scrollTargetY < currentY) {
    		this.scrollSentido = -1; // subir
    	}
    	else {
    		this.scrollSentido = 1; // bajar
    	}
    	this.scrollPage();
    },
    scrollStop: function() {
    	window.clearTimeout(this.scrolldelay);
    },
    verFechas: function() {
    	Flujo.next(2);
    	Flujo.scrollStart('scroll_top');
    }
}
function ViaFlujo() {}
Flujo = new ViaFlujo();

function scrollPage() {
	Flujo.scrollPage();
}

function clickTab(index) {
    tabView.set('activeIndex', index);
    setTimeout("window.document.location.href = '#top';",10);
}

function clickTab2(nomtab) {
	switch(nomtab)
	{
		case 'reservar': clickTab(0); break;
		case 'descripcion': clickTab(1); break;
		case 'alojamiento': clickTab(2); break;
		case 'destino': clickTab(numPestanasDes); break;
		case 'opiniones': clickTab(numPestanasOpi); break;
	}
}

function iniciarTabsView() {    
    var url = window.document.location.href;
    if(url.search('#reservar')>0) {clickTab2('reservar');}
    if(url.search('#descripcion')>0) {clickTab2('descripcion');}
    if(url.search('#alojamiento')>0) {clickTab2('alojamiento');} 
    if(url.search('#destino')>0) {clickTab2('destino');}         
    if(url.search('#opiniones')>0) {clickTab2('opiniones');}      
}


function foto(img) {
	var target = 'destino_img';
	$(target).src = img;
}


function mostrardiv(objID){
	
	var obj 		= new YAHOO.util.Element(objID);



	if(obj.getStyle('display') == "none"){
	
		obj.setStyle('display', 'block');		
		YAHOO.util.Dom.replaceClass('arrow-' + objID, 'flecha_roja', 'flecha_roja_abajo'); 

	} else {
	
		obj.setStyle('display', 'none');
		YAHOO.util.Dom.replaceClass('arrow-' + objID,  'flecha_roja_abajo', 'flecha_roja' );
	}
	
	return;
}


var vGuias = new Array();
vGuias[0] = '<p><strong class="fonts13">Atenci&oacute;n:</strong> La distribuci&oacute;n de pasajeros en habitaciones no es correcta.</p><p>Todos los pasajeros (excepto los beb&eacute;s hasta 2 a�os sin cumplir) influyen en la distribuci&oacute;n.</p>';
vGuias[1] = '<p><strong class="fonts13">Paso 1:</strong> Despu&eacute;s de hacer la selecci&oacute;n en el paso 1, pulsa <strong>Ver Fechas</strong> para ver las fechas disponibles en el calendario del<br />paso 2.</p>';
vGuias[2] = '<p><strong class="fonts13">Paso 2:</strong> Para ver los precios elige una fecha del calendario.</p><p>Te recordamos que <strong>los precios son por persona</strong>.</p>';
vGuias[3] = '<p><strong class="fonts13">Paso 3:</strong> En la tabla de alojamientos te mostramos el presupuesto Total seg&uacute;n tu elecci&oacute;n.</p><p>(Precio final para todos los pasajeros)</p>';

jFechas = new Atrapalo.viajes.fechas();
jInfo=new Atrapalo.viajes.ficha();
jFrm = new Atrapalo.viajes.frmviaje();
jExtras=new Atrapalo.viajes.extras();
