/* Website Magic - Global JS
Einfuegen: Divi > Theme Options > Integration > Body (Ende)
Stand: 2026-10
*/
(function () {
/* 1. SCROLL-REVEAL
Klasse "wm-einblenden" am Divi-Modul eintragen.
Das Element blendet sich sanft ein, wenn es sichtbar wird.
*/
function initReveal() {
var elems = document.querySelectorAll('.wm-einblenden');
if (!elems.length) return;
if (!('IntersectionObserver' in window)) {
for (var i = 0; i < elems.length; i++) {
elems[i].classList.add('sichtbar');
}
return;
}
var beobachter = new IntersectionObserver(function (eintraege) {
for (var j = 0; j < eintraege.length; j++) {
if (eintraege[j].isIntersecting) {
eintraege[j].target.classList.add('sichtbar');
beobachter.unobserve(eintraege[j].target);
}
}
}, { threshold: 0.12, rootMargin: '0px 0px -48px 0px' });
for (var k = 0; k < elems.length; k++) {
beobachter.observe(elems[k]);
}
}
/* 2. SMOOTH SCROLL
Anker-Links (#pakete, #ablauf usw.) scrollen sanft.
*/
function initSmoothScroll() {
document.addEventListener('click', function (e) {
var link = e.target.closest('a[href^="#"]');
if (!link) return;
var zielId = link.getAttribute('href').slice(1);
if (!zielId) return;
var ziel = document.getElementById(zielId);
if (!ziel) return;
e.preventDefault();
var abstand = ziel.getBoundingClientRect().top + window.pageYOffset - 80;
window.scrollTo({ top: abstand, behavior: 'smooth' });
});
}
/* 3. HEADER-UEBERGANG
Der Divi-Header wird beim Scrollen dunkler.
*/
function initHeader() {
var header = document.querySelector('#main-header, .et-fixed-header');
if (!header) return;
var letzterScroll = 0;
window.addEventListener('scroll', function () {
var y = window.pageYOffset;
if (y > 60) {
header.classList.add('wm-header-aktiv');
} else {
header.classList.remove('wm-header-aktiv');
}
if (y > letzterScroll && y > 120) {
header.classList.add('wm-header-oben');
} else {
header.classList.remove('wm-header-oben');
}
letzterScroll = y;
}, { passive: true });
}
/* CSS fuer den Header-Zustand */
function injectHeaderCSS() {
var stil = document.createElement('style');
stil.textContent = '.wm-header-aktiv { background: rgba(31,14,24,0.97) !important; backdrop-filter: blur(12px); }';
document.head.appendChild(stil);
}
/* INIT */
function init() {
injectHeaderCSS();
initReveal();
initSmoothScroll();
initHeader();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
}());