var tipo = "";
var precio = "";
var fecha = "";
var max = 0;
var total = 0;
var min_precio = 0;
var dia = 0;
var mes = 0;
var anyo = 0;
var tab1 = 0;
var tab2 = 0;
var cont = 0;
var idx = 0;
var esResidente = true;
var esSoloIda = false;

var dias = new Array("Domingo", "Lunes", "Martes", "Mi&eacute;rcoles", "Jueves", "Viernes", "S&aacute;bado");
var meses = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");

var myDate = new Date();

$(window).load(function(){
	// Obtenemos los datos de la p�gina.
	var origen = $("#origen").val();
	var destino = $("#destino").val();
	var origentxt = $("#origentxt_ida").val();
	var destinotxt = $("#destinotxt_ida").val();
	
	/*
	 * Funciones para las las pesta�as.
	 */
	$("div.listaofertas").tabs();
	$("div.listaofertas").triggerTab(1);
	
	/*
	 * Funciones para las barras.
	 */
	$("div.box_bars").find("li:not(.select_opacity)").hover(function(){
		$(this).find("div.bar").addClass("hover");
	}, function(){
		$(this).find("div.bar").removeClass("hover");
	}).click(function(){
		// Eventos para el click. Siempre que no sea una barra bloqueada.
		if (!$(this).hasClass("select_opacity")) {
			// Actualizamos la variable de tipo de vuelo.
			esSoloIda = ($("#soloida").val() == "ida");
			if ($("#vuelta").is(":hidden")) {
				esSoloIda = true;
			}
			// Actualizamos la variable de residente.
			if ($("div.residente").is(":visible")) {
				if ($("#residente").length > 0) {
					esResidente = ($("#residente").val() == "S");
				} else if ($("#esResidente").length > 0) {
					esResidente = ($("#esResidente").val() == "S");
				}
			}
			// Marcamos el radio-button de la barra sobre la que pulsamos.
			$("#" + $(this).find("label").attr("for")).click();
			// Eliminamos las selecciones anteriores de la pesta�a actual.
			$(this).siblings().find("div.bar").removeClass("select");
			// Eliminamos las selecciones anteriores de las otras pesta�as.
			$(this).parents("div.tabs-container").siblings().find("div.bar").removeClass("select");
			// Marcamos la barra actual.
			$(this).find("div.bar").addClass("select");
			// Limpiamos las vueltas si marcamos una ida anterior.
			$(this).parents("div.listaofertas").nextAll("div.listaofertas").find("div.box_bars").find("li").removeClass("select_opacity");
			
			/*
			 * Bloqueamos las vueltas anteriores a la ida.
			 * 
			 * Obtenemos el �ndice de la barra que seleccionamos.
			 * Obtenemos los 'li' de las vueltas.
			 * Bloqueamos cada 'li' anterior al �ndice de la barra seleccionada.
			 */
			max = $("div.box_bars").find("li").index(this);
			var $siguiente = $(this).parents("div.listaofertas").nextAll("div.listaofertas").find("div.box_bars").find("li");
			$siguiente.each(function(){
				if ($siguiente.index(this) < max) {
					$(this).addClass("select_opacity");
				}
			});
			
			// Obtenemos el tipo (ida o vuelta) de la barra seleccionada.
			tipo = $(this).parents("div.box_bars").attr("id");
			// Obtenemos el tooltip que contiene los datos.
			var $tooltip = $(this).find("div.tooltip");
			// Obtenemos el precio asociado a la barra.
			precio = $tooltip.children("span.price").html();
			
			/*
			 * Montamos la caja lateral con la informaci�n.
			 * 
			 * Borramos los datos anteriores.
			 * Si tenemos percio, montamos la estructura de la caja con la informaci�n.
			 */
			$("#precio_"+tipo+", #info_"+tipo+" > li.od_info").remove();
			if ((precio != null) && (precio != "")) {
				// Obtenemos la fecha de la barra y le damos formato.
				fecha = $(this).find("input:radio").val();
				dia = parseInt(fecha.split("/")[0], 10);
				mes = parseInt(fecha.split("/")[1], 10) - 1;
				anyo = parseInt(fecha.split("/")[2]);
				myDate.setFullYear(anyo, mes, dia);
				$("#info_"+tipo).append("<li class=\"od_info\"><strong>"+origentxt+" - "+destinotxt+"</strong></li>");
				$("#info_"+tipo).append("<li class=\"od_info\">"+dias[myDate.getDay()]+" "+fecha.split("/")[0]+" de "+meses[mes]+"</li>");
				$("#info_"+tipo).append("<li class=\"od_info\">"+$tooltip.children("span.data").next().html()+"</li>");
				$("#msg_"+tipo).hide().after("<div class=\"precio\" id=\"precio_"+tipo+"\"><span>"+precio+"</span></div>");
			} else {
				$("#msg_"+tipo).show().html("<p>Actualmente no disponemos de precios orientativos para este d&iacute;a.</p>");
			}
			
			/*
			 * Calculamos los precios.
			 * 
			 * Si el vuelo es de s�lo ida.
			 * 		Cogemos el precio del radio-button marcado.
			 * 		Ponemos el contador a 3 para pasar las validaciones posteriores.
			 * 
			 * Si el vuelo es de ida y vuelta.
			 * 		Cogemos todos los radio-button marcados y sumamos su precio.
			 * 		Incrementamos el contador con cada suma.
			 */
			if (esSoloIda) {
				total = parseFloat($("#ida").find("input:radio:checked").parent().siblings("div.tooltip").find("span.price").text().replace(/,/g, '.'));
				if (isNaN(total)) {
					total = 0;
				}
				cont = 3;
			} else {
				$("div.listaofertas").find("input:radio:checked").parent().siblings("div.tooltip").find("span.price").each(function(){
					total = total + parseFloat($(this).text().replace(/,/g, '.'));
					cont++;
				});
			}
			
			/*
			 * Actualizamos el importe total.
			 * 
			 * Definimos el texto.
			 * Cambiamos el texto a plural si se necesita.
			 * Insertamos el texto actualizado en la p�gina.
			 * Si el precio no es 0.
			 * 		Y tenemos m�s de una barra marcada para ida y vuelta.
			 * 		O tenemos una marcada para s�lo ida.
			 * 		C�culamos el precio en funci�n de los adultos y del residente.
			 * Si no, ponemos ? en el lugar del importe.
			 */
			var txt = "Total estimado " + $("#adultos").val() + " adulto";
			if (parseInt($("#adultos").val()) > 1) { txt += "s"; }
			$("div.right").children("strong").html(txt);
			if ((total != 0) && (cont > 1)) {
				total = total * parseInt($("#adultos").val());
				if (!esResidente) { total = total * 2; }
				$("div.right").children("h4").html(parseFloat(total.toFixed(2))+"&euro;");
			} else {
				$("div.right").children("h4").html("? &euro;");
			}
			
			// Reiniciamos las variables para el c�lculo de precios.
			total = 0;
			cont = 0;
			
			/*
			 * Si se trata de una ida y vuelta, actualizamos la pesta�a seleccionada en las vueltas.
			 * 
			 * Obtenemos el �ndice de la pesta�a marcada arriba y abajo.
			 * Si el �ndice de abajo es inferior al de arriba, marcamos abajo el mismo �ndice que arriba.
			 * Si el �ndice de las idas es mayor al de las vueltas marcamos una vuelta posterior.
			 */
			if (!esSoloIda && (tipo.indexOf("ida") != -1)) {
				tab1 = parseInt($("ul.tabs-nav:first > li").index($("ul.tabs-nav:first > li.tabs-selected")));
				tab2 = parseInt($("ul.tabs-nav:last > li").index($("ul.tabs-nav:last > li.tabs-selected")));
				if (tab2 < tab1) {
					$("div.listaofertas:last").triggerTab(tab1 + 1);
					$("div.listaofertas:last").find("li.select_opacity:last").nextAll(":eq(2)").click();
				} else if (tab2 == tab1) {
					/*
					 * Obtenemos el �ndice de la barra marcada en las vueltas.
					 * Si no hay ninguna vuelta marcada.
					 * 		Marcamos una posterior a las bloqueadas.
					 * Si la vuelta es posterior a la ida.
					 * 		Marcamos una vuelta posterior a la ida.
					 */
					idx = $siguiente.index($siguiente.filter(":has('div.select')"));
					if ((max > idx) || (idx == -1)) {
						if (idx == -1) {
							$siguiente.filter(".select_opacity:last").nextAll(":eq(2)").click();
						} else {
							$siguiente.filter(":has('div.select')").nextAll(":eq(2)").click();
						}
					}
				}
			}
		}
	}).tooltip({
		track: true,
		showURL: false,
		delay: 0,
		extraClass: "tooltip", 
		bodyHandler: function() {
			return $(this).find("div.tooltip").html();
		}
	});
	
	/*
	 * Inicializamos las barras marcando un dia de ida.
	 * 		La vuelta se marca con la funci�n del click de la ida.
	 * 
	 * Seleccionamos el contenedor de las barras de ida.
	 * Si el �ndice de la barra de ida es menor al d�a 30 del mes (los �ndices empiezan en 0).
	 * 		Marcamos la barra sin tener nada m�s en cuenta.
	 * Si no.
	 * 		Cambiamos a la segunda pesta�a y marcamos el primer d�a.
	 */
	var $checkIda = $("div.listaofertas:first").find("div.tabs-container:first").find("div.box_bars:first");
	if ($checkIda.find("li").index($checkIda.find("li.select_opacity:last").next()) < 29) {
		$checkIda.find("li.select_opacity:last").next().click();
	} else {
		$("div.listaofertas:first").triggerTab(2);
		$("div.listaofertas:first").find("div.tabs-container:eq(0)").find("div.box_bars:first").find("li:first").click();
	}
	
	/*
	 * Funcionalidad del checkbox de tipo de vuelo s�lo ida / ida y vuelta.
	 *
	 * Si es un vuelo de s�lo ida.
	 * 		Cambiamos su valor a ida y vuelta.
	 * 		Actualizamos las variables.
	 * 		Mostramos el vuelo de vuelta.
	 * Si es un vuelo de ida y vuelta.
	 * 		Cambiamos su valor a s�lo ida.
	 * 		Actualizamos las variables.
	 * 		Ocultamos el vuelo de vuelta.
	 * Actualizamos el importe total haciendo click en la barra de la ida.
	 */
	var $paso3 = $("div.seleccion_pasajeros > h3.pad10");
	$("#soloida").bind("click", function(){
		if ($(this).val() == "ida") {
			$(this).val("idayvuelta");
			this.checked == false;
			esSoloIda = false;
			$("#vuelta").show();
			$paso3.html($paso3.html().replace(/2. /, "3. "));
			$("#vuelta").prev().find("h3").css("visibility", "visible");
		} else {
			$(this).val("ida");
			this.checked == true;
			esSoloIda = true;
			$("#vuelta").hide();
			$paso3.html($paso3.html().replace(/3. /, "2. "));
			$("#vuelta").prev().find("h3").css("visibility", "hidden");
		}
		$("div.listaofertas").find("input:radio:checked").parents("li").click();
	});
	
	/*
	 * Funcionalidad del checkbox de residente.
	 * 
	 * Si es residente.
	 * 		Cambiamos el valor a no residente.
	 * 		Actualizamos el precio multiplic�ndolo por 2.
	 * 		Actualizamos las variables.
	 * Si no es residente.
	 * 		Cambiamos el valor a residente.
	 * 		Actualizamos el precio dividi�ndolo por 2.
	 * 		Actualizamos las variables.
	 */
	$("#residente").bind("click", function(){
		var $precio = $("div.right").children("h4");
		if ($(this).val() == "S") {
			$(this).val("N");
			this.checked == false;
			if (esResidente) {
				$precio.html(parseFloat((parseFloat($precio.html())*2).toFixed(2))+"&euro;");
				esResidente = false;
			}
		} else {
			$(this).val("S");
			this.checked == true;
			if (!esResidente) {
				$precio.html(parseFloat((parseFloat($precio.html())/2).toFixed(2))+"&euro;");
				esResidente = true;
			}
		}
		if (($precio.html()).indexOf("NaN") != -1) {
			$precio.html("? &euro;");
		}
		if (($precio.html()).indexOf("?") != -1) {
			esResidente = true;
		}
	});
	
	// Recalculamos el precio en funci�n de los adultos.
	$("#adultos").change(function(){
		$("div.listaofertas:last").find("div.box_bars").find("input:radio:checked").parents("li").click();
	});
});
