/**
 * Demo Countdown Timer
 * Limita el acceso a la página hasta el 24 de enero de 2026 a las 8:00 PM
 */

// Fecha límite: 24 de enero de 2026 a las 8:00 PM (hora local)
const expiryDate = new Date('2026-01-24T20:00:00');

// Elementos del DOM
const countdownModal = document.getElementById('demo-countdown');
const countdownTimer = document.getElementById('countdown-timer');
const mainContent = document.getElementById('main-content');
const expiredOverlay = document.getElementById('demo-expired');
const daysElement = document.getElementById('days');
const hoursElement = document.getElementById('hours');
const minutesElement = document.getElementById('minutes');
const secondsElement = document.getElementById('seconds');

/**
 * Calcula el tiempo restante hasta la fecha de expiración
 */
function getTimeRemaining() {
    const now = new Date();
    const difference = expiryDate - now;

    if (difference <= 0) {
        return {
            total: 0,
            days: 0,
            hours: 0,
            minutes: 0,
            seconds: 0
        };
    }

    const days = Math.floor(difference / (1000 * 60 * 60 * 24));
    const hours = Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    const minutes = Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60));
    const seconds = Math.floor((difference % (1000 * 60)) / 1000);

    return {
        total: difference,
        days: days,
        hours: hours,
        minutes: minutes,
        seconds: seconds
    };
}

/**
 * Formatea un número para que siempre tenga 2 dígitos
 */
function formatTime(value) {
    return value < 10 ? '0' + value : value;
}

/**
 * Actualiza el contador en pantalla
 */
function updateCountdown() {
    const time = getTimeRemaining();

    if (time.total <= 0) {
        // La página ha expirado
        expirePage();
        return;
    }

    // Actualizar los valores en pantalla
    daysElement.textContent = formatTime(time.days);
    hoursElement.textContent = formatTime(time.hours);
    minutesElement.textContent = formatTime(time.minutes);
    secondsElement.textContent = formatTime(time.seconds);

    // Agregar clase al body para ajustar márgenes
    document.body.classList.add('has-countdown');
}

/**
 * Expira la página y bloquea el acceso
 */
function expirePage() {
    // El contador modal permanece visible pero ahora muestra tiempo expirado
    if (countdownModal) {
        // Cambiar estilo del modal para indicar expiración
        countdownModal.style.opacity = '0.7';
    }

    // Ocultar el contenido principal
    if (mainContent) {
        mainContent.style.display = 'none';
    }

    // Mostrar overlay de expiración que bloquea toda la página
    if (expiredOverlay) {
        expiredOverlay.style.display = 'flex';
    }

    // Prevenir scroll del body
    document.body.style.overflow = 'hidden';
}

/**
 * Inicializa el contador cuando se carga la página
 */
function initCountdown() {
    const time = getTimeRemaining();

    // Asegurar que el contador modal siempre esté visible
    if (countdownModal) {
        countdownModal.style.display = 'block';
    }

    // Si ya expiró, bloquear página inmediatamente
    if (time.total <= 0) {
        expirePage();
        return;
    }

    // Actualizar el contador inmediatamente
    updateCountdown();

    // Actualizar cada segundo
    setInterval(updateCountdown, 1000);
}

// Inicializar cuando el DOM esté listo
if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', initCountdown);
} else {
    initCountdown();
}
