let isInitialized = false;

export function bannerStickyDesktop(responsiveSmall) {
    if (isInitialized) return;

    let body = document.body;
    if (!body || body.dataset.template !== 'investigation-summary') return;

    let bannerPage = body.querySelector("#banner--page");
    let sectionDl = document.querySelector("#section__dl");
    let footer = document.querySelector("#site-footer");

    if (!bannerPage || !sectionDl || !footer) return;

    // Stocker la hauteur initiale du banner
    const bannerInitialHeight = bannerPage.offsetHeight;

    // Stocker la position initiale du footer (calculée une seule fois au chargement)
    let footerInitialTop = footer.offsetTop;

    function checkScroll() {
        const screenWidth = window.innerWidth;

        // Vérifier que l'écran est plus grand que responsiveSmall
        if (screenWidth <= responsiveSmall) {
            // Réinitialiser le transform si on est en dessous de responsiveSmall
            bannerPage.style.transform = '';
            return;
        }

        // Calculer la position du bas de la fenêtre
        const windowBottom = window.scrollY + window.innerHeight;

        // Calculer de combien on dépasse le haut du footer (position initiale)
        const overlap = windowBottom - footerInitialTop;

        if (overlap > 0) {
            // Le bas de la fenêtre a atteint le haut du footer
            // Déplacer le banner vers le haut du nombre de pixels de dépassement
            const translateValue = Math.min(overlap, bannerInitialHeight);
            bannerPage.style.transform = `translateY(-${translateValue}px)`;
        } else {
            // Réinitialiser la position si on n'a pas encore atteint le footer
            bannerPage.style.transform = 'translateY(0)';
        }
    }

    window.addEventListener('scroll', checkScroll);
    window.addEventListener('resize', () => {
        // Recalculer la position du footer lors du resize
        if (window.innerWidth > responsiveSmall) {
            bannerPage.style.transform = '';
            footerInitialTop = footer.offsetTop;
        }
        checkScroll();
    });

    checkScroll();

    isInitialized = true;
}