var arrayFechasInactivas = new Array();
var productosSesion = null;

var tiempoAnimacionPasos = 1500;

var zonasRecinto = null;
var listaButacasSeleccionadas = new Array();
var numEntradasSeleccionadas = 0;
var zonaPlano = null;
var permiteButacasSeparadas = false;

var SALDO_MOSTRAR_ULTIMAS_ENTRADAS_CODIGO_DESCUENTO = 200;

var ObjCompra = { Propiedades : {} };

ObjCompra.Propiedades.Clase = function() {
  this.idRecinto = null;
//  this.idSala = null;
  this.idEvento = null;
  this.sesion = null;
  this.zona = null;
  this.entradasSeleccionadas = new Array();
};

var miCompra;
var venta = null;

var tarjetaFidelizacion = null;
var promoFidelizacion = null;
var hayFidelizacion = false;
var loyaltyCardNotApplied = null;



var minFecha = null;
var maxFecha = null;

var zonaNumerada;
var idContPlano = "chart";

var pidiendoDatosAdicionales = false;

var paginaInicializada = false;

var buyerAditionalData = new Array();

var selectedGroupPromotion = null;

var selectedGroupPromotionId = null;

var sessionSelectedPurchase = null;

var arrayFechas = null;
var datesPromoLabelArray = null;
var temporalOrderID = 0;

/*
Modo de visualizacion

a. Mostrar circunferecia
	a1. mostrar butacas disponibles
	a1b. mostrar butacas cuando queden menos de X
	a2. mostrar porcentaje
	a3 no mostrar nada dentro
b. Mostrar punto de color (nivel ocupación)
c. No mostrar nada
*/

// a
var mostrarCirculoGrafico = false;
	//a1
	var mostrarAsientosDisponibles = false;
	//a1b
	var mostrarAsientosAPartirDe = 0;
	//a1c
	var mostrarAsientosAPartirDePorcentaje = 0;
	//a2
	var mostrarPorcentajeDisponible = false;

// b
var mostrarCirculoColor = false;


$(document).foundation();

//TODO: Ojo, hay un problema con los ifrmaes y el widget
//recalcular al rotar
/*
$(window).bind("orientationchange", function(){
	establecerAlturaElementosCompra();
	establecerAlturaMapas();
	rotarPlanoMobile();
});

//recalcular al cambiar tamaño de ventana
$(window).on("resize", function() {
	setTimeout(function(){
		establecerAlturaElementosCompra();
		establecerAlturaMapas();
	}, 1000);

});
*/

function saltarAContenedor(idDestino){
    var target = $('[id=' + idDestino +']');
    var htarget = target.outerHeight();
    var hpantalla = $(window).height();
    var hbarra = $(".bar_action").innerHeight();
    if (target.length) {
    	var cordFinal = target.offset().top;
    	if(hpantalla > htarget)
    	{
    		cordFinal = cordFinal - (((hpantalla-hbarra) - htarget) / 2);
    	}

      $('html,body').animate({
        scrollTop: cordFinal
      }, 500);
      return false;
    }
}


function procesarYPintarSesiones()
{
	procesarSesiones();
	setSesionsCalendar();
	if(solicitudPreseleccionCompleta == false || solicitudPreseleccionCompleta == null || solicitudPreseleccionCompleta == undefined){
		cerrarVentanaEspera();
	}
}


function seleccionarSesion()
{
	if(modoEventoSinFecha || modoSinSeleccionFecha)
	{
		//Seleccionamos la sesion
		seleccionadaSesion(idSesionPreseleccionada);
	}
	else if(modoCalendario)
	{
		var fecha = obtenerFechaSesion(idSesionPreseleccionada);
		if(fecha != null && fecha.indexOf("-") != -1)
		{
			var paramFecha = fecha.split("-");
			var dia = paramFecha[2];
			var mes = parseInt(paramFecha[1]) - 1;
			var anyo = paramFecha[0];
			var hora = paramFecha[3];

			//marcamos la fecha seleccionada
			setTimeout(function(){
				var elemento = $("[data-year='" + anyo + "'][data-month='" + mes + "'][data-date='" + dia + "']");
				elemento.addClass("xdsoft_current");
			}, 200)
			

			generarCodigoHorasSesion(anyo+"-"+paramFecha[1]+"-"+dia);

			//Seleccionamos la sesion
			seleccionadaSesion(idSesionPreseleccionada);

			//marcamos la hora seleccionada
			setTimeout(function(){
				//var idhora = hora.replace(":", "");
				$(".boton-sesion-hora-elem").removeClass("hora-seleccionado");
				$('#hora'+idSesionPreseleccionada+'-movil').addClass("hora-seleccionado");
				$('#hora'+idSesionPreseleccionada+'-desktop').addClass("hora-seleccionado");
				}, 300);

		}
	}
	else
	{
		seleccionadaSesion(idSesionPreseleccionada);
		setTimeout(function(){
			$('#sesion_'+idSesionPreseleccionada+ ' input[type="radio"]').prop('checked', true);
		}, 500);
	}
}

function preseleccionaCompra()
{
	if (idZonasPreseleccionadas != null && idZonasPreseleccionadas[0] != null && idProductosPreseleccionados != null && idProductosPreseleccionados[0] != null && cantidadesPreseleccionados != null && cantidadesPreseleccionados[0] != null)
	{
		if(productosSesion == null)
		{
			setTimeout(function()
			{
				preseleccionaCompra();
			}, 200);
			return;
		}
		for (var iCont = 0; iCont < idZonasPreseleccionadas.length; iCont++)
		{
			seleccionadaZona(idZonasPreseleccionadas[iCont], true);
			setEntradas(cantidadesPreseleccionados[iCont], true, idZonasPreseleccionadas[iCont], idProductosPreseleccionados[iCont]);
		}
		registrarCompra();
	}
	else
	{
		if (idZonasPreseleccionadas != null && idZonasPreseleccionadas[0] != null)
		{
			seleccionadaZona(idZonasPreseleccionadas[0]);
			if (idProductosPreseleccionados != null && idProductosPreseleccionados[0] != null  && cantidadesPreseleccionados != null && cantidadesPreseleccionados[0] != null)
			{
				setEntradas(cantidadesPreseleccionados[0], true, idZonasPreseleccionadas[0], idProductosPreseleccionados[0]);
			}
		}
	}
}

function procesarSesiones()
{
	if (arraySesiones != null && arraySesiones.length > 0)
	{
		var arrayTodasFechas = new Array();
		var datesPromoLabelArrayAll = new Array();

		for (var j=0; j < arraySesiones.length; j++)
		{
			var ses = arraySesiones[j];
			if (!ses.utilizaLitSesion)
			{
				ses.litSesion = formatLongDateTimeWithDay(ses.fechaCelebracionStr);
			}
			else
			{
				var litsessionTmp = getObjNameMultiLang(OBJ_TYPES_MULTILNG.SESSIONS, ses.idSesion);
				if (litsessionTmp != undefined)
				{
					ses.litSesion =	litsessionTmp;
				}
			}
			
			if (ses.promotionalSessionLabel != undefined && ses.promotionalSessionLabel != null && ses.promotionalSessionLabel != "" && ses.promotionalSessionLabel != "null")
			{
				var promoSessionLabTmp = getObjNameMultiLang(OBJ_TYPES_MULTILNG.PROMOTIONAL_SESSION_LABEL, ses.idSesion);
				if (promoSessionLabTmp != undefined)
				{
					ses.promotionalSessionLabel =	promoSessionLabTmp;
				}
			}
			

			ses.fecha = formatIsoDate(ses.fechaCelebracionStr);

			if (minFecha == null || minFecha > ses.fechaCelebracionStr)
				minFecha = ses.fechaCelebracionStr;

			if (maxFecha == null || maxFecha < ses.fechaCelebracionStr)
				maxFecha = ses.fechaCelebracionStr;

			
			//Promotional session label array
			if(ses.promotionalSessionLabel != null && ses.promotionalSessionLabel != "") 
        	{
        		var itemObj = new Object;
				itemObj.dateStr = ses.fecha;
				itemObj.promotionalSessionLabel = ses.promotionalSessionLabel;
				datesPromoLabelArrayAll.push(itemObj);
        	}
			
			arrayTodasFechas.push(ses.fecha);
		}

		arrayTodasFechas.sort();

		// Eliminar las fechas duplicadas
		arrayFechas = [arrayTodasFechas[0]];
	    for (var i = 1; i < arrayTodasFechas.length; i++)
	    {
	        if (arrayTodasFechas[i-1] != arrayTodasFechas[i])
	        {
	        	arrayFechas.push(arrayTodasFechas[i]);
	        }
	    }
	    
	    // Remove duplicates (give the first)
	    datesPromoLabelArray = [datesPromoLabelArrayAll[0]];
 	    for (var z = 1; z < datesPromoLabelArrayAll.length; z++)
 	    {
 	        if (datesPromoLabelArrayAll[z-1] != datesPromoLabelArrayAll[z])
 	        {
 	        	datesPromoLabelArray.push(datesPromoLabelArrayAll[z]);
 	        }
 	    }
	    
	    
	    

	    // Se buscan las fechas intermedias sin programación, para desactivarlas
		if(modoCalendario)
		{
			var maxDatePos = arrayFechas.length-1;

			var fInicial = arrayFechas[0];
			var fFinal = arrayFechas[maxDatePos];

			if (fInicial != fFinal)
			{
				var fecha = parseIsoDateTime(fInicial);
				var fechaFinal = parseIsoDateTime(fFinal);

				while (fecha < fechaFinal)
				{
//					fecha.setDate(fecha.getDate() + 1);
					fecha =fecha.add(1, 'days');
					var fIso = formatIsoDate(fecha);

					if ($.inArray(fIso, arrayFechas) < 0)
						arrayFechasInactivas.push(fIso);
				}
			}
		}
	}
}


