"use strict"; /* ========================================================= H2 CHAUFFEURSERVICE ÜBER-UNS-SEITE ========================================================= */ /* ========================================================= ÜBERSETZUNGEN ========================================================= */ const aboutTranslations = { de: { headerCta: "Fahrt anfragen", heroEyebrow: "Über H2 Chauffeurservice", heroTitle: "Persönlicher Service. Höchster Anspruch. Jede Fahrt.", heroText: "Wir stehen für zuverlässige, diskrete und komfortable Mobilität mit persönlicher Betreuung von der Anfrage bis zum Ziel.", heroPrimaryButton: "Mehr über uns erfahren", heroSecondaryButton: "Fahrt anfragen", introEyebrow: "Unser Anspruch", introTitle: "Chauffeurservice bedeutet für uns mehr als Transport.", introTextOne: "Jede Fahrt soll vom ersten Kontakt bis zur Ankunft ruhig, angenehm und professionell verlaufen. Deshalb verbinden wir hochwertige Fahrzeuge mit persönlicher Betreuung und sorgfältiger Planung.", introTextTwo: "Unsere Fahrgäste sollen sich jederzeit gut aufgehoben fühlen. Diskretion, Pünktlichkeit und ein aufmerksamer Service stehen dabei im Mittelpunkt.", philosophyEyebrow: "Unsere Philosophie", philosophyTitle: "Qualität zeigt sich in jedem Detail.", philosophyTextOne: "Von der Auswahl der Fahrzeugklasse über die Planung der Route bis zur persönlichen Begrüßung achten wir auf einen reibungslosen Ablauf.", philosophyTextTwo: "Wir arbeiten vorausschauend, respektvoll und lösungsorientiert. So entsteht ein Service, der sich selbstverständlich anfühlt und dennoch bis ins Detail vorbereitet ist.", philosophyLink: "Unsere Leistungen entdecken", valuesEyebrow: "Unsere Werte", valuesTitle: "Darauf können Sie sich bei jeder Fahrt verlassen.", valuesText: "Unser Qualitätsversprechen basiert auf klaren Grundsätzen, die wir bei jeder Anfrage und jeder Fahrt konsequent umsetzen.", valueOneTitle: "Zuverlässigkeit", valueOneText: "Sorgfältige Planung, pünktliche Abholung und verlässliche Kommunikation.", valueTwoTitle: "Diskretion", valueTwoText: "Ein respektvoller und vertraulicher Umgang mit Fahrgästen und persönlichen Informationen.", valueThreeTitle: "Komfort", valueThreeText: "Gepflegte Premiumfahrzeuge und eine ruhige, angenehme Reiseatmosphäre.", valueFourTitle: "Persönlichkeit", valueFourText: "Individuelle Betreuung und Lösungen, die genau zu Ihrer Fahrt passen.", promiseEyebrow: "Unser Serviceversprechen", promiseTitle: "Persönliche Betreuung vor, während und nach der Fahrt.", promiseText: "Wir betrachten jede Buchung individuell. Dabei berücksichtigen wir Ihre Reisedaten, persönlichen Wünsche, den Anlass und die passende Fahrzeugklasse.", promiseItemOne: "Persönliche Abstimmung Ihrer Fahrt", promiseItemTwo: "Sorgfältige Auswahl der Fahrzeugklasse", promiseItemThree: "Vorausschauende Routen- und Zeitplanung", promiseItemFour: "Direkte und verlässliche Kommunikation", promiseBadgeSmall: "Unser Anspruch", promiseBadgeLarge: "Jede Fahrt persönlich geplant", factOne: "Fahrten nach Vorbestellung", factTwo: "Premium-Fahrzeugklassen", factThree: "Persönliche Betreuung", factFour: "Kompromissloser Qualitätsanspruch", fleetEyebrow: "Unsere Fahrzeuge", fleetTitle: "Die passende Klasse für jede Fahrt.", fleetText: "Ob Geschäftsreise, exklusiver Anlass oder Gruppenfahrt: Unsere Fahrzeugklassen bieten die passende Kombination aus Komfort, Raum und repräsentativem Auftreten.", fleetButton: "Fahrzeugklassen ansehen", ctaEyebrow: "Ihre nächste Fahrt", ctaTitle: "Erleben Sie Chauffeurservice mit persönlichem Anspruch.", ctaText: "Senden Sie uns Ihre Reisedaten. Wir beraten Sie persönlich und erstellen ein unverbindliches Angebot.", ctaButton: "Jetzt Fahrt anfragen", footerText: "Exklusiver Chauffeurservice für Geschäftsreisen, Flughafentransfers, Events und individuelle Fahrten.", footerNavigation: "Navigation", footerContact: "Kontakt", footerLegal: "Rechtliches", footerRights: "Alle Rechte vorbehalten." }, en: { headerCta: "Request a ride", heroEyebrow: "About H2 Chauffeurservice", heroTitle: "Personal service. Exceptional standards. Every journey.", heroText: "We stand for reliable, discreet and comfortable mobility with personal assistance from the initial request to the final destination.", heroPrimaryButton: "Learn more about us", heroSecondaryButton: "Request a ride", introEyebrow: "Our standards", introTitle: "For us, chauffeur service is more than transportation.", introTextOne: "Every journey should feel calm, comfortable and professional from the first contact to the moment of arrival. We therefore combine premium vehicles with personal assistance and careful planning.", introTextTwo: "Our passengers should feel well looked after at all times. Discretion, punctuality and attentive service are always at the heart of what we do.", philosophyEyebrow: "Our philosophy", philosophyTitle: "Quality is reflected in every detail.", philosophyTextOne: "From selecting the appropriate vehicle class and planning the route to personally welcoming our passengers, we focus on a smooth and reliable experience.", philosophyTextTwo: "We work proactively, respectfully and with a solution-oriented approach. The result is a service that feels effortless while being carefully prepared down to the smallest detail.", philosophyLink: "Discover our services", valuesEyebrow: "Our values", valuesTitle: "What you can rely on during every journey.", valuesText: "Our commitment to quality is based on clear principles that we consistently apply to every request and every journey.", valueOneTitle: "Reliability", valueOneText: "Careful planning, punctual pickups and dependable communication.", valueTwoTitle: "Discretion", valueTwoText: "Respectful and confidential handling of passengers and personal information.", valueThreeTitle: "Comfort", valueThreeText: "Well-maintained premium vehicles and a calm, comfortable travel environment.", valueFourTitle: "Personal service", valueFourText: "Individual assistance and solutions tailored precisely to your journey.", promiseEyebrow: "Our service promise", promiseTitle: "Personal assistance before, during and after your journey.", promiseText: "We treat every booking individually, taking into account your travel details, personal preferences, occasion and the most suitable vehicle class.", promiseItemOne: "Personal coordination of your journey", promiseItemTwo: "Careful selection of the vehicle class", promiseItemThree: "Proactive route and time planning", promiseItemFour: "Direct and reliable communication", promiseBadgeSmall: "Our standards", promiseBadgeLarge: "Every journey personally planned", factOne: "Journeys with advance booking", factTwo: "Premium vehicle classes", factThree: "Personal assistance", factFour: "Uncompromising quality standards", fleetEyebrow: "Our vehicles", fleetTitle: "The right class for every journey.", fleetText: "Whether for business travel, an exclusive occasion or group transportation, our vehicle classes provide the ideal combination of comfort, space and a prestigious appearance.", fleetButton: "View vehicle classes", ctaEyebrow: "Your next journey", ctaTitle: "Experience chauffeur service with a personal commitment to quality.", ctaText: "Send us your travel details. We will advise you personally and prepare a non-binding quotation.", ctaButton: "Request a ride now", footerText: "Exclusive chauffeur service for business travel, airport transfers, events and individual journeys.", footerNavigation: "Navigation", footerContact: "Contact", footerLegal: "Legal", footerRights: "All rights reserved." } }; /* ========================================================= DOM-ELEMENTE ========================================================= */ const aboutTranslatedElements = document.querySelectorAll("[data-about-i18n]"); const aboutLanguageButtons = document.querySelectorAll(".language-button"); const currentYearElement = document.getElementById("current-year"); /* ========================================================= SPRACHE LADEN UND SPEICHERN ========================================================= */ function getSavedAboutLanguage() { try { const savedLanguage = localStorage.getItem("h2-language"); return savedLanguage === "en" ? "en" : "de"; } catch (error) { return "de"; } } function saveAboutLanguage(language) { try { localStorage.setItem( "h2-language", language ); } catch (error) { /* LocalStorage ist nicht verfügbar. */ } } let currentAboutLanguage = getSavedAboutLanguage(); /* ========================================================= ÜBERSETZUNGEN ANWENDEN ========================================================= */ function applyAboutLanguage(language) { const selectedLanguage = aboutTranslations[language] ? language : "de"; const translations = aboutTranslations[selectedLanguage]; currentAboutLanguage = selectedLanguage; document.documentElement.lang = selectedLanguage; aboutTranslatedElements.forEach((element) => { const translationKey = element.dataset.aboutI18n; if ( translationKey && Object.prototype.hasOwnProperty.call( translations, translationKey ) ) { element.textContent = translations[translationKey]; } }); updateAboutLanguageButtons( selectedLanguage ); saveAboutLanguage( selectedLanguage ); } /* ========================================================= SPRACHBUTTONS AKTUALISIEREN ========================================================= */ function updateAboutLanguageButtons(language) { aboutLanguageButtons.forEach((button) => { const isActive = button.dataset.language === language; button.classList.toggle( "active", isActive ); button.setAttribute( "aria-pressed", String(isActive) ); }); } /* ========================================================= SPRACHBUTTONS ========================================================= */ aboutLanguageButtons.forEach((button) => { button.addEventListener("click", () => { const selectedLanguage = button.dataset.language; if (!selectedLanguage) { return; } applyAboutLanguage( selectedLanguage ); }); }); /* ========================================================= FOOTER-JAHR ========================================================= */ function setCurrentYear() { if (!currentYearElement) { return; } currentYearElement.textContent = String(new Date().getFullYear()); } /* ========================================================= ANKER-NAVIGATION ========================================================= */ function enableAboutSmoothScrolling() { const anchorLinks = document.querySelectorAll( 'a[href^="#"]:not([href="#"])' ); anchorLinks.forEach((link) => { link.addEventListener( "click", (event) => { const targetSelector = link.getAttribute("href"); if (!targetSelector) { return; } const targetElement = document.querySelector( targetSelector ); if (!targetElement) { return; } event.preventDefault(); targetElement.scrollIntoView({ behavior: prefersReducedMotion() ? "auto" : "smooth", block: "start" }); } ); }); } /* ========================================================= REDUZIERTE BEWEGUNG ========================================================= */ function prefersReducedMotion() { return window.matchMedia( "(prefers-reduced-motion: reduce)" ).matches; } /* ========================================================= INITIALISIERUNG ========================================================= */ function initializeAboutPage() { applyAboutLanguage( currentAboutLanguage ); setCurrentYear(); enableAboutSmoothScrolling(); } initializeAboutPage();