144 lines
4.9 KiB
JavaScript
144 lines
4.9 KiB
JavaScript
document.addEventListener('DOMContentLoaded', function () {
|
|
const header = document.getElementById('mainHeader');
|
|
|
|
if (header) {
|
|
window.addEventListener('scroll', function () {
|
|
if (window.scrollY > 100) {
|
|
header.classList.add('scrolled');
|
|
} else {
|
|
header.classList.remove('scrolled');
|
|
}
|
|
});
|
|
}
|
|
|
|
// Intersection Observer for animations
|
|
const animatedElements = document.querySelectorAll('.animate-on-scroll');
|
|
if (animatedElements.length > 0) {
|
|
const observer = new IntersectionObserver((entries) => {
|
|
entries.forEach(entry => {
|
|
if (entry.isIntersecting) {
|
|
entry.target.classList.add('is-visible');
|
|
// Optional: unobserve after animation
|
|
// observer.unobserve(entry.target);
|
|
}
|
|
});
|
|
}, {
|
|
threshold: 0.1
|
|
});
|
|
|
|
animatedElements.forEach(el => {
|
|
observer.observe(el);
|
|
});
|
|
}
|
|
|
|
// Newsletter Form Handler
|
|
const newsletterForm = document.getElementById('newsletterForm');
|
|
if (newsletterForm) {
|
|
newsletterForm.addEventListener('submit', function(e) {
|
|
e.preventDefault();
|
|
const emailInput = newsletterForm.querySelector('input[type="email"]');
|
|
if (emailInput.value) {
|
|
alert('Danke für Ihr Interesse! Sie wurden zu unserem Newsletter hinzugefügt.');
|
|
emailInput.value = '';
|
|
} else {
|
|
alert('Bitte geben Sie eine gültige E-Mail-Adresse ein.');
|
|
}
|
|
});
|
|
}
|
|
|
|
// Cookie Banner Handler
|
|
const cookieBanner = document.getElementById('cookieBanner');
|
|
const cookieAccept = document.getElementById('cookieAccept');
|
|
const cookieReject = document.getElementById('cookieReject');
|
|
const cookieConsent = localStorage.getItem('cookie_consent');
|
|
|
|
// Show banner if no consent has been given
|
|
if (!cookieConsent) {
|
|
setTimeout(() => {
|
|
cookieBanner.classList.add('visible');
|
|
}, 1000); // Delay showing the banner slightly
|
|
}
|
|
|
|
const handleCookieConsent = (consent) => {
|
|
localStorage.setItem('cookie_consent', consent);
|
|
cookieBanner.classList.remove('visible');
|
|
};
|
|
|
|
if(cookieAccept) {
|
|
cookieAccept.addEventListener('click', () => handleCookieConsent('accepted'));
|
|
}
|
|
if(cookieReject) {
|
|
cookieReject.addEventListener('click', () => handleCookieConsent('rejected'));
|
|
}
|
|
|
|
// Mobile Menu Handler
|
|
const mobileToggle = document.querySelector('.mobile-toggle');
|
|
const mobileMenu = document.getElementById('mobileMenu');
|
|
const closeMobileMenu = document.getElementById('closeMobileMenu');
|
|
const body = document.body;
|
|
|
|
const openMenu = () => {
|
|
mobileMenu.classList.add('open');
|
|
body.classList.add('menu-open');
|
|
};
|
|
|
|
const closeMenu = () => {
|
|
mobileMenu.classList.remove('open');
|
|
body.classList.remove('menu-open');
|
|
};
|
|
|
|
if (mobileToggle && mobileMenu) {
|
|
mobileToggle.addEventListener('click', openMenu);
|
|
}
|
|
|
|
if (closeMobileMenu) {
|
|
closeMobileMenu.addEventListener('click', closeMenu);
|
|
}
|
|
|
|
// Close menu when clicking a link inside
|
|
const mobileNavLinks = mobileMenu.querySelectorAll('a[href^="#"]');
|
|
mobileNavLinks.forEach(link => {
|
|
link.addEventListener('click', () => {
|
|
// Don't close for section toggles
|
|
if (!link.parentElement.classList.contains('mobile-subsection')) {
|
|
closeMenu();
|
|
}
|
|
});
|
|
});
|
|
|
|
// Accordion for mobile sub-menu
|
|
const sectionToggles = mobileMenu.querySelectorAll('.section-toggle');
|
|
sectionToggles.forEach(toggle => {
|
|
toggle.addEventListener('click', () => {
|
|
const section = toggle.parentElement;
|
|
const subsection = section.querySelector('.mobile-subsection');
|
|
|
|
section.classList.toggle('open');
|
|
|
|
if (section.classList.contains('open')) {
|
|
subsection.style.maxHeight = subsection.scrollHeight + 'px';
|
|
} else {
|
|
subsection.style.maxHeight = '0';
|
|
}
|
|
});
|
|
});
|
|
|
|
// Language Switcher Handler
|
|
const langSwitcherBtn = document.getElementById('langSwitcherBtn');
|
|
const langDropdown = document.getElementById('langDropdown');
|
|
const langSwitcherContainer = document.querySelector('.lang-switcher-container');
|
|
|
|
if (langSwitcherBtn && langDropdown && langSwitcherContainer) {
|
|
langSwitcherBtn.addEventListener('click', (event) => {
|
|
event.stopPropagation(); // Prevent the click from immediately closing the dropdown
|
|
langSwitcherContainer.classList.toggle('open');
|
|
});
|
|
|
|
document.addEventListener('click', (event) => {
|
|
if (!langSwitcherContainer.contains(event.target)) {
|
|
langSwitcherContainer.classList.remove('open');
|
|
}
|
|
});
|
|
|
|
}
|
|
}); |