function setSesionsCalendar()
{
	//modo calendario
	if(modoCalendario)
	{
		var maxDatePos = arrayFechas.length-1;
		var yearStart = arrayFechas[0].substring(0,4);
		var yearEnd = arrayFechas[maxDatePos].substring(0,4);

		var minMonth = parseIsoDateTime(arrayFechas[0]);
		var maxMonth = parseIsoDateTime(arrayFechas[maxDatePos]);

		minMonth = new Date(getFullYear(minMonth), getMonth(minMonth) - 1, 1);
		maxMonth = new Date(getFullYear(maxMonth), getMonth(maxMonth), 0, 23, 59, 59);

		var monthStart = 0;
		var monthEnd = 11;

		if (yearStart == yearEnd)
		{
			monthStart = getMonth(minMonth);
			monthEnd = getMonth(maxMonth);
		}

		$.datetimepicker.setLocale(idioma.replace(/_.*/g, ""));

		$("#datetimepicker").val('');
		
		/*
		var datesPromoArray = [];
		for (var y=0; y < arrayFechas.length; y++)
		{	
			var item = arrayFechas[y];
			var itemObj = new Object;
			itemObj.dateStr = item;
			itemObj.promotionalSessionLabel = "Tiene oferta";
			datesPromoArray.push(itemObj);
		}
		*/
		
		
		$("#datetimepicker").datetimepicker({
			format:'Y-m-d',
			formatDate:'Y-m-d',
			defaultSelect: false,
			inline:true,
			timepicker: false,
			minDate: arrayFechas[0].replace("-", "/"),
			maxDate: arrayFechas[maxDatePos].replace("-", "/"),
			minMonth: minMonth,
			maxMonth: maxMonth,
			startDate: arrayFechas[0],
			dayOfWeekStart: 1,
			yearStart: yearStart,
			yearEnd: yearEnd,
			monthStart: monthStart,
			monthEnd: monthEnd,
			scrollMonth: true,
			todayButton: false,
			disabledDates: arrayFechasInactivas,
			onSelectDate: seleccionadaFecha,
			datesPromoLabel: datesPromoLabelArray
	    });
	}
	// modo lista
	else
	{
		var codigo = "";
		for (var t=0; t < arraySesiones.length; t++)
		{
			var sesion = arraySesiones[t];
			var idSesion = sesion.idSesion;
			
									
			var litStreaming = "";
			if(sesion.streamingOnly)
			{
				litStreaming = "<div class='tag-event'>"+polyglot.t('Online')+"</div> ";
			}
			
			var promoLabel = "";
			if(sesion.promotionalSessionLabel != null && sesion.promotionalSessionLabel != "")
			{
				promoLabel = " <div class='tag-event promo-session-label'>"+sesion.promotionalSessionLabel+"</div> ";
			}
			
			litSesion = litStreaming + sesion.litSesion + promoLabel;
			
			
			codigo += "<label class='radio' id='sesion_"+idSesion+"' onclick='seleccionadaSesion("+idSesion+"); return false;'><input type='radio' name='sesion' value='"+idSesion+"' id='sesion_"+idSesion+"'><span class='outer'><span class='inner'></span></span>"+litSesion+"</label>";
		}

		$("#ulSesiones").html(codigo);
	}

	$("#fechas").show();

}


function seleccionadaFecha(fecha)
{
	var fchSeleccionada = formatIsoDate(fecha);

	//informacion a la barra general
	var strFecha = formatLongDateTimeWithDay(fecha);
	var strHora = formatTime(fecha);

	// Fecha sin la hora
	strFecha = strFecha.replace(strHora, "");

	barraFecha(strFecha);

	//mostramos conto cambiar fecha
	$(".enlaceCambFechaH2").show();
	$("#fechas").hide();

	generarCodigoHorasSesion(fchSeleccionada);

	setTimeout(function(){
		saltarAContenedor("cab_horas");
	},"500");

	registrarPaginaGA(2);
}

function displayHours(ref, filterHour)
{
	$('#contenedor-filtro-horas-desktop .hora-seleccionado').removeClass('hora-seleccionado');
	$('#contenedor-filtro-horas-movil .hora-seleccionado').removeClass('hora-seleccionado');
	$(ref).addClass('hora-seleccionado');

	$('[data-hour]').hide();
	$('[data-hour="'+filterHour+'"]').show();
}

function generarCodigoHorasSesion(fchSeleccionada)
{
	// limpiar filtro de franjas horarias
	$('#contenedor-filtro-horas-desktop').html('');
	$('#contenedor-filtro-horas-movil').html('');

	var codigo="";
	var codigoMovil="";

	// codigo del filtro de franjas horarias
	var codigoFilter="";
	var codigoMovilFilter="";

	// lista de horas del filtro de franjas horarias
	var uniqueFilterHours = [];

	var contadorHorasDia = 0;
	for (var t=0; t < arraySesiones.length; t++)
	{
		var sesion = arraySesiones[t];

		if(fchSeleccionada == sesion.fecha)
		{
			contadorHorasDia++;
			var horaSesion = formatTime(sesion.fechaCelebracionStr);

			// obtener la franja horaria
			var filterHour = horaSesion.split(':');
			filterHour = filterHour[0];

			// franja horaria no existe todavia
			var uniqueFilterHourIndex = uniqueFilterHours.indexOf(filterHour);
			if ( uniqueFilterHourIndex === -1 )
			{
				uniqueFilterHours.push( filterHour );

				codigoFilter += "<a class='button radius tiny boton-sesion-hora-elem' onclick='displayHours(this, \""+filterHour+"\")' >"+filterHour+":XX</a>";
				codigoMovilFilter += "<div class='swiper-slide sesion-hora'><a onclick='displayHours(this, \""+filterHour+"\")' class='button radius tiny boton-sesion-hora-elem'>"+filterHour+":00</a></div>";
			}

			var disponibilidad = true;
			if(sesion.aforo != null)
			{
				var av = sesion.entradasVendidas;
				var ar = sesion.entradasReservadas;
				var ab = sesion.entradasBloqueadas;
				var aaforo = sesion.aforo;
				var aNod = av+ar+ab;
				var ad = aaforo-aNod;
				var porOcupacion = (100*ad)/aaforo;
				if(porOcupacion==0){
					disponibilidad = false;
				}
			}

			if (sesion.utilizaLitSesion)
			{
				horaSesion = sesion.litSesion;
			}


			var claseDisponible = "";
			if(disponibilidad == false)
			{
				claseDisponible = "disabled";
			}
			
			var litHoraSesion = "";
			if(sesion.streamingOnly)
			{
				litHoraSesion = '<div class="tag-event">'+polyglot.t("Online")+'</div>' + horaSesion;
			}
			else
			{
				litHoraSesion = horaSesion;
			}

			codigo += "<a data-hour='"+filterHour+"' class='button radius tiny boton-sesion-hora-elem "+claseDisponible+"' ";
			if(disponibilidad)
			{
				codigo += " onclick='seleccionadaSesion("+sesion.idSesion+")' ";
			}
			else
			{
				codigo += " onclick='return false' title='"+polyglot.t("Sold_out_(tickets)")+"' ";
			}
			codigo += " id='hora"+sesion.idSesion+"-desktop'>" + litHoraSesion;
			
			if(sesion.promotionalSessionLabel != null && sesion.promotionalSessionLabel != "")
			{
				codigo += " <div class='tag-event promo-session-label promo-session-in-button'><i class=\"palco4icon palco4icon-alert-polygon\"></i>"+sesion.promotionalSessionLabel+"</div> ";
			}
			
			codigo += "</a>";
			

			if (sesion.utilizaLitSesion)
				codigo += "<br />";


			codigoMovil += "<div data-hour='"+filterHour+"' class='swiper-slide sesion-hora'><a class='button radius tiny boton-sesion-hora-elem' ";
			if(disponibilidad)
			{
				codigoMovil += " onclick='seleccionadaSesion("+sesion.idSesion+")' ";
			}
			else
			{
				codigoMovil += " onclick='return false' title='"+polyglot.t("Sold_out_(tickets)")+"' ";
			}
			codigoMovil += " id='hora"+sesion.idSesion+"-movil'>"+litHoraSesion+"</a></div>";

		}
	}

	//Si solo hay una la seleccionamos automaticamente
	if(contadorHorasDia == 1)
	{

		var idSesion = null;
		for (var t=0; t < arraySesiones.length; t++)
		{
			var sesion = arraySesiones[t];
			if(fchSeleccionada == sesion.fecha)
			{
				idSesion = sesion.idSesion;
			}
		}

		//ocultamos contenedor de horas
		$("#cab_horas").hide();

		seleccionadaSesion(idSesion);
		//clc groupPromotionUp
		//$("#zonas").show();

	}
	else
	{
		//mostramos contenedor de horas
		$("#cab_horas").show();

		//$("#ulHoras").html(codigo);
		$("#contenedor-horas-desktop").html(codigo);
		$("#contenedor-horas-movil").html(codigoMovil);

		$('#contenedor-filtro-horas-desktop').html(codigoFilter);
		$('#contenedor-filtro-horas-movil').html(codigoMovilFilter);

		$("#horas").show();

		if(contadorHorasDia >= 6)
		{
			var swiper = new Swiper('.swiper-container', {
		        scrollbar: '.swiper-scrollbar',
			    scrollbarHide: true,
			    slidesPerView: 'auto',
			    centeredSlides: false,
			    spaceBetween: 0,
			    grabCursor: true,
			    scrollbarDraggable: true
		    });

			$(".swiper-scrollbar").show();
		}
		else
		{
			$(".swiper-scrollbar").hide();
		}

		//ocultamos el boton cambiar
		$(".enlaceCambHoraH2").hide();
		$("#zonas").hide();

		// mostrar filtros si: +12 sesiones AND hay mas de 1 sesion por franja horaria
		if ( contadorHorasDia > 12 && ( contadorHorasDia / uniqueFilterHours.length ) > 1 )
		{
			// mostrar filtro
			$('.filtro-horas').removeClass('hide');

			// esconder elementos
			$('[data-hour]').hide();
		}
		else
		{
			// esconder filtro
			$('.filtro-horas').addClass('hide');

			// mostrar elementos
			$('[data-hour]').show();
		}
	}

	$("#precioEntradas").hide();
	$("#cab_planoSeleccion").hide();
	hideLoyalty();
	//new
	$("#link-modal-loyalty-content").hide();
	$("#datosAdicionales").hide();
	pidiendoDatosAdicionales = false;
}

