/**
 * Contador de palabras modificado para TRAUMA 2025
 * Corregido para usar las nuevas clases CSS
 */

document.addEventListener('DOMContentLoaded', function() {
    // Configuración de límites para cada campo de texto
    const textareaLimits = {
        'title': { min: 1, max: 30 },
        'introduction': { min: 50, max: 190 },
        'methods': { min: 30, max: 170 },
        'results': { min: 50, max: 190 },
        'conclusions': { min: 30, max: 170 }
    };
    
    // Traduciones
    let translations = {
        words: 'palabras',
        totalWords: 'Total de palabras'
    };
    
    // Si hay traducciones en window, usarlas
    if (window.wordCounterTranslations) {
        translations = {...translations, ...window.wordCounterTranslations};
    }
    
    // Contar palabras
    function countWords(str) {
        return str.trim().split(/\s+/).filter(word => word.length > 0).length;
    }
    
    // Actualizar contadores de palabras
    function updateWordCounts() {
        let totalWords = 0;
        let maxTotalWords = 0;
        
        for (const [id, limits] of Object.entries(textareaLimits)) {
            const textarea = document.getElementById(id);
            if (!textarea) continue;
            
            const wordCount = countWords(textarea.value);
            const countElement = document.getElementById(`${id}-word-count`);
            if (!countElement) continue;
            
            // Buscar la barra de progreso con la nueva clase
            const progressBar = countElement.querySelector('.word-progress-bar');
            // Si no existe con la nueva clase, buscar la antigua
            const progressBarOld = progressBar || countElement.querySelector('.progress-bar');
            
            const progress = progressBar ? progressBar.querySelector('.progress') :
                             progressBarOld ? progressBarOld.querySelector('.progress') : null;
            
            const countSpan = countElement.querySelector('span');
            
            // Actualizar contador y barra de progreso
            if (countSpan) countSpan.textContent = `${wordCount}/${limits.max} ${translations.words}`;
            
            // Calcular porcentaje para la barra de progreso
            const percentage = Math.min((wordCount / limits.max) * 100, 100);
            if (progress) progress.style.width = `${percentage}%`;
            
            // Aplicar estilo de error si no cumple con los límites
            if ((textarea.value.trim() !== '' && wordCount < limits.min) || wordCount > limits.max) {
                textarea.classList.add('error');
                countElement.classList.add('error');
            } else {
                textarea.classList.remove('error');
                countElement.classList.remove('error');
            }
            
            // Acumular para el total
            totalWords += wordCount;
            maxTotalWords += limits.max;
        }
        
        // Actualizar contador total
        const totalElement = document.getElementById('total-word-count');
        if (totalElement) {
            const totalSpan = totalElement.querySelector('span');
            
            // Buscar con las nuevas clases primero
            let totalProgressBar = totalElement.querySelector('.total-progress-bar');
            
            // Si no se encuentra, buscar con las clases antiguas
            if (!totalProgressBar) {
                const totalProgressContainer = totalElement.querySelector('.progress-container') || 
                                              totalElement.querySelector('.total-progress-container');
                if (totalProgressContainer) {
                    totalProgressBar = totalProgressContainer.querySelector('.progress-bar') ||
                                      totalProgressContainer.querySelector('.total-progress-bar');
                }
            }
            
            if (totalSpan) {
                totalSpan.textContent = `${translations.totalWords}: ${totalWords}/${maxTotalWords}`;
            }
            
            if (totalProgressBar) {
                const totalPercentage = (totalWords / maxTotalWords) * 100;
                totalProgressBar.style.width = `${totalPercentage}%`;
            }
            
            // Verificar si el total excede el límite
            if (totalWords > maxTotalWords) {
                totalElement.classList.add('error');
            } else {
                totalElement.classList.remove('error');
            }
        }
        
        return { 
            isValid: totalWords <= maxTotalWords && totalWords >= 1, 
            wordCounts: { 
                total: totalWords, 
                ...Object.fromEntries(Object.entries(textareaLimits).map(([id]) => {
                    const el = document.getElementById(id);
                    return [id, el ? countWords(el.value) : 0];
                }))
            } 
        };
    }
    
    // Inicializar eventos para los campos de texto
    for (const id in textareaLimits) {
        const textarea = document.getElementById(id);
        if (textarea) {
            textarea.addEventListener('input', function() {
                updateWordCounts();
            });
            
            // Convertir título a mayúsculas automáticamente
            if (id === 'title') {
                textarea.addEventListener('blur', function() {
                    this.value = this.value.toUpperCase();
                });
            }
        }
    }
    
    // Actualizar contadores iniciales
    updateWordCounts();
    
    // Exponer funciones para uso en otros scripts
    window.wordCounter = {
        countWords,
        updateWordCounts,
        textareaLimits
    };
});