// Variables globales
let usuarioActual = 0;
let mensajeBase = '';
let enviando = false;
let countdownInterval;
let usuariosEnviados = 0;

// --- Función para copiar al portapapeles ---
function copiarAlPortapapeles(texto) {
    navigator.clipboard.writeText(texto).then(() => {
        console.log("Mensaje copiado al portapapeles:", texto);
    }).catch(err => {
        console.error("Error al copiar:", err);
    });
}

function iniciarEnvio() {
    mensajeBase = document.getElementById('mensaje').value.trim();
    
    if (mensajeBase === '') {
        Swal.fire({
            icon: 'warning',
            title: '¡Atención!',
            text: 'Por favor, escriba un mensaje antes de continuar.',
            confirmButtonColor: '#25D366',
            width: '400px'
        });
        return;
    }

    if (usuarios.length === 0) {
        Swal.fire({
            icon: 'error',
            title: 'Sin usuarios',
            text: 'No hay usuarios disponibles para enviar mensajes.',
            confirmButtonColor: '#25D366',
            width: '400px'
        });
        return;
    }

    enviando = true;
    usuarioActual = 0;
    usuariosEnviados = 0;
    
    // Mostrar progreso
    document.getElementById('progressContainer').style.display = 'block';
    
    // Comenzar con el primer usuario
    mostrarConfirmacion();
}

function mostrarConfirmacion() {
    if (usuarioActual >= usuarios.length) {
        finalizarEnvio();
        return;
    }

    const usuario = usuarios[usuarioActual];
    
    // Procesar teléfono para mostrar con código de país
    let telefonoMostrar = usuario.telefono;
    let numeroLimpio = usuario.telefono.replace(/[^\d]/g, '');
    
    if (!numeroLimpio.startsWith('51') && numeroLimpio.length === 9) {
        telefonoMostrar = '+51 ' + numeroLimpio;
    } else if (numeroLimpio.startsWith('51')) {
        telefonoMostrar = '+' + numeroLimpio;
    }

    updateProgress();
    
    Swal.fire({
        title: '📱 Confirmar Envío',
        html: `
            <div style="text-align: center; font-size: 16px; margin: 20px 0;">
                <p><strong>¿Desea enviar el mensaje a:</strong></p>
                <div style="background: #f8f9fa; padding: 15px; border-radius: 8px; margin: 15px 0;">
                    <p style="margin: 5px 0; font-size: 18px; color: #25D366;"><strong>${usuario.nom_usuario}</strong></p>
                    <p style="margin: 5px 0; color: #6c757d;">con teléfono <strong>${telefonoMostrar}</strong></p>
                </div>
            </div>
        `,
        showCancelButton: true,
        showDenyButton: true,
        confirmButtonText: 'Sí, Enviar',
        denyButtonText: 'Saltar Usuario',
        cancelButtonText: 'Cancelar Todo',
        confirmButtonColor: '#28a745',
        denyButtonColor: '#ffc107',
        cancelButtonColor: '#dc3545',
        allowOutsideClick: false,
        allowEscapeKey: false,
        width: '400px'
    }).then((result) => {
        if (result.isConfirmed) {
            confirmarEnvio(true);
        } else if (result.isDenied) {
            confirmarEnvio(false);
        } else {
            cancelarEnvio();
        }
    });
}

function confirmarEnvio(enviar) {
    const usuario = usuarios[usuarioActual];

    if (enviar) {
        usuariosEnviados++;
        
        const mensajePersonalizado = `Hola ${usuario.nom_usuario}, ${mensajeBase}`;
        let numeroLimpio = usuario.telefono.replace(/[^\d]/g, '');
        
        if (!numeroLimpio.startsWith('51') && numeroLimpio.length === 9) {
            numeroLimpio = '51' + numeroLimpio;
        }
        
        const url = `https://wa.me/${numeroLimpio}?text=${encodeURIComponent(mensajePersonalizado)}`;
        window.open(url, '_blank');
        
        // 👉 Aquí copiamos el mensaje al portapapeles
        copiarAlPortapapeles(mensajePersonalizado);

        mostrarCountdown();
    } else {
        usuarioActual++;
        setTimeout(mostrarConfirmacion, 500);
    }
}

function mostrarCountdown() {
    let segundos = 5;
    
    Swal.fire({
        title: 'WhatsApp Abierto',
        html: `
            <div style="text-align: center;">
                <p>Envía el mensaje manualmente desde tu celular</p>
                <div style="font-size: 48px; font-weight: bold; color: #dc3545; margin: 20px 0;" id="swal-countdown">${segundos}</div>
                <p>Continuando automáticamente en <span id="swal-countdown-text">${segundos}</span> segundos...</p>
            </div>
        `,
        showConfirmButton: true,
        confirmButtonText: 'Continuar Ahora',
        confirmButtonColor: '#25D366',
        allowOutsideClick: false,
        allowEscapeKey: false,
        didOpen: () => {
            countdownInterval = setInterval(() => {
                segundos--;
                const countdownEl = document.getElementById('swal-countdown');
                const countdownTextEl = document.getElementById('swal-countdown-text');
                
                if (countdownEl) countdownEl.textContent = segundos;
                if (countdownTextEl) countdownTextEl.textContent = segundos;
                
                if (segundos <= 0) {
                    clearInterval(countdownInterval);
                    Swal.close();
                    continuarSiguiente();
                }
            }, 1000);
        }
    }).then((result) => {
        if (result.isConfirmed) {
            clearInterval(countdownInterval);
            continuarSiguiente();
        }
    });
}

function continuarSiguiente() {
    usuarioActual++;
    setTimeout(mostrarConfirmacion, 500);
}

function cancelarEnvio() {
    clearInterval(countdownInterval);
    enviando = false;
    
    Swal.fire({
        icon: 'info',
        title: 'Envío Cancelado',
        text: 'El proceso de envío ha sido cancelado por el usuario.',
        confirmButtonColor: '#25D366',
        width: '400px'
    });
    
    document.getElementById('statusMessage').className = 'status-message status-info';
    document.getElementById('statusMessage').textContent = 'Envío cancelado por el usuario.';
}

function finalizarEnvio() {
    enviando = false;
    
    Swal.fire({
        icon: 'success',
        title: 'Proceso Completado',
        html: `
            <div style="text-align: center;">
                <p>El envío masivo ha finalizado</p>
                <div style="background: #d4edda; padding: 15px; border-radius: 8px; margin: 15px 0;">
                    <strong>Mensajes enviados: ${usuariosEnviados}</strong><br>
                    <strong>Total de usuarios: ${usuarios.length}</strong>
                </div>
            </div>
        `,
        confirmButtonColor: '#25D366',
        width: '400px'
    });
    
    document.getElementById('statusMessage').className = 'status-message status-success';
    document.getElementById('statusMessage').textContent = 
        `Proceso completado. Se enviaron ${usuariosEnviados} mensajes de ${usuarios.length} usuarios.`;
    
    document.getElementById('progressBar').style.width = '100%';
    document.getElementById('progressText').textContent = `${usuarios.length}/${usuarios.length}`;
}

function updateProgress() {
    const progreso = (usuarioActual / usuarios.length) * 100;
    document.getElementById('progressBar').style.width = progreso + '%';
    document.getElementById('progressText').textContent = `${usuarioActual + 1}/${usuarios.length}`;
    
    document.getElementById('statusMessage').className = 'status-message status-info';
    document.getElementById('statusMessage').textContent = 
        `Procesando usuario ${usuarioActual + 1} de ${usuarios.length}: ${usuarios[usuarioActual].nom_usuario}`;
}
