document.addEventListener('DOMContentLoaded', function (){
const promoTopElement10N=document.getElementById('promo_top');
if(!promoTopElement10N){
return;
}
const defaultConfig10N={
promo_top: {
mode: 'daily',
startTime: '06:45:00',
endTime: '19:00:00',
secondarySelector: '#stickyMenuTime'
}};
const startWithConfig10N=function (configData10N){
const promoConfig10N=(configData10N&&configData10N.promo_top) ? configData10N.promo_top:defaultConfig10N.promo_top;
initializeParisTimer10N(promoConfig10N);
};
if(window.timerPromoParams&&window.timerPromoParams.jsonPath){
fetch(window.timerPromoParams.jsonPath, { cache: 'no-store' })
.then(function (response){
if(!response.ok){
throw new Error('Config timer introuvable');
}
return response.json();
})
.then(startWithConfig10N)
.catch(function (){
startWithConfig10N(defaultConfig10N);
});
return;
}
startWithConfig10N(defaultConfig10N);
});
function getParisTime10N(){
try {
const now10N=new Date();
return new Date(now10N.toLocaleString('en-US', { timeZone: 'Europe/Paris' }));
} catch (error){
console.error("Erreur lors de la récupération de l'heure de Paris:", error);
return new Date();
}}
function parseTimeParts10N(timeValue10N, fallback10N){
const source10N=typeof timeValue10N==='string'&&timeValue10N.trim()!=='' ? timeValue10N:fallback10N;
const parts10N=source10N.split(':').map(Number);
return {
hours: Number.isFinite(parts10N[0]) ? parts10N[0]:0,
minutes: Number.isFinite(parts10N[1]) ? parts10N[1]:0,
seconds: Number.isFinite(parts10N[2]) ? parts10N[2]:0
};}
function parseDurationSeconds10N(durationValue10N){
if(typeof durationValue10N!=='string'||durationValue10N.trim()===''){
return null;
}
const parts10N=durationValue10N.split(':').map(Number);
if(parts10N.length!==3||parts10N.some(function (part10N){ return !Number.isFinite(part10N); })){
return null;
}
return (parts10N[0] * 3600) + (parts10N[1] * 60) + parts10N[2];
}
function initializeParisTimer10N(config10N){
const promoTopElement10N=document.getElementById('promo_top');
if(!promoTopElement10N){
console.error("L'élément promo_top est introuvable dans le DOM.");
return;
}
const stickyMenuElement10N=document.querySelector(config10N.secondarySelector||'#stickyMenuTime');
const startParts10N=parseTimeParts10N(config10N.startTime, '06:45:00');
const endParts10N=parseTimeParts10N(config10N.endTime, '19:00:00');
const hideWhenRemainingSeconds10N=parseDurationSeconds10N(config10N.hideWhenRemaining);
let timerInterval10N=null;
let visibilityTimeout10N=null;
function setElementVisibility10N(isVisible10N){
if(isVisible10N){
promoTopElement10N.classList.remove('tp_inactive');
promoTopElement10N.style.display='flex';
}else{
promoTopElement10N.classList.add('tp_inactive');
promoTopElement10N.style.display='none';
}
if(stickyMenuElement10N){
stickyMenuElement10N.style.display=isVisible10N ? '':'none';
}}
function buildWindow10N(baseDate10N){
const start10N=new Date(baseDate10N);
start10N.setHours(startParts10N.hours, startParts10N.minutes, startParts10N.seconds, 0);
const end10N=new Date(baseDate10N);
end10N.setHours(endParts10N.hours, endParts10N.minutes, endParts10N.seconds, 0);
return { start10N, end10N };}
function getCurrentState10N(){
const now10N=getParisTime10N();
const window10N=buildWindow10N(now10N);
if(now10N >=window10N.start10N&&now10N < window10N.end10N){
return {
now10N,
isActive10N: true,
target10N: window10N.end10N
};}
if(now10N < window10N.start10N){
return {
now10N,
isActive10N: false,
nextCheck10N: window10N.start10N
};}
const tomorrow10N=new Date(now10N);
tomorrow10N.setDate(tomorrow10N.getDate() + 1);
const tomorrowWindow10N=buildWindow10N(tomorrow10N);
return {
now10N,
isActive10N: false,
nextCheck10N: tomorrowWindow10N.start10N
};}
function updateDisplay10N(delta10N){
const days10N=Math.floor(delta10N / (1000 * 60 * 60 * 24));
const hours10N=Math.floor((delta10N % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
const minutes10N=Math.floor((delta10N % (1000 * 60 * 60)) / (1000 * 60));
const seconds10N=Math.floor((delta10N % (1000 * 60)) / 1000);
const daysEl10N=document.getElementById('days');
const hoursEl10N=document.getElementById('hours');
const minutesEl10N=document.getElementById('minutes');
const secondsEl10N=document.getElementById('seconds');
if(daysEl10N) daysEl10N.textContent=String(days10N).padStart(2, '0');
if(hoursEl10N) hoursEl10N.textContent=String(hours10N).padStart(2, '0');
if(minutesEl10N) minutesEl10N.textContent=String(minutes10N).padStart(2, '0');
if(secondsEl10N) secondsEl10N.textContent=String(seconds10N).padStart(2, '0');
}
function clearTimers10N(){
if(timerInterval10N){
clearInterval(timerInterval10N);
timerInterval10N=null;
}
if(visibilityTimeout10N){
clearTimeout(visibilityTimeout10N);
visibilityTimeout10N=null;
}}
function scheduleNextCheck10N(nextCheck10N){
const now10N=getParisTime10N();
const delay10N=Math.max(1000, nextCheck10N.getTime() - now10N.getTime());
visibilityTimeout10N=setTimeout(function (){
visibilityTimeout10N=null;
refreshTimer10N();
}, delay10N);
}
function startActiveCountdown10N(target10N){
setElementVisibility10N(true);
const tick10N=function (){
const now10N=getParisTime10N();
const delta10N=target10N.getTime() - now10N.getTime();
if(delta10N <=0){
clearTimers10N();
refreshTimer10N();
return;
}
if(hideWhenRemainingSeconds10N!==null&&delta10N <=(hideWhenRemainingSeconds10N * 1000)){
clearTimers10N();
setElementVisibility10N(false);
return;
}
updateDisplay10N(delta10N);
};
tick10N();
timerInterval10N=setInterval(tick10N, 1000);
}
function refreshTimer10N(){
clearTimers10N();
const state10N=getCurrentState10N();
if(state10N.isActive10N){
startActiveCountdown10N(state10N.target10N);
return;
}
setElementVisibility10N(false);
scheduleNextCheck10N(state10N.nextCheck10N);
}
refreshTimer10N();
};