document.addEventListener('DOMContentLoaded', function() {

    // --- Verificación inicial de datos ---
    if (typeof vtiUrlData === 'undefined' || !vtiUrlData.carModelSlugMap || typeof vtiUrlData.base_path !== 'string') {
        console.error('vtiUrlData no está definido o le faltan propiedades (carModelSlugMap, base_path).');
        return; // No podemos funcionar sin los datos básicos
    }

    const slugMap = vtiUrlData.carModelSlugMap;
    const basePath = vtiUrlData.base_path;

    // --- Función reutilizable para verificar y redirigir (sin recargar) ---
    function checkAndRedirect() {
        // console.log('Ejecutando checkAndRedirect...'); // Log para depuración
        const currentPathname = window.location.pathname;
        const currentQuery = window.location.search;

        // 1. Verificar estructura básica (query params y base path)
        const hasJsfParam = currentQuery.includes('jsf=epro-archive-products');
        const paCarModelMatch = currentQuery.match(/pa_car-model:(\d+)/); // Captura el ID
        const hasPaCarModelParam = paCarModelMatch !== null;
        const pathMatchesBase = currentPathname.startsWith(basePath);

        if (!pathMatchesBase || !hasJsfParam || !hasPaCarModelParam) {
            // console.log('Estructura de URL no coincide. No se requiere acción.');
            return; // No es la URL que nos interesa
        }

        // 2. Obtener ID actual y slug correcto del mapa
        const currentTermId = paCarModelMatch[1]; // El ID capturado (como string)
        const correctSlug = slugMap[currentTermId]; // Buscar slug en el mapa

        if (!correctSlug) {
            console.warn(`No se encontró slug en el mapa para el ID: ${currentTermId}`);
            return; // No tenemos con qué comparar
        }

        // 3. Obtener slug actual del path y comparar
        let currentSlug = currentPathname.substring(basePath.length).replace(/\/$/, '');

        if (currentSlug && currentSlug !== correctSlug) {
            console.log(`Slug necesita corrección. Actual: "${currentSlug}", Correcto: "${correctSlug}". Actualizando URL...`);
            const newPath = basePath + correctSlug + '/';
            const newUrl = window.location.origin + newPath + currentQuery;

            // Actualizar la URL sin recargar la página
            history.pushState(null, '', newUrl);

            // Disparar un evento personalizado para que otros scripts puedan reaccionar al cambio de URL
            window.dispatchEvent(new CustomEvent('urlChanged', { detail: { newUrl: newUrl } }));

        } else {
            // console.log('Slug ya es correcto.');
        }
    }

    // --- Detectar cambios de URL hechos por scripts (como Elementor Filters) ---
    // "Monkey-patching" history.pushState y history.replaceState para disparar un evento personalizado
    (function(history){
        const pushState = history.pushState;
        const replaceState = history.replaceState;

        history.pushState = function(state) {
            // Ejecutar el original
            const result = pushState.apply(history, arguments);
            // Disparar evento personalizado
            window.dispatchEvent(new Event('historystatechange'));
            return result;
        };

        history.replaceState = function(state) {
            // Ejecutar el original
            const result = replaceState.apply(history, arguments);
            // Disparar evento personalizado
            window.dispatchEvent(new Event('historystatechange'));
            return result;
        };

    })(window.history);

    // --- Escuchar nuestro evento personalizado y el popstate (para botones atrás/adelante) ---
    window.addEventListener('historystatechange', checkAndRedirect);
    window.addEventListener('popstate', checkAndRedirect);


    // --- Ejecutar la verificación inicial al cargar la página ---
    checkAndRedirect();

});