36739-vm/assets/js/main.js
Flatlogic Bot bfa16bead3 v1
2025-12-07 18:55:28 +00:00

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');
}
});
}
});