Santa Ponsa: 2-Hr Glass-Bottom Boat Dolphin-Watching
Spain Palma de Mallorca
Details
Treat yourself to an extraordinary voyage along the captivating coastline of Mallorca, setting sail early in the morning aboard a magnificent glass-bottom vessel. Brace yourself for a two-hour cruise that promises an enchanting encounter with the mesmerizing world of dolphins.Marvel at the magical scenery that unfolds along the coastline, while dolphins gracefully swim and frolic in perfect harmony with the boat. With the crew's extensive expertise and years of experience, they have an uncanny ability to anticipate the dolphins' whereabouts. However, it's important to remember that these are wild animals, living freely in their natural habitat. Observing them in their true element is an awe-inspiring experience like no other.Don't miss out on this extraordinary adventure that promises to be the highlight of your Mallorca getaway. Book your tickets now and join us on this magnificent journey where nature's wonders unfold before your very eyes.
Highlights
Included in tickets
* 2-Hour Glass Bottom Boat CruiseDoes not include: * Snacks and drinks
Special Notes
* In case of bad weather, the captain can change the route* Alcoholic beverages won't be sold on-board* It's important to wear sunscreen and a hatKids under 4 get in for free.* Show your ticket at the departure point: Carrer Gran Via Puig de Galatzo 16, local 11, Santa Ponsa.* Meet 15 minutes before the scheduled start of the activity* Meet 15 minutes before the scheduled start of the activity
Additional Notes
N/A
Available days
M
T
W
T
F
S
S
Languages
en-US, fr-FR, de-DE, es-ES
How do I get my Ticket?
You will receive a QR code on the receipt sent to your mailbox.
Cancellation Policy
Receive a 100% refund if you cancel up to 24 hours before the experience begins.
BOOK from:$30.33
`;}if (typeof prices === 'undefined' || prices.length === 0) { showNoInfoMessage(); return;} console.log(prices);// Evitar que el formulario se envíeform.addEventListener('submit', function(event) { event.preventDefault();});prices.forEach(function(price, index) { // Crear contenedor del acordeón var accordionContainer = document.createElement('div'); // Crear botón del acordeón var time_price = price.startTime? price.startTime : ''; var accordionButton = document.createElement('button'); accordionButton.classList.add('accordion'); accordionButton.setAttribute('type', 'button'); // Asegurarse de que no sea de tipo submit accordionButton.textContent = price.name + ' ' + time_price; accordionContainer.appendChild(accordionButton); // Crear panel del acordeón var panel = document.createElement('div'); panel.classList.add('panel'); var table = document.createElement('table'); var item = price.prices; if (item) { item.forEach(function(price) { var row = document.createElement('tr'); // Crear una nueva fila para cada precio var nameCell = document.createElement('td'); nameCell.textContent = price.name; row.appendChild(nameCell); var priceCell = document.createElement('td'); priceCell.innerHTML = 'EUR' + price.price; priceCell.classList.add('price-amount'); row.appendChild(priceCell); // Añadir data-type al input var inputCell = document.createElement('td'); var input = document.createElement('input'); input.setAttribute('type', 'number'); input.setAttribute('name', 'cantidad_' + price.type); input.setAttribute('value', '0'); input.setAttribute('min', '0'); input.setAttribute('data-price', price.price); input.setAttribute('data-type', price.type); // Nuevo atributo data-type input.setAttribute('max', price.purchaseLimit); input.addEventListener('input', updateTotal); inputCell.appendChild(input); var incrementButton = document.createElement('button'); incrementButton.textContent = '+'; incrementButton.setAttribute('type', 'button'); // Asegurarse de que no sea de tipo submit incrementButton.addEventListener('click', function(event) { event.preventDefault(); var currentValue = parseInt(input.value) || 0; if (currentValue < parseInt(input.getAttribute('max'))) { input.value = currentValue + 1; } updateTotal(); }); inputCell.appendChild(incrementButton); var decrementButton = document.createElement('button'); decrementButton.textContent = '-'; decrementButton.setAttribute('type', 'button'); // Asegurarse de que no sea de tipo submit decrementButton.addEventListener('click', function(event) { event.preventDefault(); var currentValue = parseInt(input.value) || 0; if (currentValue > 0) { input.value = currentValue - 1; } updateTotal(); }); inputCell.appendChild(decrementButton); row.appendChild(inputCell); table.appendChild(row); // Añadir la fila a la tabla }); // Añadir total al final de la tabla var totalRow = document.createElement('tr'); var totalLabelCell = document.createElement('td'); totalLabelCell.textContent = 'Total:'; totalRow.appendChild(totalLabelCell); var totalAmountCell = document.createElement('td'); totalAmountCell.setAttribute('colspan', '2'); totalAmountCell.innerHTML = 'EUR0.00'; totalRow.appendChild(totalAmountCell); table.appendChild(totalRow); // Añadir la tabla al panel del acordeón panel.appendChild(table); var hiddenIdInput = document.createElement('input'); hiddenIdInput.setAttribute('type', 'hidden'); hiddenIdInput.setAttribute('name', 'activity'); // Nombre del campo oculto hiddenIdInput.setAttribute('value', price.name + ' ' + price.startTime); // Valor del id panel.appendChild(hiddenIdInput); // Añadir campo oculto para el id var hiddenIdInput = document.createElement('input'); hiddenIdInput.setAttribute('type', 'hidden'); hiddenIdInput.setAttribute('name', 'price_id'); // Nombre del campo oculto hiddenIdInput.setAttribute('value', price.id); // Valor del id panel.appendChild(hiddenIdInput); accordionContainer.appendChild(panel); form.appendChild(accordionContainer); // Función para actualizar el total function updateTotal() { let totalAmount = 0; panel.querySelectorAll('input[type="number"]').forEach(input => { const quantity = parseInt(input.value) || 0; const price = parseFloat(input.getAttribute('data-price')); totalAmount += quantity * price; }); panel.querySelector('.totalAmount').textContent = totalAmount.toFixed(2); } // Añadir evento para el acordeón accordionButton.addEventListener('click', function(event) { event.preventDefault(); // Evitar comportamiento predeterminado // Cerrar todos los paneles document.querySelectorAll('.panel').forEach(function(panel) { panel.style.display = 'none'; }); // Cerrar todos los botones del acordeón document.querySelectorAll('.accordion').forEach(function(button) { button.classList.remove('active'); }); // Abrir el panel actual this.classList.toggle('active'); var panel = this.nextElementSibling; if (panel.style.display === 'block') { panel.style.display = 'none'; } else { panel.style.display = 'block'; } }); // Abrir el primer acordeón automáticamente if (index === 0) { accordionButton.classList.add('active'); panel.style.display = 'block'; } } else { showNoInfoMessage(); return; }}); }});