document.addEventListener('DOMContentLoaded', function() {
    // スクロール追従型タイマーの要素を取得
    const stickyCountdownWrapper = document.getElementById('sticky-countdown-timer-wrapper');
    const stickyCountdownDisplay = document.getElementById('sticky-countdown-display');
    const stickyCountdownLabelP = document.querySelector('.sticky-countdown-label');
    const stickyCountdownExpiredP = document.getElementById('sticky-countdown-expired');
    const bodyElement = document.body;

    // タイマーの期間を設定（例: 24時間）
    const countdownDuration = 24 * 60 * 60 * 1000; // 24時間をミリ秒で

    let endTime;
    let timerInterval;

    // localStorageから終了時刻を取得
    const storedEndTimeKey = 'eijiBriefStickyCountdownEndTime_v2'; // キー名を更新してリセット効果
    const storedEndTime = localStorage.getItem(storedEndTimeKey);

    if (storedEndTime) {
        endTime = parseInt(storedEndTime, 10);
        if (endTime < Date.now()) {
            // 既に終了している場合
            showExpiredMessage();
            adjustBodyPadding();
            return; // タイマーを開始しない
        }
    } else {
        // 初回アクセス時、またはlocalStorageに情報がない場合
        endTime = Date.now() + countdownDuration;
        localStorage.setItem(storedEndTimeKey, endTime.toString());
    }

    function showTimerDisplayElements() {
        stickyCountdownDisplay.style.display = 'block';
        stickyCountdownLabelP.style.display = 'block';
        stickyCountdownExpiredP.style.display = 'none';
        stickyCountdownDisplay.classList.add('pulsate'); // パルスアニメーション開始
    }

    function showExpiredMessage() {
        if(timerInterval) clearInterval(timerInterval); // 念のためタイマー停止
        stickyCountdownDisplay.style.display = 'none';
        stickyCountdownLabelP.style.display = 'none';
        stickyCountdownExpiredP.style.display = 'block';
        stickyCountdownDisplay.classList.remove('pulsate'); // パルスアニメーション停止
    }

    function updateCountdown() {
        const now = Date.now();
        const timeLeft = endTime - now;

        if (timeLeft <= 0) {
            showExpiredMessage();
            adjustBodyPadding(); 
            return;
        }

        showTimerDisplayElements();

        const totalSeconds = Math.floor(timeLeft / 1000);
        const totalMinutes = Math.floor(totalSeconds / 60);
        
        // 24時間以上の時間表示も可能なように変更
        const displayHours = Math.floor(totalMinutes / 60); 
        const displayMinutes = totalMinutes % 60;
        const displaySeconds = totalSeconds % 60;
        
        stickyCountdownDisplay.textContent = 
            String(displayHours).padStart(2, '0') + "時間 " +
            String(displayMinutes).padStart(2, '0') + "分 " +
            String(displaySeconds).padStart(2, '0') + "秒";
        
        // 最初のタイマー表示後に一度だけpaddingを調整（毎回呼ぶ必要はないため）
        // ただし、メッセージ切り替え時にも呼ぶので、関数の最後に移動
        adjustBodyPadding();
    }

    function adjustBodyPadding() {
        if (stickyCountdownWrapper) {
            const timerHeight = stickyCountdownWrapper.offsetHeight;
            bodyElement.style.paddingTop = timerHeight + 'px';
        }
    }
    
    // 初期表示とタイマー開始
    updateCountdown(); // まず一度表示を更新（特に終了済みの場合の判定のため）
    if (endTime > Date.now()) { // タイマーがまだ有効ならインターバル開始
        timerInterval = setInterval(updateCountdown, 1000);
    }


    // ウィンドウリサイズ時にもpaddingを調整
    window.addEventListener('resize', adjustBodyPadding);
    
    // 初期ロード時（画像などが読み込まれ、高さが確定した後）にpaddingを確実に設定
    window.addEventListener('load', adjustBodyPadding);
    
    // DOMContentLoadedでも一度呼んでおく（スクリプトがbodyの最後にあるため、ある程度高さは取れているはず）
    adjustBodyPadding();

});