function obtenerFechaSesion(idSesion)
{
	for (var t=0; t < arraySesiones.length; t++)
	{
		var sesion = arraySesiones[t];
		if(idSesion == sesion.idSesion)
		{
			var fchSesion = sesion.fecha;
			var horaSesion = formatTime(sesion.fechaCelebracionStr);
			fchSesion += "-" + horaSesion;
			return fchSesion;
		}
	}
}


function seleccionadaSesion(idSesion)
{
	crearVentanaEspera();

	borrarCacheTooltip();

	$(".boton-sesion-hora-elem").removeClass("hora-seleccionado");
	$('#hora'+idSesion+'-movil').addClass("hora-seleccionado");
	$('#hora'+idSesion+'-desktop').addClass("hora-seleccionado");
	
	let previousSession = sessionSelectedPurchase;

	var objSesion = getSesionFromLista(idSesion, arraySesiones);
	sessionSelectedPurchase = objSesion;
	if (previousSession == null)
	{
		let idHallPrevious = rutaMapa.substring(rutaMapa.indexOf("_") + 1, rutaMapa.lastIndexOf("/"));
		if (idHallPrevious != sessionSelectedPurchase.idSala)
		{
			selectedSessionAfterComprobation(true);
		}
		else
		{
			selectedSessionAfterComprobation(false);
		}
	}
	else
	{
		if (previousSession.idSala != sessionSelectedPurchase.idSala)
		{		
			CompraAjax.checkIfItsNewSvgMap(sessionSelectedPurchase.idRecinto, sessionSelectedPurchase.idSala, selectedSessionAfterComprobation)
		}
		else
		{
			selectedSessionAfterComprobation(false);
		}
	}
}

function selectedSessionAfterComprobation(needReload)
{
	if (needReload)
	{
		let url = location.href.substring(0, location.href.indexOf('?'));
		location.href = url + "?idEvento="+sessionSelectedPurchase.idEvento+"&idSesion="+sessionSelectedPurchase.idSesion;
	}
	else
	{
		var typeSesionTag = '';
		if(sessionSelectedPurchase.streamingOnly)
		{
			typeSesionTag = '<div class="tag-event">'+polyglot.t("Online")+'</div>';
		}	
		
		if(modoEventoSinFecha)
		{
			$(".barraSesion").hide();
		}
		else if(sessionSelectedPurchase.utilizaLitSesion != null && sessionSelectedPurchase.utilizaLitSesion)
		{
			barraFecha(typeSesionTag + sessionSelectedPurchase.litSesion);
		}
		else
		{
			barraFecha(typeSesionTag + formatLongDateTimeWithDay(parseIsoDateTime(sessionSelectedPurchase.fechaCelebracionStr)));
		}
	
		//mostramos boton cambiar
		if(modoSinSeleccionFecha || modoEventoSinFecha || idSesionPreseleccionada!=null && comesFromPackage != null && comesFromPackage)
		{
			$("#cab_fecha").hide();
			$("#cab_horas").hide();
		}
		else
		{
			$(".enlaceCambFechaH2").show();
			$("#fechas").hide();
			$(".enlaceCambHoraH2").show();
			$("#horas").hide();
		}
	
		miCompra.sesion = sessionSelectedPurchase;
	
		if ((groupPromotions != null && groupPromotions.length > 0) || (groupPromotionsUp != null && groupPromotionsUp.length > 0))
		{
			var idPriceTemplates = new Array();
			idPriceTemplates.push(miCompra.sesion.idPlantillaEntradas);
			CompraAjax.getGroupPromotionsSession(idPriceTemplates, showGroupPromotions);
		}
	
	
		//Si No hay promociones de tipo Up no desplegamos el contenedor de zonas y no hay preseleccion de sesion (Invitations)
		if((groupPromotionsUp != undefined
			&& groupPromotionsUp != null
			&& groupPromotionsUp.length > 0
			&& hasGroupPromotionsUpActives(groupPromotionsUp)) 
			&& (idSesionPreseleccionada == null || idSesionPreseleccionada == false)
		){
			// show Group Promotion Up
		}
		else
		{
			loadProductsSesionAndShowZoneSeleccion();
		}
	}
	
}

function hasGroupPromotionsUpActives(groupPromotionsUp)
{
	var hasActive = false;
	if(groupPromotionsUp != null)
	{
		for (var promo in groupPromotionsUp)
	    {
			var objPromo = groupPromotionsUp[promo];
			if(objPromo.active){
				hasActive = true;
			}
	    }
	}
	return hasActive;
}

function loadProductsSesionAndShowZoneSeleccion()
{
	CompraAjax.getProductosSesion(miCompra.sesion.idSesion, idCanal, generarZonasSesion);
	showZoneSeleccionStep();
}


function selectGroupPromotion(idGroupPromotion)
{
	//deselected promotion
	$(".promo-box").removeClass("selected");

	//deselect all promotions buttons
	var btn_promo = document.getElementById('btn-request-promo-up_'+idGroupPromotion);
	$('#btn-request-promo-up_'+idGroupPromotion).html(polyglot.t("Select"));
	$('#btn-request-promo-up_'+idGroupPromotion).removeClass("primary");
	$('#btn-request-promo-up_'+idGroupPromotion).addClass("terciary");


	//Remove promotion selected
	if(selectedGroupPromotionId != null && selectedGroupPromotionId == idGroupPromotion)
	{
		selectedGroupPromotionId = null;

		//change button Continue without promotion
		$("#continue-without-promo-btn").addClass("primary");
		$("#continue-without-promo-btn").removeClass("secondary");

		var litBtnLng = btn_promo.getAttribute('data-text-lng');
		$("#btn-request-promo-up_"+idGroupPromotion).html(litBtnLng);
		$("#btn-request-promo-up_"+idGroupPromotion).removeClass("terciary");
		$("#btn-request-promo-up_"+idGroupPromotion).addClass("primary");

		//TO NEXT STEP
		continueWithoutGroupPromotion();
	}
	else
	{
		//restore text last promo selected
		if(selectedGroupPromotionId != null && selectedGroupPromotionId != idGroupPromotion)
		{
			var btn_promo_last = document.getElementById('btn-request-promo-up_'+selectedGroupPromotionId);
			var litBtnLng = btn_promo_last.getAttribute('data-text-lng');
			$("#btn-request-promo-up_"+selectedGroupPromotionId).html(litBtnLng);
			$("#btn-request-promo-up_"+selectedGroupPromotionId).removeClass("terciary");
			$("#btn-request-promo-up_"+selectedGroupPromotionId).addClass("primary");
			selectedGroupPromotionId = null;
		}


		//button: set selected
		$("#btn-request-promo-up_"+idGroupPromotion).html(polyglot.t("Remove_group_promotion_up"));
		$("#btn-request-promo-up_"+idGroupPromotion).removeClass("primary");
		$("#btn-request-promo-up_"+idGroupPromotion).addClass("terciary");

		//change button Continue without promotion
		$("#continue-without-promo-btn").removeClass("primary");
		$("#continue-without-promo-btn").addClass("secondary");

		//icon banner
		$("#promo-box_"+idGroupPromotion).addClass("selected");

		//set promotion selected
		selectedGroupPromotionId = idGroupPromotion;

		//change Funcionality Of Buy Button
		setBuyButtonForGroupPromotion();

		//Show counter left in bar
		drawMinimumNumberTicketsLeft();

		//next step
		jumpToNextGroupPromotionSelected();

		//active Continue button?
		unblockGroupPromotionsButtons();

		//hide group promotion bottom
		$("#group-promotions-wrapper").hide();
	}
}

function setBuyButtonForGroupPromotion()
{
	//has a promo selected?
	if(selectedGroupPromotionId != null)
	{
		//hide bar button buy
		$("#bar_price_btn").hide();
		//show continue button
		$("#bar_continue_btn").show();
	}
}

function showZoneSeleccionStep()
{

	$("#zonas").show();
	$("#precioEntradas").hide();
	$("#cab_planoSeleccion").hide();
	$("#datosAdicionales").hide();
	pidiendoDatosAdicionales = false;

	registrarPaginaGA(3);

	$('#listaEntradas').html("");
	$('#datosAdicionales').html("");
	buyerAditionalData = new Array();

}

var listObjZonas = null;

