let voces = [];
let isSpeaking = false;
let utteranceActual = null;
let timeoutPendiente = null;

function cargarVoces() {
  const vocesDisponibles = speechSynthesis.getVoices(); // ✅ CORREGIDO: getVoices (con "i")
  voces = vocesDisponibles.filter(v => v.lang.startsWith('es'));
  
  console.log('🔊 Voces disponibles:', vocesDisponibles.length);
  console.log('🇪🇸 Voces en español:', voces.length);
  
  if (voces.length === 0 && vocesDisponibles.length > 0) {
    voces = [vocesDisponibles[0]];
    console.warn('⚠️ Usando voz predeterminada');
  }
}

// ✅ Detener lectura de forma segura
function detenerLectura() {
  // Cancelar timeout pendiente si existe
  if (timeoutPendiente) {
    clearTimeout(timeoutPendiente);
    timeoutPendiente = null;
  }
  
  // Cancelar síntesis de voz
  if (window.speechSynthesis.speaking || window.speechSynthesis.pending) {
    window.speechSynthesis.cancel();
  }
  
  // Limpiar referencia a utterance
  utteranceActual = null;
  isSpeaking = false;
}

// ✅ Función principal de lectura
function leerTexto(texto, callback = null) {
  // Detener cualquier lectura en curso
  detenerLectura();
  
  if (!voces.length) cargarVoces();

  if (voces.length === 0) {
    console.error('❌ No hay voces disponibles');
    if (typeof callback === 'function') callback();
    return;
  }

  // Crear nueva utterance
  utteranceActual = new SpeechSynthesisUtterance(texto);

  const vozPreferida = localStorage.getItem('vozPreferida');
  const vozSeleccionada = voces.find(v => v.name === vozPreferida) || voces[0];
  utteranceActual.voice = vozSeleccionada;
  utteranceActual.rate = 1.0;
  utteranceActual.pitch = 1.0;
  utteranceActual.volume = 1.0;

  utteranceActual.onstart = () => {
    isSpeaking = true;
  };

  utteranceActual.onend = () => {
    isSpeaking = false;
    utteranceActual = null;
    if (typeof callback === 'function') callback();
  };

  // ✅ CRÍTICO: Solo mostrar errores reales, NO "interrupted"
  utteranceActual.onerror = (e) => {
    if (e.error !== 'interrupted') {
      console.error('❌ Error de síntesis de voz:', e.error);
    }
    isSpeaking = false;
    utteranceActual = null;
    if (typeof callback === 'function') callback();
  };

  // ✅ Iniciar lectura con verificación de seguridad
  timeoutPendiente = setTimeout(() => {
    timeoutPendiente = null;
    if (utteranceActual && utteranceActual instanceof SpeechSynthesisUtterance) {
      window.speechSynthesis.speak(utteranceActual);
    }
  }, 100);
}

// ✅ Exponer funciones globalmente
window.leerTexto = leerTexto;
window.detenerLectura = detenerLectura;

// Inicializar voces
if (window.speechSynthesis.onvoiceschanged !== undefined) {
  window.speechSynthesis.onvoiceschanged = cargarVoces;
}

cargarVoces();
setTimeout(cargarVoces, 500);

console.log('✅ voz.js cargado correctamente');