document.addEventListener('DOMContentLoaded', async ()=>{
    
    console.log('Cursos.js cargado');
    console.log(cursosData);

    const cursosContainer  = document.getElementById('cursos-container');
    const cursos_agrupados = cursosData.cursos_por_nivel ? cursosData.cursos_por_nivel : null ;
    const post_title = cursosData.post_title ? cursosData.post_title : null ;
    const los_agrupados  = cursosData.cursos_agrupados ? cursosData.cursos_agrupados : null ;
    const url_sitio  = cursosData.url_sitio ? cursosData.url_sitio : null ;
    const user_query = cursosData.user_query ? cursosData.user_query : null ;
    const cat_slug   = cursosData.cat_slug ? cursosData.cat_slug : null ;

    // Obtener la URL completa
    const url = new URL(window.location.href);
    const pathname = url.pathname;

    //console.log(pathname)
    //console.log('cursos_agrupados')
    //console.log(los_agrupados)
    console.log('user_query')
    console.log(user_query)
    //console.log('data_util')
    //console.log(data_util)

    //Pintar cursos
    if (typeof cursosData !== 'undefined' && cursos_agrupados) {       
        
        const cursos_al_iniciar = await filtrarCursosQuery(user_query);

        procesarCursos(cursos_al_iniciar);

    } else {
        console.error('No se encontraron datos de cursos');
        const cursosContainer = document.getElementById('cursos-container');
        cursosContainer.innerHTML = '';
        cursosContainer.innerHTML = 'No se encontraron datos de cursos';
    }

    // Filtrar cursos segun query
    async function filtrarCursosQuery(new_query) {
        let cursosFiltrados = {};
        const isQueryEmpty = Object.values(new_query).every(value => value.trim() === '');

        // Si la query está vacía, devolver todos los cursos
        if (isQueryEmpty) return cursos_agrupados;

        // Función para normalizar los valores de conocimiento
        function normalizarConocimiento(valor) {
            return valor.trim().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, '').replace(/\s+/g, '');
        }

        // Procesar query
        for (let nivel in cursos_agrupados) {
            //console.log(`Filtrando nivel: ${nivel}`);
            //console.log(new_query);

            if (cursos_agrupados.hasOwnProperty(nivel)) {
                
                cursosFiltrados[nivel] = cursos_agrupados[nivel].filter(curso => {
                    //console.log(curso);
                    let modalidadMatch = true;
                    let duracionMatch  = true;
                    let sedeMatch = true;
                    let conocimientoMatch = true;
                    let nivel_especificoMatch = true;

                    // Verificar modalidad
                    if (new_query.modalidad && !new_query.modalidad.toLowerCase().startsWith('tod')) {
                        if (new_query.modalidad.toLowerCase() === 'online') {
                            modalidadMatch = curso.Sede && curso.Sede.trim().toLowerCase() === 'on line';
                        } else {
                            modalidadMatch = curso.Sede && curso.Sede.trim().toLowerCase() !== 'on line';
                        }
                    }

                    // Verificar duración
                    if (new_query.duracion && !new_query.duracion.toLowerCase().startsWith('tod')) {
                        duracionMatch = curso.duracion && curso.duracion.trim().toLowerCase() === new_query.duracion.toLowerCase();
                    }

                    // Verificar sede
                    if (new_query.modalidad.toLowerCase() !== 'online' && new_query.sede && !new_query.sede.toLowerCase().startsWith('tod') && new_query.sede !== '-') {
                        sedeMatch = curso.Sede && curso.Sede.trim().toLowerCase() === new_query.sede.toLowerCase();
                    }
                    
                    // Verificar conocimiento
                    if (new_query.nivel && !new_query.nivel.toLowerCase().startsWith('tod')) {
                        const conocimientoNormalizado = normalizarConocimiento(curso.conocimiento || '');
                        const queryConocimientoNormalizado = normalizarConocimiento(new_query.nivel);
                        //console.log(`Comparando ${conocimientoNormalizado} === ${queryConocimientoNormalizado}`);
                        conocimientoMatch = conocimientoNormalizado === queryConocimientoNormalizado;
                    }
                    
                    // Verificar nivel_especifico
                    if (new_query.nivel_especifico) {
                        if (new_query.nivel_especifico === 'TEENS') {
                            nivel_especificoMatch = curso.nivel.includes('TEENS') && !curso.nivel.includes('PRE-TEENS');
                        } else {
                            nivel_especificoMatch = new_query.nivel_especifico === curso.nivel;
                        }
                    }
                    
                    return modalidadMatch && duracionMatch && sedeMatch && conocimientoMatch && nivel_especificoMatch;
                });

            }
        }

        return cursosFiltrados;
    }






    // Procesa y muestra los cursos
    async function procesarCursos(procesar_cursos){
        console.log('procesarCursos:');
        console.log(procesar_cursos);
        console.log(Object.keys(procesar_cursos).length);

        let html_niveles = '';

        // Limpia el contenedor
        cursosContainer.innerHTML = '';

        // Verificar si todos los arrays en procesar_cursos están vacíos
        const todosVacios = Object.values(procesar_cursos).every(arr => arr.length === 0);
    
        if (todosVacios) {
            cursosContainer.innerHTML = '<p>Sin resultados</p>';
            return;
        }

        for (const nivel in procesar_cursos) {
            if (procesar_cursos.hasOwnProperty(nivel)) {

                const cursos = procesar_cursos[nivel];
            
                // Verificar si hay cursos para procesar el nivel
                if (cursos.length === 0) continue;
                
                console.log('Pintando nivel:', nivel);

                let html_nivel = `
                    <div class="elementor-element elementor-element-f709d65 elementor-widget elementor-widget-n-accordion" data-id="f709d65" data-element_type="widget" data-settings="{&quot;default_state&quot;:&quot;expanded&quot;,&quot;max_items_expended&quot;:&quot;one&quot;,&quot;n_accordion_animation_duration&quot;:{&quot;unit&quot;:&quot;ms&quot;,&quot;size&quot;:400,&quot;sizes&quot;:[]}}" data-widget_type="nested-accordion.default">
                        <div class="elementor-widget-container">
                            <div class="e-n-accordion" aria-label="Accordion. Open links with Enter or Space, close with Escape, and navigate with Arrow Keys">



                            <details id="e-n-accordion-item-2590" class="e-n-accordion-item" style="" open="">
                                <summary class="e-n-accordion-item-title" data-accordion-index="1" tabindex="0" aria-expanded="true" aria-controls="e-n-accordion-item-2590">
                                    <span class="e-n-accordion-item-title-header">
                                        <h2 class="e-n-accordion-item-title-text">                                             
                                            <img src="https://www.aaci.org.ar/wp-content/uploads/2024/03/icono-acordeon-cursos.png" width="40px"> 
                                            ${nivel.toUpperCase()} 
                                        </h2>
                                    </span>
                                    <span class="e-n-accordion-item-title-icon">
                                        <span class="e-opened">
                                            <svg aria-hidden="true" class="e-font-icon-svg e-fas-chevron-up" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z"></path></svg></span>
                                        <span class="e-closed"><svg aria-hidden="true" class="e-font-icon-svg e-fas-chevron-down" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"></path></svg></span>
                                    </span>

                                </summary>
                                <div role="region" aria-labelledby="e-n-accordion-item-2590" class="elementor-element elementor-element-5dd930d e-con-full e-flex e-con e-child" data-id="5dd930d" data-element_type="container" data-settings="{&quot;content_width&quot;:&quot;full&quot;,&quot;container_type&quot;:&quot;flex&quot;}">
                `;

                let html_cursos = '';

                for (const curso of cursos) {
                    html_cursos += await createElementElementor(curso);
                }

                html_nivel += html_cursos;
                html_nivel += `</div>
                            </details>
                        </div>
                    </div>
                </div>`;

                html_niveles += html_nivel;
            }
        }

        cursosContainer.innerHTML = html_niveles;
    };
    async function createElementElementor(curso){
        
        //console.log('createElementElementor');
        //console.log('Curso');
        //console.log(curso);
        

        let htlm_element_curso = `<div role="region" aria-labelledby="e-n-accordion-item-2590" class="elementor-element elementor-element-a7b320b e-con-full e-flex e-con e-child" data-id="a7b320b" data-element_type="container" data-settings="{&quot;content_width&quot;:&quot;full&quot;,&quot;container_type&quot;:&quot;flex&quot;}">`

        //Columna sede
        if(curso.online == "Online" || curso.Sede == "On Line"){
            htlm_element_curso += `
                <div role="region" aria-labelledby="e-n-accordion-item-2590" class="elementor-element elementor-element-6c44701 e-con-full e-flex e-con e-child" data-id="6c44701" data-element_type="container" data-settings="{&quot;content_width&quot;:&quot;full&quot;,&quot;background_background&quot;:&quot;classic&quot;,&quot;container_type&quot;:&quot;flex&quot;}">
                    <div class="elementor-element elementor-element-ddb9377 elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list" data-id="ddb9377" data-element_type="widget" data-widget_type="icon-list.default">
                    <div class="elementor-widget-container">
                        <ul class="elementor-icon-list-items">
                            <li class="elementor-icon-list-item">
                                <span class="elementor-icon-list-icon"><svg xmlns="http://www.w3.org/2000/svg" width="29" height="22" viewBox="0 0 29 22" fill="none"><path d="M27.8934 16.2227H26.3711V3.53711C26.3711 2.86423 26.1038 2.2189 25.628 1.7431C25.1522 1.2673 24.5069 1 23.834 1H5.5668C4.89391 1 4.24859 1.2673 3.77279 1.7431C3.29699 2.2189 3.02969 2.86423 3.02969 3.53711V16.2227H1.50742C1.37285 16.2227 1.24378 16.2761 1.14862 16.3713C1.05346 16.4664 1 16.5955 1 16.7301V18.7598C1 19.4326 1.2673 20.078 1.7431 20.5538C2.2189 21.0296 2.86423 21.2969 3.53711 21.2969H25.8637C26.5366 21.2969 27.1819 21.0296 27.6577 20.5538C28.1335 20.078 28.4008 19.4326 28.4008 18.7598V16.7301C28.4008 16.5955 28.3473 16.4664 28.2522 16.3713C28.157 16.2761 28.0279 16.2227 27.8934 16.2227ZM4.04453 3.53711C4.04453 3.13338 4.20491 2.74618 4.49039 2.4607C4.77587 2.17522 5.16307 2.01484 5.5668 2.01484H23.834C24.2377 2.01484 24.6249 2.17522 24.9104 2.4607C25.1959 2.74618 25.3563 3.13338 25.3563 3.53711V16.2227H4.04453V3.53711ZM27.3859 18.7598C27.3859 19.1635 27.2256 19.5507 26.9401 19.8362C26.6546 20.1216 26.2674 20.282 25.8637 20.282H3.53711C3.13338 20.282 2.74619 20.1216 2.46071 19.8362C2.17523 19.5507 2.01484 19.1635 2.01484 18.7598V17.2375H27.3859V18.7598ZM17.2375 5.5668C17.2375 5.70137 17.184 5.83044 17.0889 5.9256C16.9937 6.02076 16.8647 6.07422 16.7301 6.07422H12.6707C12.5361 6.07422 12.4071 6.02076 12.3119 5.9256C12.2167 5.83044 12.1633 5.70137 12.1633 5.5668C12.1633 5.43222 12.2167 5.30315 12.3119 5.20799C12.4071 5.11283 12.5361 5.05937 12.6707 5.05937H16.7301C16.8647 5.05937 16.9937 5.11283 17.0889 5.20799C17.184 5.30315 17.2375 5.43222 17.2375 5.5668Z" fill="" stroke="" stroke-width="0.5"></path></svg>						</span>
                                <span class="elementor-icon-list-text">${curso.Sede}</span>
                            </li>
                        </ul>
                    </div>
                    </div>
                </div>
            `;
        } else {
            htlm_element_curso += `
            <div role="region" aria-labelledby="e-n-accordion-item-2590" class="elementor-element elementor-element-c42cf44 e-con-full e-flex e-con e-child" data-id="c42cf44" data-element_type="container" data-settings="{&quot;content_width&quot;:&quot;full&quot;,&quot;background_background&quot;:&quot;classic&quot;,&quot;container_type&quot;:&quot;flex&quot;}">
                <div class="elementor-element elementor-element-b41991f elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list" data-id="b41991f" data-element_type="widget" data-widget_type="icon-list.default">
                <div class="elementor-widget-container">
                    <ul class="elementor-icon-list-items">
                        <li class="elementor-icon-list-item">
                            <span class="elementor-icon-list-icon"><svg xmlns="http://www.w3.org/2000/svg" width="29" height="29" viewBox="0 0 29 29" fill="none"><path d="M14.4997 14.5C13.1705 14.5 12.083 13.4125 12.083 12.0833C12.083 10.7541 13.1705 9.66663 14.4997 9.66663C15.8288 9.66663 16.9163 10.7541 16.9163 12.0833C16.9163 13.4125 15.8288 14.5 14.4997 14.5ZM21.7497 12.325C21.7497 7.93871 18.5476 4.83329 14.4997 4.83329C10.4518 4.83329 7.24967 7.93871 7.24967 12.325C7.24967 15.1525 9.60592 18.8983 14.4997 23.3691C19.3934 18.8983 21.7497 15.1525 21.7497 12.325ZM14.4997 2.41663C19.5747 2.41663 24.1663 6.30746 24.1663 12.325C24.1663 16.3366 20.9401 21.0854 14.4997 26.5833C8.05926 21.0854 4.83301 16.3366 4.83301 12.325C4.83301 6.30746 9.42467 2.41663 14.4997 2.41663Z"></path></svg>						</span>
                            <span class="elementor-icon-list-text">
                                ${curso.Sede}
                            </span>
                        </li>
                    </ul>
                </div>
                </div>
            </div>
            `;
        }

        //Columna horarios e inscripcion
        htlm_element_curso += `<div role="region" aria-labelledby="e-n-accordion-item-2590" class="elementor-element elementor-element-68c6f59 e-con-full e-flex e-con e-child" data-id="68c6f59" data-element_type="container" data-settings="{&quot;content_width&quot;:&quot;full&quot;,&quot;container_type&quot;:&quot;flex&quot;}">`;
        htlm_element_curso += `
        <div role="region" aria-labelledby="e-n-accordion-item-2590" class="elementor-element elementor-element-ab8b2bc e-con-full e-flex e-con e-child" data-id="ab8b2bc" data-element_type="container" data-settings="{&quot;content_width&quot;:&quot;full&quot;,&quot;container_type&quot;:&quot;flex&quot;}">
            <div class="elementor-element elementor-element-4a70c6d elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list" data-id="4a70c6d" data-element_type="widget" data-widget_type="icon-list.default">
            <div class="elementor-widget-container">
                <ul class="elementor-icon-list-items">
                    <li class="elementor-icon-list-item">
                        <span class="elementor-icon-list-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><g clip-path="url(#clip0_30_6136)"><path d="M21.4998 4H19.3332V5.33333H21.3332V20H2.66651V5.33333H4.66651V4H2.49985C2.344 4.0026 2.1902 4.03588 2.04722 4.09794C1.90425 4.15999 1.77489 4.24961 1.66655 4.36166C1.55821 4.47371 1.47301 4.60601 1.41581 4.751C1.35861 4.89599 1.33053 5.05083 1.33318 5.20667V20.1267C1.33053 20.2825 1.35861 20.4373 1.41581 20.5823C1.47301 20.7273 1.55821 20.8596 1.66655 20.9717C1.77489 21.0837 1.90425 21.1733 2.04722 21.2354C2.1902 21.2974 2.344 21.3307 2.49985 21.3333H21.4998C21.6557 21.3307 21.8095 21.2974 21.9525 21.2354C22.0954 21.1733 22.2248 21.0837 22.3331 20.9717C22.4415 20.8596 22.5267 20.7273 22.5839 20.5823C22.6411 20.4373 22.6692 20.2825 22.6665 20.1267V5.20667C22.6692 5.05083 22.6411 4.89599 22.5839 4.751C22.5267 4.60601 22.4415 4.47371 22.3331 4.36166C22.2248 4.24961 22.0954 4.15999 21.9525 4.09794C21.8095 4.03588 21.6557 4.0026 21.4998 4Z" fill=""></path><path d="M5.33301 9.33337H6.66634V10.6667H5.33301V9.33337Z" fill=""></path><path d="M9.33301 9.33337H10.6663V10.6667H9.33301V9.33337Z" fill=""></path><path d="M13.333 9.33337H14.6663V10.6667H13.333V9.33337Z" fill=""></path><path d="M17.333 9.33337H18.6663V10.6667H17.333V9.33337Z" fill=""></path><path d="M5.33301 12.6666H6.66634V14H5.33301V12.6666Z" fill=""></path><path d="M9.33301 12.6666H10.6663V14H9.33301V12.6666Z" fill=""></path><path d="M13.333 12.6666H14.6663V14H13.333V12.6666Z" fill=""></path><path d="M17.333 12.6666H18.6663V14H17.333V12.6666Z" fill=""></path><path d="M5.33301 16H6.66634V17.3333H5.33301V16Z" fill=""></path><path d="M9.33301 16H10.6663V17.3333H9.33301V16Z" fill=""></path><path d="M13.333 16H14.6663V17.3333H13.333V16Z" fill=""></path><path d="M17.333 16H18.6663V17.3333H17.333V16Z" fill=""></path><path d="M6.66667 6.66671C6.84348 6.66671 7.01305 6.59647 7.13807 6.47145C7.2631 6.34642 7.33333 6.17685 7.33333 6.00004V2.00004C7.33333 1.82323 7.2631 1.65366 7.13807 1.52864C7.01305 1.40361 6.84348 1.33337 6.66667 1.33337C6.48986 1.33337 6.32029 1.40361 6.19526 1.52864C6.07024 1.65366 6 1.82323 6 2.00004V6.00004C6 6.17685 6.07024 6.34642 6.19526 6.47145C6.32029 6.59647 6.48986 6.66671 6.66667 6.66671Z" fill=""></path><path d="M17.3337 6.66671C17.5105 6.66671 17.68 6.59647 17.8051 6.47145C17.9301 6.34642 18.0003 6.17685 18.0003 6.00004V2.00004C18.0003 1.82323 17.9301 1.65366 17.8051 1.52864C17.68 1.40361 17.5105 1.33337 17.3337 1.33337C17.1568 1.33337 16.9873 1.40361 16.8623 1.52864C16.7372 1.65366 16.667 1.82323 16.667 2.00004V6.00004C16.667 6.17685 16.7372 6.34642 16.8623 6.47145C16.9873 6.59647 17.1568 6.66671 17.3337 6.66671Z" fill=""></path><path d="M8.66699 4H15.3337V5.33333H8.66699V4Z" fill=""></path></g><defs><clipPath id="clip0_30_6136"><rect width="24" height="24" fill="white"></rect></clipPath></defs></svg>						</span>
                        <span class="elementor-icon-list-text">
                            ${curso.Dias}
                        </span>
                    </li>
                    <li class="elementor-icon-list-item">
                        <span class="elementor-icon-list-icon"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25" fill="none"><path d="M12.5003 2.60413C17.9654 2.60413 22.3962 7.03486 22.3962 12.5C22.3962 17.9651 17.9654 22.3958 12.5003 22.3958C7.03522 22.3958 2.60449 17.9651 2.60449 12.5C2.60449 7.03486 7.03522 2.60413 12.5003 2.60413ZM12.5003 3.90621C7.75397 3.90621 3.90658 7.75361 3.90658 12.5C3.90658 17.2463 7.75397 21.0937 12.5003 21.0937C17.2467 21.0937 21.0941 17.2463 21.0941 12.5C21.0941 7.75361 17.2467 3.90621 12.5003 3.90621ZM11.8493 6.24996C12.1863 6.24996 12.4639 6.50621 12.4972 6.83433L12.5003 6.901V12.5H16.016C16.1834 12.4992 16.3446 12.5629 16.4663 12.6779C16.5879 12.793 16.6606 12.9504 16.6692 13.1176C16.6777 13.2848 16.6216 13.4489 16.5124 13.5758C16.4031 13.7026 16.2492 13.7826 16.0826 13.7989L16.016 13.802H11.8493C11.6881 13.8021 11.5326 13.7424 11.4129 13.6345C11.2933 13.5265 11.2179 13.378 11.2014 13.2177L11.1982 13.151V6.901C11.1982 6.54163 11.4899 6.24996 11.8493 6.24996Z" fill=""></path></svg>						</span>
                        <span class="elementor-icon-list-text">
                            ${curso.HoraInicio.slice(0, -3)} a ${curso.HoraFin.slice(0, -3)}
                        </span>
                    </li>
                </ul>
            </div>
            </div>
        </div>
        `;
        htlm_element_curso += `
        <div role="region" aria-labelledby="e-n-accordion-item-2590" class="elementor-element elementor-element-711e12e e-con-full e-flex e-con e-child" data-id="711e12e" data-element_type="container" data-settings="{&quot;content_width&quot;:&quot;full&quot;,&quot;container_type&quot;:&quot;flex&quot;}">
            <div class="elementor-element elementor-element-a921b7b elementor-widget elementor-widget-text-editor" data-id="a921b7b" data-element_type="widget" data-widget_type="text-editor.default">
            <div class="elementor-widget-container">
                ${curso.duracion.toUpperCase()}
            </div>
            </div>
        </div>
        `;
        htlm_element_curso += `
        <div role="region" aria-labelledby="e-n-accordion-item-2590" class="elementor-element elementor-element-1a9d414 e-con-full e-flex e-con e-child" data-id="1a9d414" data-element_type="container" data-settings="{&quot;content_width&quot;:&quot;full&quot;,&quot;container_type&quot;:&quot;flex&quot;}">
            <div class="elementor-element elementor-element-b0773aa elementor-align-justify elementor-widget elementor-widget-button" data-id="b0773aa" data-element_type="widget" data-widget_type="button.default">
            <div class="elementor-widget-container">
            <div class="elementor-button-wrapper">
                <a class="elementor-button elementor-button-link elementor-size-sm" href="#">
                    <span class="elementor-button-content-wrapper">
                        <span class="elementor-button-icon elementor-align-icon-right">
                            <svg aria-hidden="true" class="e-font-icon-svg e-far-check-circle" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"></path></svg>			
                        </span>
                        <span class="elementor-button-text"></span>
                    </span>
                </a>
            </div>
            </div>
            </div>
        </div>
        `;

        htlm_element_curso += `</div></div>`;
        
        return htlm_element_curso;


    }

    //Formulario Filtro
    const form_filtroCursos = document.getElementById('filtrar_cursos');
    const form_modalidad = document.getElementById('form-field-modalidad');
    const form_duracion  = document.getElementById('form-field-duracion');
    const form_nivel = document.getElementById('form-field-nivel');
    const form_sede  = document.getElementById('form-field-zona');
    const form_edad  = document.getElementById('form-field-edad');


    // Agregar titulo al select form
    function addTitleOption(selectElement, titleText) {
        let titleOption = document.createElement("option");
        titleOption.value = ""; // Valor vacío para la opción de título
        titleOption.textContent = titleText;
        titleOption.selected = true;
        selectElement.prepend(titleOption);
    }
    // Agregar títulos a los select específicos del formulario filtro
    addTitleOption(form_modalidad, "Modalidad");
    addTitleOption(form_duracion, "Duración");
    addTitleOption(form_nivel, "Nivel");
    addTitleOption(form_sede, "Zona");
    //addTitleOption(form_edad, "Edad");
    

    function cargarEdadSelect(){
        // Add option que edad en select
        if (cat_slug) {
            const options = data_util.filter(element => element.categoria === cat_slug);
            
            // remove
            while (form_edad.firstChild) {
                form_edad.removeChild(form_edad.firstChild);
            }
            // add
            options.forEach(optionData => {
                let option_select_edad   = document.createElement('option');
                option_select_edad.value = optionData.categoria;
                option_select_edad.text  = optionData.option;
                option_select_edad.disabled = true;
                option_select_edad.selected = true;
                form_edad.appendChild(option_select_edad);
                form_edad.disabled = true;
            });
        }
    }

    cargarEdadSelect();



    // Escuchar cambios select Presencial a Online
    form_modalidad.addEventListener('change', function() {
        if (form_modalidad.value === 'Online') {
            form_sede.disabled = true;

            let option = document.createElement('option');
            option.value = '-';
            option.text = '-';

            form_sede.add(option);
            form_sede.value = '-';

        } else {
            for (let i = 0; i < form_sede.options.length; i++) {
                if (form_sede.options[i].value === '-') {
                    form_sede.remove(i);
                }
            }
            form_sede.disabled = false;
        }
    });
    

    if (form_filtroCursos) {        
        form_filtroCursos.addEventListener('submit', async(event)=> {
            event.preventDefault();
    
            // Obtener todos los campos del formulario
            const query_form = {
                modalidad:  form_modalidad.value === "Modalidad" ? '' : form_modalidad.value,
                nivel:      form_nivel.value.trim().replace(/\s+/g, '').toLowerCase() === "nivel" ? '' : form_nivel.value.trim().replace(/\s+/g, '').toLowerCase(),
                edad:       form_edad.value === "Edad" ? '' : form_edad.value,
                duracion:   form_duracion.value.trim() === "Duración" ? '' : form_duracion.value.trim(),
                sede:       form_sede.value.trim() === "Zona" ? '' : form_sede.value.trim(),
                nivel_especifico: ''
            };

            console.log('Query del Formulario')
            console.log(query_form)
            const cursosFiltrados_form = await filtrarCursosQuery(query_form);
            // Usar setTimeout para forzar la reasignación de valores
            setTimeout(function() {
                selectOption(form_modalidad, query_form.modalidad);
                selectOption(form_nivel, query_form.nivel);
                //selectOption(form_edad, query_form.edad);
                // Redundancia Add option que edad en select
                if (cat_slug) {
                    const options = data_util.filter(element => element.categoria === cat_slug);
                    
                    // remove
                    while (form_edad.firstChild) {
                        form_edad.removeChild(form_edad.firstChild);
                    }
                    // add
                    options.forEach(optionData => {
                        let option_select_edad   = document.createElement('option');
                        option_select_edad.value = optionData.categoria;
                        option_select_edad.text  = optionData.option;
                        option_select_edad.disabled = true;
                        option_select_edad.selected = true;
                        form_edad.appendChild(option_select_edad);
                        form_edad.disabled = true;
                    });
                }
                selectOption(form_duracion, query_form.duracion);
                selectOption(form_sede, query_form.sede);
            }, 50);
            procesarCursos(cursosFiltrados_form);
        });
    } else {
        console.error('Formulario con ID "filtrar_cursos" no encontrado.');
    }

    // Función para seleccionar una opción específica
    function selectOption(selectElement, titleText) {
        for (let option of selectElement.options) {
            if (option.text === titleText) {
                option.selected = true;
                break;
            }
        }
    }



});