function generarZonasSesion(prodSesion)
{
	productosSesion = prodSesion;

	//Si solo hay una zona: saltar paso y no mostrar contenedor.
	var soloUnaZona = (productosSesion != null && productosSesion.entradas != null && productosSesion.entradas.length == 1);
	hayFidelizacion = false;


	//Calcula si hay fidelización
	if (productosSesion.entradas != null)
	{
		for (var j=0; j<productosSesion.entradas.length; j++)
		{
			if (hayFidelizacion)
			{
				break;
			}

			var zona = productosSesion.entradas[j];
			for (var i=0; i < zona.precios.length; i++)
			{
				var precioZona = zona.precios[i];

				if (precioZona.fidePromocionMostrar != null || precioZona.fidePromocionRedimir != null || precioZona.fidePromocionAcumular != null)
				{
					hayFidelizacion = true;
					break;
				}
			}

		}
	}

	if (hayFidelizacion)
	{
		showLoyalty();
	}
	else
	{
		hideLoyalty();
	}

	if (modoSeleccionAsientos == ModoSeleccionAsiento.MODO_SELECCION_ASIENTO_PLANO)
	{
		$("#cab_planoSeleccion").show();

		if(solicitudPreseleccionCompleta == false || solicitudPreseleccionCompleta == null || solicitudPreseleccionCompleta == undefined){
			cerrarVentanaEspera();
		}

		$("#planoSeleccion").show();
		establecerAlturaMapas();

		seleccionarEntradas();
		
		listObjZonas = [];

		for (var i=0; i < productosSesion.entradas.length; i++)
		{
			var zona = productosSesion.entradas[i];
			zona.ordenDefecto = i;
			listObjZonas.push(zona);
		}
		
		return;
	}
	else if (soloUnaZona && !hayFidelizacion)
	{
		var zona = productosSesion.entradas[0];
		//ocultamos el contenedor de zona
		$("#cab_zonas").hide();
		//barraZona(zona.litZona, false);
		seleccionadaZona(zona.idZona);

		if(solicitudPreseleccionCompleta == false || solicitudPreseleccionCompleta == null || solicitudPreseleccionCompleta == undefined){
			cerrarVentanaEspera();
		}
	}
	else if (productosSesion != null && productosSesion.entradas != null && productosSesion.entradas.length > 0)
	{

		setTimeout(function(){
			saltarAContenedor("cab_zonas");
		},"100");


		listObjZonas = [];

		for (var i=0; i < productosSesion.entradas.length; i++)
		{
			var zona = productosSesion.entradas[i];
			zona.ordenDefecto = i;
			listObjZonas.push(zona);
		}

//		var ses = getObjetoPorId(prodSesion.idSesion, arraySesiones, 'idSesion');
		pintarZonasSesionLista();
		pintarZonasSesionMapa();

		//Si hay plano sensible
		if(modoPlanoSensible)
		{
			$("#cont-zonas-mapa").show();
			$("#cont-lista-zonas").hide();
			$("#btn-plano-zonas").addClass("btn-activo");
			$("#btn-lista-zonas").removeClass("btn-activo");
		}
		else
		{
			$("#cont-lista-zonas").show();
			$("#cont-zonas-mapa").hide();
			$("#btn-plano-zonas").removeClass("btn-activo");
			$("#btn-lista-zonas").addClass("btn-activo");
		}
		
		//Custom function to hide or show zones?
		if( typeof purchaseFlowCustomListZonesGenerated === 'function' )
		{
		    purchaseFlowCustomListZonesGenerated();
		}
	}
	else
	{
		// TODO Pintar mensaje de no hay disponibilidad
		$("#cont-lista-zonas").html("");
	}
	
	// Force promotions flow if configured
	if (hayFidelizacion && forcePromotionsFlow && preloadPromotionsAndShowLoyaltyModal)
	{
		setTimeout(function(){
			preloadPromotionsAndShowLoyaltyModal();
		}, 100);
	}
}



function nuevoProducto(producto, cantidad)
{
	var detalleVenta = new DetalleVenta();
	detalleVenta.idRecinto = miCompra.idRecinto;
	detalleVenta.idSala = miCompra.sesion.idSala;
	detalleVenta.idEvento = miCompra.idEvento;
	detalleVenta.idSesion = miCompra.sesion.idSesion;
	detalleVenta.fechaCelebracionStr = miCompra.sesion.fechaCelebracionStr;
	detalleVenta.litEventoSesion = miCompra.sesion.litEventoSesion;
	detalleVenta.idPlantillaPrecios = producto.idPlantillaPrecios;
	detalleVenta.idZona = producto.idZona;
	detalleVenta.litZona = producto.litZona;
	detalleVenta.idProducto = producto.idProducto;
	detalleVenta.litProducto = producto.litProducto;
	detalleVenta.idTipoProducto = producto.idTipoProducto;
	detalleVenta.litTipoProducto = producto.litTipoProducto;
	detalleVenta.esEntrada = producto.esEntrada;
	detalleVenta.idProductType = producto.idProductType;
	detalleVenta.importe = producto.precio;
	detalleVenta.precioOriginalOferta = producto.precioOriginalOferta;
	detalleVenta.importeComisionUsuario = producto.comisionUsuario;
	detalleVenta.importeTotal = producto.precio + producto.comisionUsuario;
	detalleVenta.temporalID = temporalOrderID++;

	if (producto.precio == 0)
	{
		detalleVenta.pctIva = 0;
		detalleVenta.iva = 0;
	}
	else
	{
		detalleVenta.pctIva = producto.iva;
		var baseImp = roundAmount( producto.precio / (1 + ( detalleVenta.pctIva / 100) ) );
		detalleVenta.iva = producto.precio - baseImp;
	}

	if (producto.comisionUsuario == 0)
	{
		detalleVenta.pctIvaComisionUsuario = 0;
		detalleVenta.ivaComisionUsuario = 0;
	}
	else
	{
		detalleVenta.pctIvaComisionUsuario = ivaComisionUsuario;
		var baseImpComisionUsuario = roundAmount( producto.comisionUsuario / (1 + ( ivaComisionUsuario / 100) ) );
		detalleVenta.ivaComisionUsuario = producto.comisionUsuario - baseImpComisionUsuario;
	}

	detalleVenta.cantidad = cantidad;
	detalleVenta.modificado = true;
	detalleVenta.registrado = false;
	detalleVenta.idEstado = 0;

	// Para paquetes
	detalleVenta.esPaquete = false;
	detalleVenta.esComponentePaquete = false;
	detalleVenta.esAbono = miCompra.sesion.isSeasonTickets;

	detalleVenta.numeroImpresiones = 0;

	detalleVenta.idCanalVenta = idCanal;


	manageLoyalty(detalleVenta, producto, tarjetaFidelizacion);

	return detalleVenta;
}


function cambiaProductoDetalleVenta(detalleVenta, producto)
{
	detalleVenta.idProducto = producto.idProducto;
	detalleVenta.litProducto = producto.litProducto;
	detalleVenta.idTipoProducto = producto.idTipoProducto;
	detalleVenta.litTipoProducto = producto.litTipoProducto;
	detalleVenta.esEntrada = producto.esEntrada;
	detalleVenta.importe = producto.precio;
	detalleVenta.precioOriginalOferta = producto.precioOriginalOferta;
	detalleVenta.importeComisionUsuario = producto.comisionUsuario;
	detalleVenta.importeTotal = producto.precio + producto.comisionUsuario;

	if (producto.precio == 0)
	{
		detalleVenta.pctIva = 0;
		detalleVenta.iva = 0;
	}
	else
	{
		detalleVenta.pctIva = producto.iva;
		var baseImp = roundAmount( producto.precio / (1 + ( detalleVenta.pctIva / 100) ) );
		detalleVenta.iva = producto.precio - baseImp;
	}

	if (producto.comisionUsuario == 0)
	{
		detalleVenta.pctIvaComisionUsuario = 0;
		detalleVenta.ivaComisionUsuario = 0;
	}
	else
	{
		detalleVenta.pctIvaComisionUsuario = ivaComisionUsuario;
		var baseImpComisionUsuario = roundAmount( producto.comisionUsuario / (1 + ( ivaComisionUsuario / 100) ) );
		detalleVenta.ivaComisionUsuario = producto.comisionUsuario - baseImpComisionUsuario;
	}

	manageLoyalty(detalleVenta, producto, tarjetaFidelizacion);

	return detalleVenta;
}




function copiaDetalleVenta(origen)
{
	var detalleVenta = new DetalleVenta();
	detalleVenta.idRecinto = origen.idRecinto;
	detalleVenta.idSala = origen.idSala;
	detalleVenta.idEvento = origen.idEvento;
	detalleVenta.idSesion = origen.idSesion;
	detalleVenta.fechaCelebracionStr = origen.fechaCelebracionStr;
	detalleVenta.litEventoSesion = origen.litEventoSesion;
	detalleVenta.idPlantillaPrecios = origen.idPlantillaPrecios;
	detalleVenta.idZona = origen.idZona;
	detalleVenta.litZona = origen.litZona;
	detalleVenta.idProducto = origen.idProducto;
	detalleVenta.litProducto = origen.litProducto;
	detalleVenta.idTipoProducto = origen.idTipoProducto;
	detalleVenta.litTipoProducto = origen.litTipoProducto;
	detalleVenta.esEntrada = origen.esEntrada;
	detalleVenta.idProductType = origen.idProductType;

	detalleVenta.importe = origen.importe;
	detalleVenta.precioOriginalOferta = origen.precioOriginalOferta;
	detalleVenta.importeComisionUsuario = origen.importeComisionUsuario;
	detalleVenta.importeTotal = origen.importeTotal;
	detalleVenta.iva = origen.iva;
	detalleVenta.ivaComisionUsuario = origen.ivaComisionUsuario;

	detalleVenta.cantidad = origen.cantidad;
	detalleVenta.modificado = origen.modificado;
	detalleVenta.registrado = origen.registrado;
	detalleVenta.idEstado = origen.idEstado;

	// Para paquetes
	detalleVenta.esPaquete = origen.esPaquete;
	detalleVenta.esComponentePaquete = origen.esComponentePaquete;
	detalleVenta.esAbono = origen.esAbono;

	detalleVenta.numeroImpresiones = origen.numeroImpresiones;

	detalleVenta.idCanalVenta = origen.idCanalVenta;

	// Para fidelizacion
	detalleVenta.idPromotionApplied = origen.idPromotionApplied;
	detalleVenta.points = origen.points;
	detalleVenta.loyaltyCardNumber = origen.loyaltyCardNumber;
	detalleVenta.loyaltyOperationType = origen.loyaltyOperationType;
	detalleVenta.idLoyaltyPromotion = origen.idLoyaltyPromotion;
	detalleVenta.promotionAmountUsed = origen.promotionAmountUsed;
	detalleVenta.idLoyaltyOperation = origen.idLoyaltyOperation;

	detalleVenta.titularNif = origen.titularNif;
	detalleVenta.titularNombre = origen.titularNombre;
	detalleVenta.dato1 = origen.dato1;
	detalleVenta.dato2 = origen.dato2;

	return detalleVenta;
}


