Current deals end in
00:00:00
Current deals end in
00:00:00
document.addEventListener('DOMContentLoaded', function () {
var bars = document.querySelectorAll('.deal-countdown');
if (!bars.length) return;
var timers = document.querySelectorAll('.deal-countdown-timer');
if (!timers.length) return;
// Read data attributes from the first bar (both bars have same data)
var firstBar = bars[0];
var summerEndStr = firstBar.getAttribute('data-summer-end');
if (!summerEndStr) return;
var visibleHoursBeforeEnd = parseInt(
firstBar.getAttribute('data-visible-hours-before-end'),
10
);
if (isNaN(visibleHoursBeforeEnd) || visibleHoursBeforeEnd < 0) {
visibleHoursBeforeEnd = 0;
}
var visibleWindowMs = visibleHoursBeforeEnd * 60 * 60 * 1000;
var summerEndTime = new Date(summerEndStr).getTime();
function showBars() {
for (var i = 0; i < bars.length; i++) {
bars[i].style.removeProperty('display');
}
}
function hideBars() {
for (var i = 0; i < bars.length; i++) {
bars[i].style.setProperty('display', 'none', 'important');
}
}
function updateCountdown() {
var now = Date.now();
var diff = summerEndTime - now; // time until end
if (diff <= 0) {
hideBars();
clearInterval(intervalId);
return;
}
// Only show if within the visibility window (e.g., last 24 hours)
if (diff <= visibleWindowMs) {
showBars();
var totalSeconds = Math.floor(diff / 1000);
var hours = Math.floor(totalSeconds / 3600);
var minutes = Math.floor((totalSeconds % 3600) / 60);
var seconds = totalSeconds % 60;
var text =
String(hours).padStart(2, '0') + ':' +
String(minutes).padStart(2, '0') + ':' +
String(seconds).padStart(2, '0');
for (var j = 0; j < timers.length; j++) {
timers[j].textContent = text;
}
} else {
hideBars();
}
}
// Initial run
updateCountdown();
// Update every second
var intervalId = setInterval(updateCountdown, 1000);
});
