// Evitar múltiples inicializaciones if (typeof window.popupImagenInicializado === 'undefined') { window.popupImagenInicializado = true; jQuery(document).ready(function($) { 'use strict'; // Verificar si el popup existe if ($('#popup-imagen-overlay').length === 0) { if (console && console.log) { console.log('No se encontró el elemento del popup'); } return; } // Configuración básica var duracionAnimacion = 300; // Bandera para evitar múltiples cierres var isClosing = false; // Función para limpiar los manejadores de eventos function limpiarManejadoresEventos() { var $popup = $('#popup-imagen-overlay'); $popup.off('click.popup'); $(document).off('click.popup-close'); } // Función para cerrar el popup function cerrarPopup() { var $popup = $('#popup-imagen-overlay'); // Si el popup ya está cerrado o se está cerrando, no hacer nada if (!$popup.hasClass('mostrar') || isClosing) { return; } isClosing = true; // Iniciar animación de cierre $popup.css({ 'opacity': '0', 'visibility': 'hidden' }).removeClass('mostrar'); // Quitar clase del body $('body').removeClass('popup-abierto'); // Limpiar manejadores de eventos limpiarManejadoresEventos(); // Ocultar después de la animación setTimeout(function() { $popup.hide(); isClosing = false; }, duracionAnimacion); } // Función para mostrar el popup function mostrarPopup() { var $popup = $('#popup-imagen-overlay'); // Forzar repintado para activar la transición $popup[0].offsetHeight; // Mostrar el popup $popup.css({ 'display': 'flex', 'opacity': '1', 'visibility': 'visible' }).addClass('mostrar'); // Agregar clase al body para estilos $('body').addClass('popup-abierto'); } // Función para manejar el cierre al tocar fuera de la imagen function handleOutsideClick(e) { var $target = $(e.target); // Verificar si el clic fue fuera del contenedor de la imagen if ($target.closest('.popup-imagen-contenedor').length === 0) { e.preventDefault(); e.stopPropagation(); cerrarPopup(); return false; } return true; } // Manejar clic en el botón de cerrar (ambas versiones) function handleCerrarClick(e) { e.preventDefault(); e.stopPropagation(); cerrarPopup(); return false; } // Configurar manejadores de eventos function setupEventHandlers() { var $popup = $('#popup-imagen-overlay'); // Limpiar manejadores anteriores limpiarManejadoresEventos(); // Manejador para el botón de cerrar $(document).on('click.popup-close', '.popup-imagen-cerrar, .popup-cerrar-movil', handleCerrarClick); // Manejador para clic fuera de la imagen $popup.on('click.popup', handleOutsideClick); } // Inicializar cuando el DOM esté listo function initPopup() { setupEventHandlers(); // Mostrar el popup inmediatamente mostrarPopup(); } // Iniciar el popup cuando el DOM esté listo if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initPopup); } else { initPopup(); } }); }