var cacheTooltipPreciosZona = [];

function getTooltipPreciosZona(idZona, promo)
{
	var claveCache = "z" + idZona + "p" + promo;

	if (typeof(cacheTooltipPreciosZona[claveCache]) == "undefined")
	{
		var zona = getZonaPrecios(idZona);

		var htmlTooltip = "<div class='tooltip-prices-container'>";

		for (var j=0; j < zona.precios.length; j++)
		{
			var precioZona = zona.precios[j];

			if (precioZona.idTipoPrecio == TiposPrecio.Promo && !promo)
				continue;

			var inactivoFidelizacion = precioZona.fidePromocionMostrar != null && !tienePromocionTarjeta(precioZona.fidePromocionMostrar);

			if (inactivoFidelizacion)
				continue;

			htmlTooltip += "<div class='tooltip-prices'><div class='tooltip-prices-name'>" + precioZona.litProducto + "</div><div class='tooltip-prices-money'>";

			if (precioZona.fidePromocionRedimir == null)
			{
				let priceWithFree = precioZona.precio + precioZona.comisionUsuario;
				htmlTooltip += getHtmlFormattedCurrency(priceWithFree);
			}
			else
			{
				htmlTooltip += (precioZona.puntosRedimir);
			}
			
			htmlTooltip += "</div></div>";

		}
		htmlTooltip += "</div>";
		cacheTooltipPreciosZona[claveCache] = htmlTooltip;
		return htmlTooltip;
	}
	else
	{
		return cacheTooltipPreciosZona[claveCache];
	}
}


function getProductosActivosZona(idZona)
{
	var zona = getZonaPrecios(idZona);
	var productosActivos = [];

	if (zona != null && zona.precios != null)
	{
		for (var j=0; j < zona.precios.length; j++)
		{
			var precioZona = zona.precios[j];

			if (precioZona.idTipoPrecio == TiposPrecio.Promo && precioZona.entradasPromo == 0)
				continue;

			var inactivoFidelizacion = precioZona.fidePromocionMostrar != null && !tienePromocionTarjeta(precioZona.fidePromocionMostrar);

			if (!inactivoFidelizacion)
				productosActivos.push(precioZona);
		}
	}

	return productosActivos;
}


function borrarCacheTooltip()
{
	cacheTooltipPreciosZona = [];
}


function getZona(idZona)
{
	for (var j in zonasRecinto)
	{
		var zn = zonasRecinto[j];

		if (idZona == zn.idZona)
		{
			return zn;
		}
	}

	return null;
}


function getZonaPrecios(idZona)
{
	for (var j in productosSesion.entradas)
	{
		var zn = productosSesion.entradas[j];

		if (idZona == zn.idZona)
		{
			return zn;
		}
	}

	return null;
}


function getProductoZona(idZona, idProducto)
{
	for (var j in productosSesion.entradas)
	{
		var zn = productosSesion.entradas[j];

		if (idZona == zn.idZona)
		{
			for (var i in zn.precios)
			{
				var producto = zn.precios[i];
				if (idProducto == producto.idProducto)
					return producto;
			}

			return null;
		}
	}

	return null;
}





/* =========== Fidelizacion ============= */
document.getElementById('dNumTarjetaFidelizacionBuscar').onkeypress = function(e){
	if (!e) e = window.event;
	var keyCode = e.keyCode || e.which;
	if (keyCode == '13')
	{
		buscarTarjetaFidelizacion();
	    return false;
	}
}

function buscarTarjetaFidelizacion()
{
	var tarjetaBusq = $("#dNumTarjetaFidelizacionBuscar").val();

	if (tarjetaBusq == "")
	{
		swal(polyglot.t("Invalid_card"), polyglot.t("Put_your_loyalty_card"), "error");
		$("#dNumTarjetaFidelizacionBuscar").trigger("focus");
	}
	else
	{
		//TODO mal saltar el BUG de las compras limitadas a código en las compras con grid.
	    var idSesionActual = null;
	    if (miCompra.sesion != null)
	    {
	      idSesionActual = miCompra.sesion.idSesion;
	    }
//	    else if (arraySesiones.length == 1)
	    else if (arraySesiones.length > 0)
	    {
	      idSesionActual = arraySesiones[0].idSesion;
	    }

		crearVentanaEspera();
		CompraAjax.buscarTarjetaFidelizacion(tarjetaBusq.toUpperCase(), promotionPreselected, idSesionActual, resultadoBusquedaTarjetaFidelizacion);
	}
}

function tienePromocionTarjeta(idPromocion)
{
	if (tarjetaFidelizacion == null || tarjetaFidelizacion.saldoPromociones == null || tarjetaFidelizacion.saldoPromociones.length == 0)
		return false;

	for (var i in tarjetaFidelizacion.saldoPromociones)
	{
		if (tarjetaFidelizacion.saldoPromociones[i].idPromocion == idPromocion)
			return true;
	}
	return false;
}

function getPuntosPromocion(idPromocion)
{
	if (tarjetaFidelizacion == null || tarjetaFidelizacion.saldoPromociones == null || tarjetaFidelizacion.saldoPromociones.length == 0)
		return false;

	for (var i in tarjetaFidelizacion.saldoPromociones)
	{
		if (tarjetaFidelizacion.saldoPromociones[i].idPromocion == idPromocion)
		{
			return tarjetaFidelizacion.saldoPromociones[i].saldo;
		}
	}
	return 0;
}

function modoMapa()
{
	$("#cont-zonas-mapa").show();
	$("#cont-lista-zonas").hide();
	$("#btn-plano-zonas").addClass("btn-activo");
	$("#btn-lista-zonas").removeClass("btn-activo");
	ordenarPor();
}

function modoLista()
{
	$("#cont-zonas-mapa").hide();
	$("#cont-lista-zonas").show();
	$("#btn-plano-zonas").removeClass("btn-activo");
	$("#btn-lista-zonas").addClass("btn-activo");
	ordenarPor();
}

function registrarPaginaGA(evento)
{
	if (denyExternalUrlsMode)
		return;

	/*
	 * 1 seleccion fecha
	 * 2 seleccion hora (paso opcional)
	 * 3 seleccion zona
	 * 4 seleccion numero entradas y categoria
	 * 5 seleccion asientos en patio (paso opcional)
	 * */
	var nombrePagina = "";
	var direccionPagina = "";

	switch(evento){
	    case 1:
	    	nombrePagina = "date selection";
	    	direccionPagina = "/comprarEvento#dateSelection";
	        break;
	    case 2:
	    	nombrePagina = "time selection";
	    	direccionPagina = "/comprarEvento#timeSelection";
	        break;
	    case 3:
	    	nombrePagina = "zone selection";
	    	direccionPagina = "/comprarEvento#zoneSelection";
	        break;
	    case 4:
	    	nombrePagina = "ticket type selection";
	    	direccionPagina = "/comprarEvento#ticketTypeSelection";
	        break;
	    case 5:
	    	nombrePagina = "seat selection";
	    	direccionPagina = "/comprarEvento#seatSelection";
	        break;
	}
	gtag('event', 'page_view',{
		page_title : nombrePagina,
		page_path : direccionPagina
	});

}

function cambioFechaH2()
{
	$(".enlaceCambFechaH2").hide();
	$("#fechas").show();
}

function cambioHoraH2()
{
	$(".enlaceCambHoraH2").hide();
	$("#horas").show();
}

function cambioDondeH2()
{
	$(".enlaceCambDondeH2").hide();
//	if (hayFidelizacion)
//	{
//		$("#enlaceHayFidelizacion").show();
//		$("#enlaceHayFidelizacionSmall").show();
//		$("#fidelizacion").hide();
//	}
	$("#zonas").show();
}

function cambiarFechaEnlace()
{

	cambioFechaH2();

	setTimeout(function(){
		saltarAContenedor("cab_fecha");
	},"500");

}

function cambiarZonaEnlace()
{
//	hide info bar mobile
//	Review this
//	openDetailsBarMobile();

	cambioDondeH2();

	setTimeout(function(){
		saltarAContenedor("cab_zonas");
	},"500");

}

function barraFecha(fecha)
{
	$("#barra-fecha-valor").html(fecha);
	$("#cont-barra-fecha").show();

	//mostramos enlace de cambio de fecha
	if(modoSinSeleccionFecha){
		$("#barra-enlace-fecha").hide();
	}else{
		$("#barra-enlace-fecha").show();
	}

}

function barraZona(litZona)
{
	$("#barra-zona-valor").html(litZona);
	$("#cont-barra-zona").show();

	//mostramos enlace de cambio de fecha
	if(productosSesion.entradas.length > 1)
	{
		$("#barra-enlace-zona").show();
	}
	else
	{
		$("#barra-enlace-zona").hide();
	}
}

