<script>/*** JavaScript para la gestión de favoritos en cursos*/// Función para inicializar los manejadores de eventos para los favoritosfunction initFavoriteHandlers() {// Seleccionar todos los elementos con la clase favorite-toggleconst favoriteToggles = document.querySelectorAll('.favorite-toggle');// Añadir evento click a cada elementofavoriteToggles.forEach(toggle => {toggle.addEventListener('click', function() {const type = this.getAttribute('data-type');const id = this.getAttribute('data-id');if (id === '0') {alert('No hay ' + (type === "entidad" ? "entidad colaboradora" : "formador") + ' asociado');return;}// Llamar a la función para alternar el estado de favoritotoggleFavorite(type, id, this);});});}// Función para alternar el estado de favorito mediante AJAXfunction toggleFavorite(type, id, element) {const tr = element.closest('tr');const hasFavorite = tr.classList.contains('favorite');const url = '/ajax/courses/favorite/' + type + '/' + id;fetch(url, {method: 'POST',headers: {'Content-Type': 'application/json','X-Requested-With': 'XMLHttpRequest'}}).then(response => response.json()).then(data => {if (data.success) {// Actualizar el estado visual del elementoif (data.isFavorito) {tr.classList.add('favorite');element.setAttribute('title', 'Quitar de favoritos');element.textContent = "*";} else {tr.classList.remove('favorite');element.setAttribute('title', 'Añadir a favoritos');element.textContent = "";}} else {// Mostrar mensaje de erroralert(data.message || 'Error al actualizar favorito');}}).catch(error => {console.error('Error:', error);alert('Error al procesar la solicitud');});}// Inicializar cuando el DOM esté listodocument.addEventListener('DOMContentLoaded', function() {// Solo inicializar si el usuario está logueado (verificado en el template)if (document.body.classList.contains('logged-in')) {initFavoriteHandlers();}});</script>