84 lines
3.4 KiB
JavaScript
84 lines
3.4 KiB
JavaScript
document.addEventListener("DOMContentLoaded", function () {
|
|
const bar = document.getElementById("mm-announcement");
|
|
if (!bar) return;
|
|
|
|
// --- 1. Positionierung ---
|
|
const position = bar.dataset.position || 'below-header';
|
|
|
|
if (position === "top") {
|
|
document.body.insertAdjacentElement('afterbegin', bar);
|
|
}
|
|
else if (position === "below-slider") {
|
|
const anchor = document.getElementById("mm-announcement-anchor");
|
|
if (anchor) {
|
|
anchor.replaceWith(bar);
|
|
} else {
|
|
const header = document.getElementById("masthead");
|
|
if (header) header.insertAdjacentElement('afterend', bar);
|
|
}
|
|
}
|
|
else if (position === "below-header") {
|
|
const header = document.getElementById("masthead");
|
|
if (header) header.insertAdjacentElement('afterend', bar);
|
|
}
|
|
else {
|
|
const header = document.getElementById("masthead");
|
|
if (header) header.insertAdjacentElement('afterend', bar);
|
|
}
|
|
|
|
const closeBtn = bar.querySelector(".mm-announcement-close");
|
|
if (closeBtn) {
|
|
closeBtn.addEventListener("click", function () {
|
|
bar.style.display = "none";
|
|
});
|
|
}
|
|
|
|
// --- 2. Countdown Timer Logik ---
|
|
const timerElement = document.querySelector('.mm-countdown-timer');
|
|
|
|
if (timerElement) {
|
|
const targetDateString = timerElement.getAttribute('data-date');
|
|
const expiredMessage = timerElement.getAttribute('data-expired');
|
|
|
|
// Prüfen ob Datum gesetzt ist
|
|
if (targetDateString) {
|
|
const countDownDate = new Date(targetDateString).getTime();
|
|
|
|
const updateTimer = setInterval(function() {
|
|
const now = new Date().getTime();
|
|
const distance = countDownDate - now;
|
|
|
|
if (distance < 0) {
|
|
clearInterval(updateTimer);
|
|
timerElement.innerHTML = expiredMessage;
|
|
// Optional: Rot einfärben wenn abgelaufen
|
|
timerElement.style.color = '#ff3333';
|
|
return;
|
|
}
|
|
|
|
// Zeitberechnung
|
|
const days = Math.floor(distance / (1000 * 60 * 60 * 24));
|
|
const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
|
|
const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
|
|
const seconds = Math.floor((distance % (1000 * 60)) / 1000);
|
|
|
|
// Formatierung (z.B. 05 statt 5)
|
|
const fDays = days > 0 ? days + "d " : "";
|
|
const fHours = hours < 10 ? "0" + hours : hours;
|
|
const fMinutes = minutes < 10 ? "0" + minutes : minutes;
|
|
const fSeconds = seconds < 10 ? "0" + seconds : seconds;
|
|
|
|
timerElement.innerHTML = fDays + fHours + ":" + fMinutes + ":" + fSeconds;
|
|
}, 1000);
|
|
|
|
// Sofort einmal ausführen, um Ladezeit zu vermeiden
|
|
// Wir lösen das Interval manuell für den ersten Durchlauf aus,
|
|
// indem wir den Code kopieren oder den Timeout kurz setzen.
|
|
// Für diesen Fall reicht der erste Tick nach 1 Sekunde,
|
|
// aber wir können es direkt aufrufen:
|
|
// (Hier nutzen wir einfach den ersten Tick des Intervals)
|
|
} else {
|
|
timerElement.style.display = 'none';
|
|
}
|
|
}
|
|
}); |