function barraAsientos(numAsientosTotal, sesionNumerada)
{
	if (numAsientosTotal > 0)
	{
		var codigo = polyglot.t("Quantity_multiplier_acronym", { numSeats: numAsientosTotal });
		if (sesionNumerada)
		{
			codigo += "<a href='#' class='reveal-link' onclick='openInfoEntradasModal()' id='InfoEntradasModalLink' data-reveal-id='InfoEntradasModal'>"+polyglot.t("See_details")+"</a>";
		}
		$("#barra-asientos-valor").html( codigo );
		$("#cont-barra-asientos").show();

		if(productosSesion.entradas.length > 1)
		{
			//mostramos enlace de cambio de fecha
			$("#barra-enlace-zona").show();
		}
		else
		{
			$("#barra-enlace-zona").hide();
		}
	}
	else
	{
		$("#cont-barra-asientos").hide();
	}
}

function openInfoEntradasModal()
{
	$("#InfoEntradasModal").foundation("reveal", "open");
}

function barraTotal(importeTotal, entradasSeleccionadas)
{
	if (importeTotal != null && importeTotal > 0)
	{
		$("#barra-lit-precio-total").show();
		$("#barra-precio-total").html(getHtmlFormattedCurrency(importeTotal));
	}
	else
	{
		$("#barra-lit-precio-total").hide();
		$("#barra-precio-total").html("");
	}

	$("#btn-barra-calltoaction").prop('disabled', !entradasSeleccionadas);
	$("#btn-barra-calltoaction-movil").prop('disabled', !entradasSeleccionadas);
}

function rotarPlanoMobile()
{
	// TODO Si se encuentra en modo seleccion de butacas y ha rotado un dispositivo movil siendo el tamaño el que ya no corresponde al modo mobile, entonces: cambiar a modo desktop
}

function establecerAlturaElementosCompra()
{
	var h_footer_buy = $(".bar_action").outerHeight();
	$("#footer-dummy-purchase").css("height", h_footer_buy +"px");
}

function establecerAlturaMapas()
{
	var h = $(window).height();
	var w = $(window).width();
	
	if(h == 0)
	{
		h = 1000;
	}
	
	
	if($("#cont-zonas-mapa")[0])
	{
		var hf = h;
		if(w < 640){
			hf = h/2.5;
		}else{
			hf = h/1.8;
		}
		//contenedor mapa zonas svg
		$("#svgMapaZonas").css("height",hf+"px");


		if(w > 640){
			//contenedor lista zonas lateral
			$(".cont-list-zonas").css("height",hf+"px");
			var alturaListaZonas = $(".cont-lista-zonas").innerHeight();
			$(".cont-lista-zonas").css("height",(hf-2)+"px");
			$(".abrir-leyenda").css("bottom",(hf-27)+"px");
//			if(alturaListaZonas < (hf-2))
//			{
//				//ocultar barra de scroll si el alto del contenido es menor al alto del contenedor
//				//TODO Falla si la pantalla es grande
//				//$(".cont-lista-zonas").css("overflow-y","hidden");
//				$(".cont-lista-zonas").css("overflow-y","auto");
//			}
//			else
//			{
//				$(".cont-lista-zonas").css("overflow-y","auto");
//			}
			$(".cont-lista-zonas").css("overflow-y","auto");
		}
	}

	//Si la altura es menor que la que suman la cabecera+migas+calendario ==> el boton Comprar flotante desaparece y mostramos uno al final de la página
	setTimeout(function(){
		var hMinOcultBtn = $(".header-movil").height() + $(".miga").height() + $("#cab_fecha").height() + 25;
		if(hMinOcultBtn > (h - $("#action_bar_purchase").height()))
		{
			$("#action_bar_purchase").css("position", "static");
		}
		else
		{
			$("#action_bar_purchase").css("position", "fixed");
		}
	}, 1000);



	//plano butacas
	var hf = h;
	if(w < 640){
		hf = h/2.5;
	}else{
		hf = h/1.8;
	}


	//contenedor mapa zonas svg
	$("#planoSvgZonas").css("height",hf+"px");
	$("#planoSvgZonas").css("width","100%");

	if(w > 640)
	{
		//contenedor mapa de asientos
		$("#chart").css("height",hf+"px");

		//iframe
		if(iframeMode){
			//auto-height
			if(iframeAutoHeight){
				$("#chart").css("height",700+"px");
			}
		}
	}
	else
	{
		var hRestMobile = $(".header-movil").height() + $("#action_bar_purchase").height() + 51;
		var hAsientMobile = h - hRestMobile;
		//ya no se usa el contenedor de movil
		//$("#chartMobile").css("height", hAsientMobile+"px");
		$("#chart").css("height",hf+"px");
	}

}

function ocultarPlanoMobile(contenedor)
{

	if(hideMiga!=null && hideMiga){
		$(".miga").hide();
	}else{
		$(".miga").show();
	}
	$(".footer-mobile").show();
	$("#conts-seleccion-compra").show();
	$("#cab_asientos_mobile").hide();

	if(modoPlanoSensible)
	{
		cambioDondeH2();

		if (!contenedor)
		{
			contenedor = "cab_zonas";
		}

		setTimeout(function(){
			saltarAContenedor(contenedor);
		},"200");
	}
	else
	{
		$("#planoSeleccion").trigger("focus");
	}
}

function mostrarBarra()
{
	//TODO valorar cuando mostrar sin posición fixed

	if(iframeMode != null && iframeMode && parseInt(iframeVisualMode) == MODE_IFRAME)
	{
		$(".bar_action").addClass('noFixed');
	}


	 $(".bar_action").removeClass('invisible').addClass("visible fadeInUp animated").one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend',
	    function() {
	      $(this).removeClass("fadeInUp animated");
	    });
}


$("#layer-bg").on("click", function(){ openDetailsBarMobile(); });

function openDetailsBarMobile()
{
	//Evaluar si ya hay seleccion de fecha, asiento, etc
	if(miCompra != null && miCompra.sesion != null)
	{
		if($("#bar_action_content").hasClass("hide-for-small-only"))
		{
			//$(".header-layer-bg").show();
			$('#layer-bg').fadeIn(300);
			$("#bar_action_content").removeClass("hide-for-small-only");

			$('.dropup_button').removeClass('active');
			$('.dropup_button').removeClass('dropup_opened');
			$('.dropup_button').addClass('dropup_closed');
		}
		else
		{
			//$(".header-layer-bg").hide();
			$('#layer-bg').fadeOut(300);
			$("#bar_action_content").addClass("hide-for-small-only");

			$('.dropup_button').addClass('active');
			$('.dropup_button').addClass('dropup_opened');
			$('.dropup_button').removeClass('dropup_closed');
		}
	}
}

/*
$(function() {
	//var dd = new DropDown( $('#abrirDetalleBarra') );
	$(document).on("click", function() {
		// all dropdowns
		$('.dropdown-compra').removeClass('active');
		$('.dropdown-compra').removeClass('abiertoDropdown');
		$('.dropdown-compra').removeClass('cerradoDropdown');
	});
});
*/

/* Google Maps Modal */
var mapsInitialized = false;
function initModalMaps()
{
	if (denyExternalUrlsMode)
		return;

	if(mapsInitialized == false)
	{
		mapsInitialized = true;
		var heightBodyModal = $("#map-modal-wrapper").height();
		var code = '<iframe id="map" height="'+heightBodyModal+'" seamless="seamless" width="100%" src="https://maps.google.com/maps?f=q&amp;source=s_q&amp;hl='+idioma+'&amp;geocode=yes&amp;q='+lat+','+lng+'&amp;iwloc=near&amp;z=15&amp;output=embed" style="overflow: hidden; border-width: 0"></iframe>';
		$("#map-modal-wrapper").html(code);
	}
}
/* End Google Maps Modal */


function setStoredAdicionalData()
{
	for (var i in buyerAditionalData)
	{
		if (recogerTitularNif)
		{
			$("#titularNif" + i).val(buyerAditionalData[i].titularNif);
		}

		if (recogerTitularNombre)
		{
			$("#titularNombre" + i).val(buyerAditionalData[i].titularNombre);
		}

		if (preguntaDato1)
		{
			$("#dato1" + i).val(buyerAditionalData[i].dato1);
		}

		if (preguntaDato2)
		{
			$("#dato2" + i).val(buyerAditionalData[i].dato2);
		}
	}
}

function onBuyerAditionalDataChanged(tipoDato, index)
{
	if (buyerAditionalData[index] == null)
	{
		buyerAditionalData[index] = {titularNif : null,
					titularNombre : null,
					dato1 : null,
					dato2 : null
				};
	}

	if (tipoDato == "titularNif")
	{
		buyerAditionalData[index].titularNif = $('#' + tipoDato + index).val();
	}
	if (tipoDato == "titularNombre")
	{
		buyerAditionalData[index].titularNombre = $('#' + tipoDato + index).val();
	}
	if (tipoDato == "dato1")
	{
		buyerAditionalData[index].dato1 = $('#' + tipoDato + index).val();
	}
	if (tipoDato == "dato2")
	{
		buyerAditionalData[index].dato2 = $('#' + tipoDato + index).val();
	}
}

function drawAditionalData(detalle)
{
	if (tieneDatosAdicionales && miCompra != null && miCompra.entradasSeleccionadas != null)
	{
		var htmlDatosAdicionales = generaFormularioDatosExtra(detalle, recogerTitularNif, recogerTitularNombre, preguntaDato1, preguntaDato2,questionDataType1, questionDataType2);

		$("#datosAdicionales").html(htmlDatosAdicionales);

		setStoredAdicionalData();

		$("#datosAdicionales small.error").hide();
		$("#datosAdicionales").show();

		pidiendoDatosAdicionales = true;
		if (questionDataType1 != null && questionDataType1 == 5)
		{
			var questionDivId = "#dato1";
			initializeQuestionDatesDropDowns(questionDivId,detalle.length);

		}
		if (questionDataType2 != null && questionDataType2 == 5)
		{
			var question2DivId = "#dato2";
			initializeQuestionDatesDropDowns(question2DivId,detalle.length);
		}
		$( ".questionDatesElements" ).wrap( "<div class='large-3 medium-4 small-12 columns end'></div>" );
	}
}

