OKTOBERFEST 2026
.okt-wrapper { font-family: Arial, sans-serif; line-height: 1.6; color: #222; width: 100%; max-width: 100%; } .okt-box { background: #fff; border: 1px solid #e6e6e6; border-radius: 12px; padding: 18px; margin: 0 0 18px 0; } .okt-hero { background: #f7f3ec; border-color: #e4d8c4; } .okt-wrapper h2, .okt-wrapper h3, .okt-wrapper h4 { margin-top: 0; color: #2a2a2a; } .okt-kicker { font-size: 12px; text-transform: uppercase; letter-spacing: .05em; color: #7a7a7a; font-weight: 700; margin-bottom: 8px; } .okt-tags { margin-top: 14px; } .okt-tags span { display: inline-block; background: #ececec; border-radius: 20px; padding: 7px 11px; margin: 0 8px 8px 0; font-size: 13px; font-weight: 600; } .okt-row { background: #f7f7f7; border-radius: 10px; padding: 12px 14px; margin-bottom: 10px; } .okt-row-label { font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: #777; font-weight: 700; margin-bottom: 4px; } .okt-row-value { font-size: 15px; font-weight: 600; color: #222; } .okt-alert { background: #fff8e7; border-left: 4px solid #d6a63c; border-radius: 6px; padding: 12px 14px; margin-bottom: 16px; } .okt-program-block { display: none; } .okt-program-block.active { display: block; } .okt-program-block ul { padding-left: 20px; margin: 10px 0 0 0; } .okt-program-block li { margin-bottom: 6px; } .okt-departure-output { background: #fafafa; border: 1px solid #ececec; border-radius: 10px; padding: 14px; } .okt-departure-item { background: #fff; border: 1px solid #eee; border-radius: 10px; padding: 12px 14px; margin-bottom: 10px; } .okt-status-info { background: #f4f7fb; border: 1px solid #d9e4f2; border-radius: 10px; padding: 14px; font-weight: 600; } .okt-status-warn { background: #fff4f4; border: 1px solid #f0d0d0; border-radius: 10px; padding: 14px; font-weight: 600; } .okt-note { font-size: 14px; color: #666; margin-top: 10px; } .okt-cta { background: #f4f7fb; border-color: #d9e4f2; } .okt-cta ul { padding-left: 20px; margin: 10px 0 0 0; } .okt-cta li { margin-bottom: 6px; } @media (max-width: 749px) { .okt-box { padding: 14px; } .okt-tags span { font-size: 12px; padding: 6px 10px; } } Parti per l’Oktoberfest con una formula organizzata, comoda e senza pensieri Seleziona Regione | Città, Weekend e Programma: questa pagina aggiornerà automaticamente sia il programma di viaggio sia i dettagli della tua partenza. Bus Gran Turismo Ingresso Oktoberfest Accompagnatrice Assistenza 24h Welcome kit Riepilogo selezione Hai selezionato Regione | Città — Weekend — Programma — Stato selezione In attesa di selezione Programma di viaggio Il programma mostrato qui sotto cambia in base alla variante Programma. Viaggio + Oktoberfest Formula ideale per chi vuole vivere l’Oktoberfest in giornata e rientrare in Italia senza pernottamento. Partenza il venerdì sera dalle rispettive città come orari da tabella Viaggio comodo in bus GT e arrivo a Monaco in mattinata Ingresso all’Oktoberfest prima dell’apertura del Festival Intera giornata libera tra amici, birre giganti, musica e centro storico Ore 23:30 ritorno al bus e partenza per l’Italia Arrivo in Italia nella giornata di domenica con orari variabili a seconda della città di provenienza La quota comprende Viaggio andata e ritorno in bus Gran Turismo Ingresso all’Oktoberfest Prese USB Giornata all’Oktoberfest + Monaco centro Welcome kit (zaino + gadget in omaggio) Assicurazione RC Accompagnatrice sempre disponibile Materiale informativo Assistenza 24h Viaggio + Oktoberfest + Hotel 1 Notte Perfetto per chi vuole vivere 2 giorni tra Monaco e Oktoberfest con pernottamento in hotel. Partenza il venerdì sera dalle rispettive città come orari da tabella Viaggio comodo in bus GT e arrivo a Monaco in mattinata Ingresso all’Oktoberfest prima dell’apertura del Festival Intera giornata libera tra amici, birre giganti, musica e centro storico Ore 23:30 ritorno al bus e trasferimento in hotel Pernottamento in hotel con spa Prima colazione e ritorno all’Oktoberfest fino alle ore 14:00 Partenza per l’Italia domenica pomeriggio alle ore 14:30 Arrivo in Italia nella giornata di domenica con orari variabili a seconda della città di provenienza La quota comprende Viaggio andata e ritorno in bus Gran Turismo Ingresso all’Oktoberfest Prese USB Pernottamento in hotel 3 o 4 stelle nei pressi di Monaco Welcome kit (zaino + gadget in omaggio) Prima colazione Giornata all’Oktoberfest + Monaco centro Assicurazione RC Accompagnatrice sempre disponibile Assistenza 24h Viaggio + Oktoberfest + Hotel 2 Notti La formula più completa per chi vuole godersi fino a 3 giorni di esperienza tra Monaco e Oktoberfest. Partenza dalle rispettive città il giovedì sera come orari da tabella Viaggio comodo in bus GT e arrivo a Monaco il venerdì mattina Intera giornata libera all’Oktoberfest il venerdì Ore 23:30 di venerdì ritorno al bus e trasferimento in hotel Pernottamento in hotel con spa il venerdì sera Prima colazione e ritorno all’Oktoberfest sabato mattina fino alle ore 23:00 Pernottamento in hotel con spa il sabato sera Prima colazione e ritorno all’Oktoberfest fino alle ore 14:00 Partenza per l’Italia domenica pomeriggio alle ore 14:30 Arrivo in Italia nella giornata di domenica con orari variabili a seconda della città di provenienza La quota comprende Viaggio andata e ritorno in bus Gran Turismo Ingresso all’Oktoberfest Prese USB 2 pernottamenti in hotel 3 o 4 stelle nei pressi di Monaco 1 welcome kit (zaino + gadget in omaggio) 2 prime colazioni 2 giornate all’Oktoberfest + Monaco centro Assicurazione RC Accompagnatrice sempre disponibile Assistenza 24h Viaggio + Oktoberfest + Innsbruck + Hotel 1 Notte Formula speciale con pernottamento e visita della città di Innsbruck. Partenza dalle rispettive città il venerdì sera come orari da tabella Viaggio comodo in bus GT e arrivo a Monaco in mattinata Ingresso all’Oktoberfest prima dell’apertura del Festival Intera giornata libera tra amici, birre giganti, musica e centro storico Ore 23:30 ritorno al bus e trasferimento in hotel Pernottamento in hotel con spa Prima colazione inclusa Visita della città di Innsbruck Partenza da Innsbruck domenica alle ore 15:30 Arrivo in Italia nella giornata di domenica con orari variabili a seconda della città di provenienza La quota comprende Viaggio andata e ritorno in bus Gran Turismo Ingresso all’Oktoberfest Prese USB Pernottamento in hotel 3 o 4 stelle Welcome kit (zaino + gadget in omaggio) Prima colazione Giornata all’Oktoberfest + Monaco centro + Innsbruck Assicurazione RC Accompagnatrice sempre disponibile Assistenza 24h Dettagli partenza Città di partenza, luogo di carico e orari Seleziona una città e un weekend per visualizzare i dettagli di partenza. Gli orari indicati fanno riferimento a ritrovo e partenza dal punto di carico selezionato. Come scegliere la formula giusta Solo Bus: se vuoi spendere meno e vivere l’Oktoberfest in giornata Hotel 1 Notte: se vuoi una formula equilibrata tra esperienza e comfort Hotel 2 Notti: se vuoi il pacchetto più completo Innsbruck: se vuoi aggiungere anche una tappa in città e un’esperienza più ricca (function() { const departureData = { "Emilia-Romagna | Riccione": { "Weekend 1": { date: "18/09/2026", place: "Distributore di Benzina Indipendente (BAR A14) in Via E. Berlinguer", meeting: "21:15", departure: "21:35" }, "Weekend 2 programma 3": { date: "24/09/2026", place: "Distributore di Benzina Indipendente (BAR A14) in Via E. Berlinguer", meeting: "21:15", departure: "21:35" }, "Weekend 2": { date: "25/09/2026", place: "Distributore di Benzina Indipendente (BAR A14) in Via E. Berlinguer", meeting: "21:15", departure: "21:35" }, "Weekend 3": { date: "02/10/2026", place: "Distributore di Benzina Indipendente (BAR A14) in Via E. Berlinguer", meeting: "21:15", departure: "21:35" } }, "Emilia-Romagna | Rimini": { "Weekend 1": { date: "18/09/2026", place: "Parcheggio Ristorante “da Berto” fuori dal casello di Rimini Nord", meeting: "21:30", departure: "21:50" }, "Weekend 2 programma 3": { date: "24/09/2026", place: "Parcheggio Ristorante “da Berto” fuori dal casello di Rimini Nord", meeting: "21:30", departure: "21:50" }, "Weekend 2": { date: "25/09/2026", place: "Parcheggio Ristorante “da Berto” fuori dal casello di Rimini Nord", meeting: "21:30", departure: "21:50" }, "Weekend 3": { date: "02/10/2026", place: "Parcheggio Ristorante “da Berto” fuori dal casello di Rimini Nord", meeting: "21:30", departure: "21:50" } }, "Emilia-Romagna | Cesena": { "Weekend 1": { date: "18/09/2026", place: "Parcheggio di fronte alla COOP in Via Dino Rondani, Centrale Adriatica, fuori dal casello di Cesena Nord", meeting: "21:50", departure: "22:10" }, "Weekend 2 programma 3": { date: "24/09/2026", place: "Parcheggio di fronte alla COOP in Via Dino Rondani, Centrale Adriatica, fuori dal casello di Cesena Nord", meeting: "21:50", departure: "22:10" }, "Weekend 2": { date: "25/09/2026", place: "Parcheggio di fronte alla COOP in Via Dino Rondani, Centrale Adriatica, fuori dal casello di Cesena Nord", meeting: "21:50", departure: "22:10" }, "Weekend 3": { date: "02/10/2026", place: "Parcheggio di fronte alla COOP in Via Dino Rondani, Centrale Adriatica, fuori dal casello di Cesena Nord", meeting: "21:50", departure: "22:10" } }, "Emilia-Romagna | Forlì": { "Weekend 1": { date: "18/09/2026", place: "Punto Bus - Stazione di Forlì - Piazzale Ilario Bandini", meeting: "22:30", departure: "23:00" }, "Weekend 2 programma 3": { date: "24/09/2026", place: "Punto Bus - Stazione di Forlì - Piazzale Ilario Bandini", meeting: "22:30", departure: "23:00" }, "Weekend 2": { date: "25/09/2026", place: "Punto Bus - Stazione di Forlì - Piazzale Ilario Bandini", meeting: "22:30", departure: "23:00" }, "Weekend 3": { date: "02/10/2026", place: "Punto Bus - Stazione di Forlì - Piazzale Ilario Bandini", meeting: "22:30", departure: "23:00" } }, "Emilia-Romagna | Imola": { "Weekend 1": { date: "18/09/2026", place: "Parcheggio comunale in Via Molino Rosso dietro l’Hotel Molino Rosso – uscita casello di Imola", meeting: "23:15", departure: "23:45" }, "Weekend 2 programma 3": { date: "24/09/2026", place: "Parcheggio comunale in Via Molino Rosso dietro l’Hotel Molino Rosso – uscita casello di Imola", meeting: "23:15", departure: "23:45" }, "Weekend 2": { date: "25/09/2026", place: "Parcheggio comunale in Via Molino Rosso dietro l’Hotel Molino Rosso – uscita casello di Imola", meeting: "23:15", departure: "23:45" }, "Weekend 3": { date: "02/10/2026", place: "Parcheggio comunale in Via Molino Rosso dietro l’Hotel Molino Rosso – uscita casello di Imola", meeting: "23:15", departure: "23:45" } }, "Emilia-Romagna | Bologna": { "Weekend 1": { date: "19/09/2026", place: "Ritrovo al casello autostradale uscita Bologna Fiera – Parcheggio Comet", meeting: "23:40", departure: "00:10" }, "Weekend 2 programma 3": { date: "25/09/2026", place: "Ritrovo al casello autostradale uscita Bologna Fiera – Parcheggio Comet", meeting: "23:40", departure: "00:10" }, "Weekend 2": { date: "26/09/2026", place: "Ritrovo al casello autostradale uscita Bologna Fiera – Parcheggio Comet", meeting: "23:40", departure: "00:10" }, "Weekend 3": { date: "03/10/2026", place: "Ritrovo al casello autostradale uscita Bologna Fiera – Parcheggio Comet", meeting: "23:40", departure: "00:10" } }, "Emilia-Romagna | Modena": { "Weekend 1": { date: "19/09/2026", place: "Parcheggio Strada Cave di Ramo, di fronte all’International Camping – uscita Modena Nord", meeting: "00:25", departure: "00:50" }, "Weekend 2 programma 3": { date: "25/09/2026", place: "Parcheggio Strada Cave di Ramo, di fronte all’International Camping – uscita Modena Nord", meeting: "00:25", departure: "00:50" }, "Weekend 2": { date: "26/09/2026", place: "Parcheggio Strada Cave di Ramo, di fronte all’International Camping – uscita Modena Nord", meeting: "00:25", departure: "00:50" }, "Weekend 3": { date: "03/10/2026", place: "Parcheggio Strada Cave di Ramo, di fronte all’International Camping – uscita Modena Nord", meeting: "00:25", departure: "00:50" } }, "Emilia-Romagna | Ferrara": { "Weekend 2": { date: "26/09/2026", place: "Parcheggio in Via Silvan, fuori Casello di Ferrara Nord", meeting: "00:00", departure: "00:30" }, "Weekend 3": { date: "03/10/2026", place: "Parcheggio in Via Silvan, fuori Casello di Ferrara Nord", meeting: "00:00", departure: "00:30" } }, "Veneto | Treviso": { "Weekend 2": { date: "25/09/2026", place: "Viale Trento e Trieste (Parcheggio Stazione)", meeting: "22:40", departure: "23:10" }, "Weekend 3": { date: "02/10/2026", place: "Viale Trento e Trieste (Parcheggio Stazione)", meeting: "22:40", departure: "23:10" } }, "Veneto | Venezia": { "Weekend 2": { date: "25/09/2026", place: "Mestre, Rotonda Romea (Parcheggio Autogrill Villabona Sud)", meeting: "23:20", departure: "23:40" }, "Weekend 3": { date: "02/10/2026", place: "Mestre, Rotonda Romea (Parcheggio Autogrill Villabona Sud)", meeting: "23:20", departure: "23:40" } }, "Veneto | Padova": { "Weekend 2": { date: "26/09/2026", place: "Uscita Autostradale Padova Est c/o Hotel Four Points by Sheraton Padova", meeting: "23:55", departure: "00:15" }, "Weekend 3": { date: "03/10/2026", place: "Uscita Autostradale Padova Est c/o Hotel Four Points by Sheraton Padova", meeting: "23:55", departure: "00:15" } }, "Veneto | Vicenza": { "Weekend 2": { date: "26/09/2026", place: "Via Foscarina (Parcheggio A4 fuori dal Casello di Vicenza Est)", meeting: "00:35", departure: "00:55" }, "Weekend 3": { date: "03/10/2026", place: "Via Foscarina (Parcheggio A4 fuori dal Casello di Vicenza Est)", meeting: "00:35", departure: "00:55" } }, "Veneto | Verona": { "Weekend 1": { date: "19/09/2026", place: "Parcheggio fuori dal Casello Autostradale di Verona Nord", meeting: "01:30", departure: "01:50" }, "Weekend 2 programma 3": { date: "25/09/2026", place: "Parcheggio fuori dal Casello Autostradale di Verona Nord", meeting: "01:30", departure: "01:50" }, "Weekend 2": { date: "26/09/2026", place: "Parcheggio fuori dal Casello Autostradale di Verona Nord", meeting: "01:30", departure: "01:50" }, "Weekend 3": { date: "03/10/2026", place: "Parcheggio fuori dal Casello Autostradale di Verona Nord", meeting: "01:30", departure: "01:50" } }, "Lombardia | Cascina Gobba": { "Weekend 3": { date: "02/10/2026", place: "Parcheggio fuori dalla Fermata della metro M2", meeting: "22:15", departure: "22:45" } }, "Lombardia | Monza": { "Weekend 3": { date: "02/10/2026", place: "Via Giacomo Matteotti (area adiacente rotonda Via Matteotti fuori dal Casello Autostrada A4 Agrate)", meeting: "22:30", departure: "23:00" } }, "Lombardia | Bergamo": { "Weekend 3": { date: "02/10/2026", place: "Fermata bus autostradale di Dalmine", meeting: "23:15", departure: "23:45" } }, "Lombardia | Brescia": { "Weekend 3": { date: "03/10/2026", place: "Parcheggio fuori dal Casello Autostradale Brescia Centro", meeting: "00:00", departure: "00:30" } }, "Lombardia | Desenzano": { "Weekend 3": { date: "03/10/2026", place: "Parcheggio Autostrada A4 Desenzano del Garda", meeting: "00:25", departure: "00:55" } }, "Toscana | Pisa": { "Weekend 2": { date: "25/09/2026", place: "Parcheggio Coop Porta a Mare (zona industriale) fuori dal Casello Autostradale Pisa Centro", meeting: "19:25", departure: "19:50" }, "Weekend 3": { date: "02/10/2026", place: "Parcheggio Coop Porta a Mare (zona industriale) fuori dal Casello Autostradale Pisa Centro", meeting: "19:25", departure: "19:50" } }, "Toscana | Lucca": { "Weekend 2": { date: "25/09/2026", place: "Parcheggio Mc Donald’s fuori Casello Autostradale Lucca Est", meeting: "20:00", departure: "20:30" }, "Weekend 3": { date: "02/10/2026", place: "Parcheggio Mc Donald’s fuori Casello Autostradale Lucca Est", meeting: "20:00", departure: "20:30" } }, "Toscana | Pistoia": { "Weekend 2": { date: "25/09/2026", place: "Distributore IP su Via Raccordo Autostradale, fuori dal Casello Pistoia", meeting: "20:40", departure: "21:10" }, "Weekend 3": { date: "02/10/2026", place: "Distributore IP su Via Raccordo Autostradale, fuori dal Casello Pistoia", meeting: "20:40", departure: "21:10" } }, "Toscana | Prato": { "Weekend 2": { date: "25/09/2026", place: "Parcheggio Mc Donald’s fuori Casello Autostradale Prato Est", meeting: "21:15", departure: "21:45" }, "Weekend 3": { date: "02/10/2026", place: "Parcheggio Mc Donald’s fuori Casello Autostradale Prato Est", meeting: "21:15", departure: "21:45" } }, "Toscana | Firenze": { "Weekend 2": { date: "25/09/2026", place: "Area di servizio SARNI fuori dal Casello Autostradale Firenze Nord", meeting: "22:00", departure: "22:30" }, "Weekend 3": { date: "02/10/2026", place: "Area di servizio SARNI fuori dal Casello Autostradale Firenze Nord", meeting: "22:00", departure: "22:30" } }, "Trentino | Trento": { "Weekend 1": { date: "19/09/2026", place: "Parcheggio fuori dal casello Autostradale A22 Trento Sud", meeting: "02:15", departure: "02:45" }, "Weekend 2 programma 3": { date: "25/09/2026", place: "Parcheggio fuori dal casello Autostradale A22 Trento Sud", meeting: "02:15", departure: "02:45" }, "Weekend 2": { date: "26/09/2026", place: "Parcheggio fuori dal casello Autostradale A22 Trento Sud", meeting: "02:15", departure: "02:45" }, "Weekend 3": { date: "03/10/2026", place: "Parcheggio fuori dal casello Autostradale A22 Trento Sud", meeting: "02:15", departure: "02:45" } }, "Trentino | Bolzano": { "Weekend 1": { date: "19/09/2026", place: "Parcheggio fuori dal Casello Autostradale A22 Bolzano Sud", meeting: "03:00", departure: "03:25" }, "Weekend 2 programma 3": { date: "25/09/2026", place: "Parcheggio fuori dal Casello Autostradale A22 Bolzano Sud", meeting: "03:00", departure: "03:25" }, "Weekend 2": { date: "26/09/2026", place: "Parcheggio fuori dal Casello Autostradale A22 Bolzano Sud", meeting: "03:00", departure: "03:25" }, "Weekend 3": { date: "03/10/2026", place: "Parcheggio fuori dal Casello Autostradale A22 Bolzano Sud", meeting: "03:00", departure: "03:25" } }, "Marche | Ancona": { "Weekend 2": { date: "25/09/2026", place: "Parcheggio di fronte all’IKEA all’uscita autostradale di Ancona Sud", meeting: "19:30", departure: "20:00" }, "Weekend 3": { date: "02/10/2026", place: "Parcheggio di fronte all’IKEA all’uscita autostradale di Ancona Sud", meeting: "19:30", departure: "20:00" } }, "Marche | Montemarciano": { "Weekend 2": { date: "25/09/2026", place: "Parcheggio fuori dal Casello Autostradale di Montemarciano", meeting: "19:45", departure: "20:15" }, "Weekend 3": { date: "02/10/2026", place: "Parcheggio fuori dal Casello Autostradale di Montemarciano", meeting: "19:45", departure: "20:15" } }, "Marche | Senigallia": { "Weekend 2": { date: "25/09/2026", place: "Parcheggio fuori dal Casello Autostradale di Senigallia", meeting: "20:00", departure: "20:30" }, "Weekend 3": { date: "02/10/2026", place: "Parcheggio fuori dal Casello Autostradale di Senigallia", meeting: "20:00", departure: "20:30" } }, "Marche | Fano": { "Weekend 2": { date: "25/09/2026", place: "Parcheggio fuori dal Casello Autostradale di Fano", meeting: "20:20", departure: "20:50" }, "Weekend 3": { date: "02/10/2026", place: "Parcheggio fuori dal Casello Autostradale di Fano", meeting: "20:20", departure: "20:50" } }, "Marche | Pesaro": { "Weekend 2": { date: "25/09/2026", place: "Parcheggio fuori dal Casello Autostradale di Pesaro-Urbino", meeting: "20:40", departure: "21:05" }, "Weekend 3": { date: "02/10/2026", place: "Parcheggio fuori dal Casello Autostradale di Pesaro-Urbino", meeting: "20:40", departure: "21:05" } } }; const elCity = document.getElementById("okt-selected-city"); const elWeekend = document.getElementById("okt-selected-weekend"); const elProgram = document.getElementById("okt-selected-program"); const elState = document.getElementById("okt-selection-state"); const departureOutput = document.getElementById("okt-departure-output"); const programBlocks = document.querySelectorAll(".okt-program-block"); function normalizeText(str) { return (str || "").toString().replace(/\s+/g, " ").trim().toLowerCase(); } function getOptionValueByKeyword(keyword) { const key = normalizeText(keyword); const checkedInputs = Array.from(document.querySelectorAll('input[type="radio"]:checked')); for (const input of checkedInputs) { const fs = input.closest("fieldset"); const fsText = fs ? normalizeText(fs.innerText) : ""; const inputName = normalizeText(input.name || ""); if (fsText.includes(key) || inputName.includes(key)) { return input.value || ""; } } const selects = Array.from(document.querySelectorAll('select[name^="options"], select')); for (const select of selects) { const surrounding = select.closest(".product-form__input, .selector-wrapper, .variant-input-wrapper, [data-option-position]"); const surroundingText = surrounding ? normalizeText(surrounding.innerText) : ""; const name = normalizeText(select.name || ""); const id = normalizeText(select.id || ""); if (surroundingText.includes(key) || name.includes(key) || id.includes(key)) { const opt = select.options[select.selectedIndex]; return opt ? opt.text : ""; } } const fieldsets = Array.from(document.querySelectorAll("fieldset")); for (const fs of fieldsets) { const fsText = normalizeText(fs.innerText); if (fsText.includes(key)) { const checked = fs.querySelector('input[type="radio"]:checked'); if (checked) return checked.value || ""; } } return ""; } function mapProgram(rawValue) { const v = normalizeText(rawValue); if (v.includes("innsbruck")) return "innsbruck"; if (v.includes("2 notti")) return "2-notti"; if (v.includes("1 notte")) return "1-notte"; return "solo-bus"; } function mapWeekend(rawValue) { const v = normalizeText(rawValue); if (v.includes("programma 3") || v.includes("p3")) return "Weekend 2 programma 3"; if (v.includes("weekend 1") || v.includes("week 1")) return "Weekend 1"; if (v.includes("weekend 2") || v.includes("week 2")) return "Weekend 2"; if (v.includes("weekend 3") || v.includes("week 3")) return "Weekend 3"; return rawValue || ""; } function mapCity(rawValue) { const v = normalizeText(rawValue); const aliases = [ ["Emilia-Romagna | Riccione", ["riccione"]], ["Emilia-Romagna | Rimini", ["rimini"]], ["Emilia-Romagna | Cesena", ["cesena"]], ["Emilia-Romagna | Forlì", ["forli", "forlì"]], ["Emilia-Romagna | Imola", ["imola"]], ["Emilia-Romagna | Bologna", ["bologna"]], ["Emilia-Romagna | Modena", ["modena"]], ["Emilia-Romagna | Ferrara", ["ferrara"]], ["Veneto | Treviso", ["treviso"]], ["Veneto | Venezia", ["venezia", "mestre"]], ["Veneto | Padova", ["padova"]], ["Veneto | Vicenza", ["vicenza"]], ["Veneto | Verona", ["verona"]], ["Lombardia | Cascina Gobba", ["cascina gobba", "milano"]], ["Lombardia | Monza", ["monza"]], ["Lombardia | Bergamo", ["bergamo"]], ["Lombardia | Brescia", ["brescia"]], ["Lombardia | Desenzano", ["desenzano"]], ["Toscana | Pisa", ["pisa"]], ["Toscana | Lucca", ["lucca"]], ["Toscana | Pistoia", ["pistoia"]], ["Toscana | Prato", ["prato"]], ["Toscana | Firenze", ["firenze"]], ["Trentino | Trento", ["trento"]], ["Trentino | Bolzano", ["bolzano"]], ["Marche | Ancona", ["ancona"]], ["Marche | Montemarciano", ["montemarciano"]], ["Marche | Senigallia", ["senigallia"]], ["Marche | Fano", ["fano"]], ["Marche | Pesaro", ["pesaro"]] ]; for (const [label, keys] of aliases) { for (const key of keys) { if (v.includes(normalizeText(key))) return label; } } return rawValue || ""; } function showProgram(programKey) { programBlocks.forEach(block => block.classList.remove("active")); const target = document.querySelector('.okt-program-block[data-program-key="' + programKey + '"]'); if (target) target.classList.add("active"); } function renderDeparture(city, weekend) { const cityData = departureData[city]; if (!city && !weekend) { departureOutput.innerHTML = 'Seleziona una città e un weekend per visualizzare i dettagli di partenza.'; return; } if (!city) { departureOutput.innerHTML = 'Seleziona la variante Regione | Città per vedere il punto di carico e gli orari.'; return; } if (!weekend) { departureOutput.innerHTML = 'Seleziona anche il Weekend per visualizzare la data corretta di partenza.'; return; } if (!cityData) { departureOutput.innerHTML = 'Non sono riuscito ad associare automaticamente la città selezionata ai dati di partenza. Controlla che il nome variante corrisponda al formato previsto.'; return; } const trip = cityData[weekend]; if (!trip) { const available = Object.keys(cityData).join(", "); departureOutput.innerHTML = 'Partenza non disponibile per questa combinazione.La città selezionata non risulta disponibile per ' + weekend + '.Weekend disponibili per ' + city + ': ' + available + ''; return; } departureOutput.innerHTML = 'Città di partenza' + city + '' + 'Weekend' + weekend + '' + 'Data partenza' + trip.date + '' + 'Orario ritrovo' + trip.meeting + '' + 'Orario partenza' + trip.departure + '' + 'Luogo di carico' + trip.place + ''; } function updateAll() { const rawCity = getOptionValueByKeyword("regione") || getOptionValueByKeyword("città") || getOptionValueByKeyword("citta"); const rawWeekend = getOptionValueByKeyword("weekend"); const rawProgram = getOptionValueByKeyword("programma"); const city = mapCity(rawCity); const weekend = mapWeekend(rawWeekend); const program = rawProgram || ""; elCity.textContent = city || "—"; elWeekend.textContent = weekend || "—"; elProgram.textContent = program || "—"; elState.textContent = (city || weekend || program) ? "Selezione aggiornata" : "In attesa di selezione"; showProgram(mapProgram(program)); renderDeparture(city, weekend); } document.addEventListener("change", function() { setTimeout(updateAll, 50); setTimeout(updateAll, 250); }); document.addEventListener("DOMContentLoaded", function() { setTimeout(updateAll, 300); }); setTimeout(updateAll, 500); setTimeout(updateAll, 1200); })();
More you might like
Related
Oktoberfest Accessoires Set – BierSpaßSet Oktoberfest 2026
Related
Oktoberfest Gartenflagge – BierFest Mann Oktoberfest 2026
Related
Oktoberfest Gartenflagge – BierFest Mann Oktoberfest 2026
Related