Reserva tu plaza · Ruta turística
Horario fijo: 12,00–. 2025-26. Puedes elegir cualquier dia de la semana. Pago en mano antes de iniciarse la ruta.
Entrada general → 10 € Por persona.
Grupos de más de 10 personas → 8 € PAX
Familias numerosas → 7 € PAX
Entre semana → 8 € PAX
Niños menores de 13 años gratis
const calcPersonas = el('calcPersonas'); const calcFecha = el('calcFecha'); const calcFamilia = el('calcFamilia'); const outDesc = el('calcDescuento'); const outPpu = el('calcPpu'); const outTotal = el('calcTotal');
// Si existen los campos del formulario principal, sincroniza valores const formPersonas = document.getElementById('personas'); const formFecha = document.getElementById('fecha'); if(formPersonas){ calcPersonas.value = Math.max(1, parseInt(formPersonas.value||"1",10)); formPersonas.addEventListener('input', ()=>{ calcPersonas.value = formPersonas.value; actualizar(); }); } if(formFecha){ calcFecha.value = formFecha.value; formFecha.addEventListener('input', ()=>{ calcFecha.value = formFecha.value; actualizar(); }); }
['input','change'].forEach(ev=>{ calcPersonas.addEventListener(ev, actualizar); calcFecha.addEventListener(ev, actualizar); calcFamilia.addEventListener(ev, actualizar); });
function esEntreSemana(isoDate){ if(!isoDate) return false; const d = new Date(isoDate + 'T12:00:00'); // evitar TZ issues const dow = d.getDay(); // 0=Domingo ... 6=Sábado return dow>=1 && dow<=5; } function actualizar(){ const n = Math.max(1, parseInt(calcPersonas.value||"1",10)); const isGrupo = n > 10; const isFamilia = calcFamilia.checked; const isLaboral = esEntreSemana(calcFecha.value);
// Descuentos (no acumulables): elegir el mayor let desc = 0; let etiqueta = 'Sin descuento'; if(isFamilia){ desc = 0.30; etiqueta = 'Familia numerosa (–30%)'; } else if(isGrupo){ desc = 0.20; etiqueta = 'Grupo > 10 (–20%)'; } else if(isLaboral){ desc = 0.20; etiqueta = 'Entre semana (–20%)'; }
const ppu = BASE * (1 - desc); const total = ppu * n;
outDesc.textContent = etiqueta; outPpu.textContent = ppu.toFixed(2).replace('.', ',') + ' €'; outTotal.textContent= total.toFixed(2).replace('.', ',') + ' €'; }
actualizar();
})();