function initializeQuestionDatesDropDowns(questionDivId, purchaseNumberDetails)
{
	for (var i = 0; i<purchaseNumberDetails; i++)
	{
		var fieldName = "date_" + questionDivId.replace("#", "") + i;
		$(questionDivId + i).dateDropdowns({
			submitFieldName: fieldName,
			daySuffixes: false,
			defaultDateFormat: "dd/mm/yyyy",
			initialDayMonthYearValues:new Array(polyglot.t("Day"),polyglot.t("Month"),polyglot.t("Year")),
			monthLongValues: dayjs.months()
		 });
	}
}

function cancelLoyalty()
{
	idContPlano = "chartMobile";

	$(".miga").hide();
	$(".footer-mobile").hide();
	$("#conts-seleccion-compra").hide();
	$("#cab_asientos_mobile").show();

	$("#"+idContPlano).show();
	cargarPlano();
}

function unblockGroupPromotionsButtons()
{
	if (groupPromotions != null && groupPromotions.length > 0 && miCompra.entradasSeleccionadas != null && miCompra.entradasSeleccionadas.length > 0)
	{
		for (var i in groupPromotions)
		{
			var lockButton = true;
			var gp = groupPromotions[i];

			var sumCantidad = 0;

			for (var j in miCompra.entradasSeleccionadas)
			{
				var ticket = miCompra.entradasSeleccionadas[j];
				sumCantidad += ticket.cantidad;

				if (sumCantidad >= gp.minimumNumberTickets)
				{
					lockButton = false;
					break;
				}
			}

			$('#btn-request-promo_' + gp.idGroupPromotion).prop("disabled", lockButton);
		}
	}

	if (groupPromotionsUp != null && groupPromotionsUp.length > 0 && miCompra.entradasSeleccionadas != null && miCompra.entradasSeleccionadas.length > 0)
	{
		$("#btn-continue-gp").prop("disabled", true);
		$("#btn-continue-gp-movil").prop("disabled", true);

		if(selectedGroupPromotionId != null)
		{
			for (var i in groupPromotionsUp)
			{
				var gp = groupPromotionsUp[i];

				if(gp.idGroupPromotion == selectedGroupPromotionId)
				{
					var lockButton = true;
					var sumCantidad = 0;

					for (var j in miCompra.entradasSeleccionadas)
					{
						var ticket = miCompra.entradasSeleccionadas[j];
						sumCantidad += ticket.cantidad;

						if (sumCantidad >= gp.minimumNumberTickets)
						{
							lockButton = false;
							break;
						}
					}

					$("#btn-continue-gp").prop("disabled", lockButton);
					$("#btn-continue-gp-movil").prop("disabled", lockButton);
					//$('#btn-request-promo_' + gp.idGroupPromotion).prop("disabled", lockButton);
				}
			}
		}
	}
}

function drawMinimumNumberTicketsLeft()
{
	if (groupPromotions != null && groupPromotions.length > 0 && miCompra.entradasSeleccionadas != null)
	{
		for (var i in groupPromotions)
		{
			var gp = groupPromotions[i];
			var sumCantidad = 0;

			for (var j in miCompra.entradasSeleccionadas)
			{
				var tickets = miCompra.entradasSeleccionadas[j];
				sumCantidad += tickets.cantidad;
			}

			var ticketsLeft = gp.minimumNumberTickets - sumCantidad;

			if (ticketsLeft > 0)
			{
				$('#tickets-left-promo_' + gp.idGroupPromotion).html(ticketsLeft);
				$("#counter-left-promo_" + gp.idGroupPromotion).show();
			}
			else
			{
				$('#tickets-left-promo_' + gp.idGroupPromotion).html("0");
				$("#counter-left-promo_" + gp.idGroupPromotion).hide();
			}

		}
	}

	//Type Up
	if (groupPromotionsUp != null && groupPromotionsUp.length > 0 && miCompra.entradasSeleccionadas != null)
	{
		for (var i in groupPromotionsUp)
		{
			var gp = groupPromotionsUp[i];
			var sumCantidad = 0;

			for (var j in miCompra.entradasSeleccionadas)
			{
				var tickets = miCompra.entradasSeleccionadas[j];
				sumCantidad += tickets.cantidad;
			}

			var ticketsLeft = gp.minimumNumberTickets - sumCantidad;

			if (ticketsLeft > 0)
			{
				$('#tickets-left-promo_' + gp.idGroupPromotion).html(ticketsLeft);
				$("#counter-left-promo_" + gp.idGroupPromotion).show();
			}
			else
			{
				$('#tickets-left-promo_' + gp.idGroupPromotion).html("0");
				$("#counter-left-promo_" + gp.idGroupPromotion).hide();
			}

			//Type UP
			if(gp.placeUp != null &&  gp.placeUp)
			{
				//have a selected promo and it is this
				if(selectedGroupPromotionId != null && selectedGroupPromotionId == gp.idGroupPromotion)
				{
					if (ticketsLeft > 0)
					{
						$("#barra-msg-ticketleft").show();
						$("#barra-msg-ticketleft").html(polyglot.t("Promo.Select_ticket_to_continue", { tickets: ticketsLeft }));
					}
					else
					{
						$("#barra-msg-ticketleft").hide();
					}
				}
			}

		}
	}
}

function continueGroupPromotion()
{
	if(continueGroupPromotion != null)
	{
		requestGroupPromotion(selectedGroupPromotionId);
	}
	else
	{
		//TODO: considerar si es posible este caso
		console.log("error");
	}
}

function showGroupPromotions(groupPromotionsToShow)
{

	$('#group-promotions-wrapper').hide();
	$('#group-promotions-wrapper-up').hide();
	$('.promo-box').hide();
	$("#title-group-promotions-purchase-page").hide();

	if (groupPromotionsToShow != null && groupPromotionsToShow.length > 0)
	{

		var countUp = 0;
		var countDown = 0;

		for (var i in groupPromotionsToShow)
		{
			var promotionToShow = groupPromotionsToShow[i];
			if(promotionToShow.active)
			{
				$('#promo-box_' + promotionToShow.idGroupPromotion).show();

				if(promotionToShow.placeUp)
				{
					countUp++;
				}else{
					countDown++;
				}
			}
		}

		if(countUp > 0)
		{
			$('#group-promotions-wrapper-up').show();

			$("#title-group-promotions-purchase-page-up").show();

			setTimeout(function(){
				saltarAContenedor("title-group-promotions-purchase-page-up");
			},"100");
		}
		else
		{
			$("#title-group-promotions-purchase-page-up").hide();
			jumpToNextGroupPromotionSelected();
		}

		if(countDown > 0)
		{
			$('#group-promotions-wrapper').show();

			$("#title-group-promotions-purchase-page").show();
		}
		else
		{
			$("#title-group-promotions-purchase-page").hide();
		}

	}
	else
	{
		//If has groupPromotionUp then show next step
		if(groupPromotionsUp != undefined && groupPromotionsUp != null  && groupPromotionsUp.length > 0)
		{
			jumpToNextGroupPromotionSelected();
		}
	}

	//next step
	if(countUp <= 0)
	{
		//jumpToNextGroupPromotionSelected();
	}

	cerrarVentanaEspera();
}


function requestGroupPromotion(idGroupPromotion)
{
	groupPromotion = getObjetoPorId(idGroupPromotion, groupPromotions, "idGroupPromotion");

	if(groupPromotion == null)
	{
		groupPromotion = getObjetoPorId(idGroupPromotion, groupPromotionsUp, "idGroupPromotion");
	}

	if (groupPromotion != null)
	{
		if (groupPromotion.minimumNumberTicketsIdRequired != null && groupPromotion.idTicketRequired != null)
		{
			var idTicketRequired = groupPromotion.idTicketRequired;
			var minTicketsIdRequired = groupPromotion.minimumNumberTicketsIdRequired;
			var amountTicketRequired = minTicketsIdRequired;
			var amountPurchased = 0;

			for (var j in miCompra.entradasSeleccionadas)
			{
				var ticket = miCompra.entradasSeleccionadas[j];

				if (ticket.idProducto == idTicketRequired)
				{
					amountPurchased += ticket.cantidad;
				}
			}

			if (amountPurchased < amountTicketRequired)
			{
				alertaExcepcion(polyglot.t("Cant_use_group_promotion"), polyglot.t("Select_ticket_required_group_promo", {ticketName: getTicketRequiredLabel(idTicketRequired), amount: minTicketsIdRequired}));
				selectedGroupPromotion = null;
				return;
			}
		}

		selectedGroupPromotion = idGroupPromotion;
		if (venta != null)
		{
			venta.idGroupPromotion = selectedGroupPromotion;
		}
		
		//¿Hay autoseleccion de asientos?
		if(automaticallySelectedSeats != undefined || automaticallySelectedSeats == null) 
		{
			comprarFinal();
		}
		else 
		{
			automaticSelectionDone();
		}
		
	}
}

function getTicketRequiredLabel(idTicketRequired)
{
	if (productosSesion != null && productosSesion.entradas != null)
	{
		for (var i in productosSesion.entradas)
		{
			var precios = productosSesion.entradas[i].precios;

			if (precios != null)
			{
				for (var j in precios)
				{
					var precio = precios[j];
					if (precio.idProducto == idTicketRequired)
					{
						return precio.litProducto;
					}
				}
			}
		}
	}

	return "";
}

function getTicketComboMaxValue(zona, precioZona)
{
	var ticketsSelected = 0;
	var totalTicketsSelected = 0;
	let saldoUsado = 0;
	if (miCompra != null && miCompra.entradasSeleccionadas != null)
	{
		for (var i in miCompra.entradasSeleccionadas)
		{
			var dv = miCompra.entradasSeleccionadas[i];
			if (dv.idProducto == precioZona.idProducto && dv.idZona == precioZona.idZona)
			{
				ticketsSelected += dv.cantidad;
			}
			
			if (precioZona.fidePromocionMostrar && dv.idPromotionApplied == precioZona.fidePromocionMostrar && dv.idZona != precioZona.idZona)
			{
				saldoUsado += dv.cantidad;
			}

			totalTicketsSelected += dv.cantidad;
		}
	}

	var entMaxZone = zona.libres > maxEntradasTransaccion ? maxEntradasTransaccion : zona.libres;

	var entMax = entMaxZone - (totalTicketsSelected - ticketsSelected);
	if (entMax < 0)
	{
		entMax = 0;
	}

	if (precioZona.maxEntradasVenta != null && entMax > precioZona.maxEntradasVenta)
	{
		entMax = precioZona.maxEntradasVenta;
	}

	if (precioZona.fidePromocionMostrar)
	{
		var saldoPuntos = getPuntosPromocion(precioZona.fidePromocionMostrar);
		let saldoRestante = saldoPuntos - saldoUsado;
		if (entMax >= saldoRestante)
			entMax = saldoRestante;
	}

	if (precioZona.maxCantidadSesion != null && precioZona.maxCantidadSesion < entMax)
	{
		entMax = precioZona.maxCantidadSesion;
	}

	return entMax;
}

function setTicketTiers(idZone)
{
	if (typeof productosSesionArray != 'undefined' && productosSesionArray != null && productosSesionArray.length > 0)
	{
		for (let i in productosSesionArray)
		{
			let sessionProds = productosSesionArray[i];
			setTicketTiersForSession(sessionProds, idZone);
		}
	}
	else
	{
		setTicketTiersForSession(productosSesion, idZone);
	}
}

function setTicketTiersForSession(sessionProducts, idZone)
{
	var prodsList = sessionProducts.entradas;

	for (var i in prodsList)
	{
		var af = prodsList[i];

		if (idZone == null || af.idZona == idZone)
		{
			for (var j in af.precios)
			{
				var product = af.precios[j];
				if (product.idParentTier != null)
				{
					setProductTicketTiers(sessionProducts, product, af.idZona);
				}
			}
		}
	}
}

function setProductTicketTiers(sessionProducts, product, idZone)
{
	var idParentTier = product.idParentTier;

	var prodsList = sessionProducts.entradas;

	for (var i in prodsList)
	{
		var af = prodsList[i];

		if (af.idZona == idZone)
		{
			for (var j in af.precios)
			{
				var parent = af.precios[j];

				if (parent.idProducto == idParentTier)
				{
					var currentStock = parent.maxCantidadSesion;
					// Prod not available if parent have more Stock than max transaction entries.
					if (currentStock != null && currentStock >= maxEntradasTransaccion)
					{
						$('#price_row_' + idZone + "-" + product.idProducto).addClass("sold-out");
						$('#sel_' + idZone + "_" + product.idProducto).parent().html("<span>" + polyglot.t("Available_soon") + "</span>");
					}
					return;
				}
			}
		}
	}
}

function salePlaceProductFilter()
{
	var prodcutsInProductPurchase = new Array();
	if (productosSesion != null && productosSesion.productos != null && productosSesion.productos.length > 0)
	{
		var products = productosSesion.productos;
		for (var i in products)
		{
			var valid = false;
			var product = products[i];
			
			for (var j in product.precios)
			{
				var precio = product.precios[j]; 
				if(precio.idTipoPrecio == TiposPrecio.DonationOpenAmount || precio.idTipoPrecio == TiposPrecio.Donation)
				{
					if(precio.salePlace == SalePlaces.ProductPurchase)
					{
						valid = true;
					}
				}
				else if (precio.idTipoPrecio != TiposPrecio.IncludedWithTicket)
				{
					valid = true;
				}
				
				if (valid)
				{
					prodcutsInProductPurchase.push(product);
				}
			}
			
		}
	}
	return prodcutsInProductPurchase;
}

function calculateTransactionFee()
{
	let totalFee = 0;
	
	if(miCompra.entradasSeleccionadas.length > 0) {
		let sessions = [... new Set(miCompra.entradasSeleccionadas.map(dv => dv.idSesion, 0))];
		let filteredSessions = [];
		
		sessions.forEach(session => {
			let amount = 0;
			miCompra.entradasSeleccionadas.forEach(dv => (dv.idSesion == session) ? amount += dv.importeTotal : 0);
			filteredSessions.push([session, amount]);
		});
		
		
		for(let i = 0; i < filteredSessions.length; i++)
		{
			let sessionData = filteredSessions[i];
			let transactionFees = null;
			if(typeof productosSesionArray != 'undefined') {
				let productosSesion = productosSesionArray.filter(ps => ps.idSesion == sessionData[0]);
				let specialProducts = (productosSesion.length > 0) ? productosSesion.map(ps => ps.specialProducts).filter(e => e != null) : null;
				transactionFees = (specialProducts != null) ? specialProducts.flat().filter(sp => sp.idPriceType == TiposPrecio.FeeTransaction) : null;
			} else {
				transactionFees = (productosSesion.specialProducts != null && (productosSesion.specialProducts.length > 0)) ? productosSesion.specialProducts.filter(sp => sp.idPriceType == TiposPrecio.FeeTransaction) : null;
			}
			
			
			if(transactionFees != null && transactionFees.length > 0) {
				for(let i = 0; i < transactionFees.length; i++)
				{
					let fee = transactionFees[i];
					let feeAm = 0;
					if(fee.fixedAmount != null && fee.fixedAmount > 0) {
						feeAm += fee.fixedAmount;
					}
					
					let percAmount = 0;
					if(fee.percentage > 0) {
						percAmount += sessionData[1] * fee.percentage / 100;
					}
					
					if(fee.maximum != null && (feeAm+percAmount) > 0 && (feeAm+percAmount) > fee.maximum) {
						feeAm = fee.maximum;
					} else if(fee.minimum != null && (feeAm+percAmount) > 0 && (feeAm+percAmount) < fee.minimum) {
						feeAm = fee.minimum;
					} else if(percAmount > 0) {
						feeAm += percAmount;
					}
					
					totalFee += feeAm;
				}
			}
		}	
	}
	
	return totalFee;
}

function mostrarToolTip(object)
{
	let asiento = "";
	let fila = "";
	let objectType = object.objectType;
	
	if (objectType === "section")
	{
		return;
	}
	
	for (var j in zonasRecinto)
	{
		var zn = zonasRecinto[j];

		if (object.category.catId == zn.idZona)
		{
			if(objectType != "GeneralAdmissionArea")
			{
				for (var i in zn.butacas)
				{
					var but = zn.butacas[i];
					if (but.idButaca == object.id)
					{
						asiento = but.litButaca;
						fila = but.litFila;
						break;
					}
				}
			}
			break;
		}
	}
	
	let html = "";
	html += "<div class='tooltip-zone'>"+ object.category.label +"</div>"
		if (objectType != "GeneralAdmissionArea") {
			const infoSeat = object.seatInTable ? (polyglot.t("Table") + " " + fila) : (polyglot.t("Row") + " " + fila);		

			if (objectType == "Table") html += "<div class='tooltip-seats'>"+ polyglot.t("Table") + " " + object.label+"</div>"
			else html += "<div class='tooltip-seats'>"+ infoSeat + " - " + polyglot.t("Seat") +"  "+asiento+"</div>"
		}
	html = "<div class='tooltip-info-header'>"+ html +"</div>"
    if (object.objectType == 'section')
    	return "";
    else if (object.status == 'booked')
    {
		if (object.objectType == "Table") html += "<div class='tooltip-content'>" + polyglot.t("This_table_is_not_available") + "</div>"
		else if (object.objectType == "GeneralAdmissionArea") html += "<div class='tooltip-content'>" + polyglot.t("This_zone_is_not_available") + "</div>"
		else html += "<div class='tooltip-content'>" + polyglot.t("This_seat_is_not_available") + "</div>"
		html = "<div class='tooltip-info-container'>"+ html +"</div"
    	return html;
	}
	else if (!object.selectable)
    {
		if (object.objectType == "Table") html += "<div class='tooltip-content'>" + polyglot.t("This_table_can_not_be_selected") + "</div>"
		else if (object.objectType == "GeneralAdmissionArea") html += "<div class='tooltip-content'>" + polyglot.t("This_seat_can_not_be_selected") + "</div>"
		else html += "<div class='tooltip-content'>" + polyglot.t("This_zone_can_not_be_selected") + "</div>"
		html = "<div class='tooltip-info-container'>"+ html +"</div>"
		return html;
	}	
    else if (object.status == 'onOrphanSeats')
    	return polyglot.t("The_seats_can_not_be_separated");
	else if (object.status == 'free')
	{	
		if (ModoSeleccionAsiento.MODO_SELECCION_ASIENTO_PLANO == modoSeleccionAsientos)
		{
			html = "<div class='tooltip-info-container'>"+ html + getTooltipPreciosZona(object.category.catId, object.promo) +"</div>"
		}
		else
		{
			let infoAvailable = "";
			if (objectType != "GeneralAdmissionArea") {			
				if (objectType == "Table") infoAvailable = polyglot.t("Table_available");
				else infoAvailable = polyglot.t("Seat_available");
			} else infoAvailable = polyglot.t("Tickets_available");
			html = "<div class='tooltip-info-container'>"+ html + "<div class='tooltip-prices-container'> "+ infoAvailable +"</div></div>"
		}
		return html;
	}
    else
        return undefined;
}

function acceptedSeatsPopup()
{
	acceptedPopup = true;
	$("#seatsPopup").removeClass("show");
	try
	{
		cargarPlano();
	}
	catch(e){}
	
}