<?php 
session_start();
error_reporting(E_ALL & ~E_NOTICE); 
extract($_REQUEST, EXTR_PREFIX_ALL, "P");
extract($_REQUEST, EXTR_PREFIX_ALL, "G");
include_once "utils_database.php";
include_once "utils.php";
$vMaxNroPalabras = 300; 
$vMaxNroPalabrasTitulo = 30; 

$vAreasUsuario = getDatUser($_SESSION['usr'], 9);
$vTipo = getDatUser($_SESSION['usr'], 2);
$vIdUsr = getDatUser($_SESSION['usr'], 1);

// Procesar peticiones AJAX
if (isset($_POST['ajax_action'])) {
    $ajaxAction = $_POST['ajax_action'];
    $response = ['success' => false, 'message' => 'Acción no válida'];
    
    // Guardar asignación
    if ($ajaxAction === 'save_assignment') {
        $paperCode = isset($_POST['paper_code']) ? $_POST['paper_code'] : '';
        $evaluator1 = isset($_POST['evaluator1']) ? $_POST['evaluator1'] : '';
        $evaluator2 = isset($_POST['evaluator2']) ? $_POST['evaluator2'] : '';
        $evaluator3 = isset($_POST['evaluator3']) ? $_POST['evaluator3'] : '';

        if (empty($paperCode) || empty($evaluator1) || empty($evaluator2) || empty($evaluator3)) {
            $response = ['success' => false, 'message' => 'Faltan datos requeridos'];
        } else {
            try {
                // Validar que los evaluadores sean distintos
                if ($evaluator1 == $evaluator2 || $evaluator1 == $evaluator3 || $evaluator2 == $evaluator3) {
                    $response = ['success' => false, 'message' => 'Los evaluadores deben ser distintos'];
                } else {
                    // Obtener el ID del trabajo por su código
                    $trabajoId = GetDato("ttrabajo", "codigo", $paperCode, "id");
                    
                    if (!$trabajoId) {
                        $response = ['success' => false, 'message' => 'Código de trabajo no encontrado'];
                    } else {
                        // Actualizar el trabajo con los evaluadores asignados
                        $updated = UpdateReg("ttrabajo", "evaluador1", $evaluator1, "id='$trabajoId'");
                        $updated = UpdateReg("ttrabajo", "evaluador2", $evaluator2, "id='$trabajoId'") && $updated;
                        $updated = UpdateReg("ttrabajo", "evaluador3", $evaluator3, "id='$trabajoId'") && $updated;
                        $updated = UpdateReg("ttrabajo", "estado", '2', "id='$trabajoId'") && $updated;
                        
                        if ($updated) {
                            $response = ['success' => true, 'message' => 'Asignación guardada correctamente'];
                        } else {
                            $response = ['success' => false, 'message' => 'Error al actualizar el trabajo'];
                        }
                    }
                }
            } catch (Exception $e) {
                $response = ['success' => false, 'message' => 'Error: ' . $e->getMessage()];
            }
        }
    }
    
    // Nueva función para asignación automática y equitativa
    if ($ajaxAction === 'auto_assign') {
        try {
            $conn = Activarmysql();
            
            if (!$conn) {
                throw new Exception("No se pudo establecer una conexión a la base de datos");
            }
            
            // Iniciar transacción
            if (method_exists($conn, 'begin_transaction')) {
                $conn->begin_transaction();
            } else {
                $conn->query("SET autocommit=0");
                $conn->query("START TRANSACTION");
            }
            
            $success = true;
            
            // Obtener todos los trabajos pendientes por asignar
            $pendingPapersQuery = "SELECT id, codigo, area_tematica FROM ttrabajo WHERE activo='1' AND estado='1' ORDER BY id";
            $pendingPapersResult = $conn->query($pendingPapersQuery);
            
            if ($pendingPapersResult === false) {
                throw new Exception("Error al obtener trabajos pendientes: " . $conn->error);
            }
            
            // Obtener todos los evaluadores activos
            $evaluatorsQuery = "SELECT id FROM tusuario WHERE activo='1' AND tipousuario='E'";
            $evaluatorsResult = $conn->query($evaluatorsQuery);
            
            if ($evaluatorsResult === false) {
                throw new Exception("Error al obtener evaluadores: " . $conn->error);
            }
            
            // Crear array de evaluadores
            $evaluators = [];
            while ($evaluator = $evaluatorsResult->fetch_assoc()) {
                $evaluators[] = $evaluator['id'];
            }
            
            // Verificar que haya suficientes evaluadores (mínimo 3)
            if (count($evaluators) < 3) {
                throw new Exception("Se necesitan al menos 3 evaluadores para asignar los trabajos");
            }
            
            // Crear estructura para contabilizar asignaciones por evaluador
            $evaluatorAssignments = [];
            foreach ($evaluators as $evaluatorId) {
                $evaluatorAssignments[$evaluatorId] = 0;
            }
            
            // Contar asignaciones ya existentes
            $existingAssignmentsQuery = "SELECT evaluador1, evaluador2, evaluador3 FROM ttrabajo WHERE activo='1' AND estado IN ('2','3','4','5')";
            $existingAssignmentsResult = $conn->query($existingAssignmentsQuery);
            
            if ($existingAssignmentsResult === false) {
                throw new Exception("Error al obtener asignaciones existentes: " . $conn->error);
            }
            
            while ($assignment = $existingAssignmentsResult->fetch_assoc()) {
                if (!empty($assignment['evaluador1']) && isset($evaluatorAssignments[$assignment['evaluador1']])) {
                    $evaluatorAssignments[$assignment['evaluador1']]++;
                }
                if (!empty($assignment['evaluador2']) && isset($evaluatorAssignments[$assignment['evaluador2']])) {
                    $evaluatorAssignments[$assignment['evaluador2']]++;
                }
                if (!empty($assignment['evaluador3']) && isset($evaluatorAssignments[$assignment['evaluador3']])) {
                    $evaluatorAssignments[$assignment['evaluador3']]++;
                }
            }
            
            // Asignar evaluadores a trabajos pendientes
            $assignedPapers = 0;
            
            while ($paper = $pendingPapersResult->fetch_assoc()) {
                // Seleccionar 3 evaluadores distintos con la menor carga de trabajo
                // Ordenar evaluadores por número de asignaciones
                asort($evaluatorAssignments);
                
                // Seleccionar los 3 primeros (con menor carga)
                $selectedEvaluators = array_keys(array_slice($evaluatorAssignments, 0, 3, true));
                
                // Si hay menos de 3 evaluadores, no se puede continuar
                if (count($selectedEvaluators) < 3) {
                    throw new Exception("No hay suficientes evaluadores disponibles para asignar al trabajo " . $paper['codigo']);
                }
                
                $evaluator1 = $selectedEvaluators[0];
                $evaluator2 = $selectedEvaluators[1];
                $evaluator3 = $selectedEvaluators[2];
                
                // Actualizar el trabajo
                $updateQuery = "UPDATE ttrabajo SET 
                                evaluador1 = ?, 
                                evaluador2 = ?, 
                                evaluador3 = ?, 
                                estado = '2' 
                                WHERE id = ?";
                
                $stmt = $conn->prepare($updateQuery);
                if ($stmt === false) {
                    throw new Exception("Error en la preparación de la consulta: " . $conn->error);
                }
                
                $stmt->bind_param("sssi", $evaluator1, $evaluator2, $evaluator3, $paper['id']);
                $result = $stmt->execute();
                
                if ($result === false) {
                    throw new Exception("Error al actualizar el trabajo " . $paper['codigo'] . ": " . $stmt->error);
                }
                
                $stmt->close();
                
                // Incrementar contadores de asignación
                $evaluatorAssignments[$evaluator1]++;
                $evaluatorAssignments[$evaluator2]++;
                $evaluatorAssignments[$evaluator3]++;
                
                $assignedPapers++;
            }
            
            // Confirmar cambios
            if ($success) {
                if (method_exists($conn, 'commit')) {
                    $conn->commit();
                } else {
                    $conn->query("COMMIT");
                }
                
                $response = [
                    'success' => true, 
                    'message' => "Se han asignado $assignedPapers trabajos de manera equitativa",
                    'assignedPapers' => $assignedPapers
                ];
            }
            
        } catch (Exception $e) {
            // Revertir cambios en caso de error
            if (isset($conn) && $conn) {
                if (method_exists($conn, 'rollback')) {
                    $conn->rollback();
                } else {
                    try { 
                        $conn->query("ROLLBACK"); 
                    } catch (Exception $e2) { 
                        // Ignorar error en rollback 
                    }
                }
            }
            
            $response = [
                'success' => false, 
                'message' => 'Error en la asignación automática: ' . $e->getMessage()
            ];
        } finally {
            // Restaurar autocommit si fue desactivado
            if (isset($conn) && $conn) {
                if (!method_exists($conn, 'begin_transaction')) {
                    $conn->query("SET autocommit=1");
                }
            }
        }
    }
    
    // Reiniciar asignaciones
    if ($ajaxAction === 'reset_all') {
        // Registrar intento de reinicio para depuración
        error_log("Intento de reinicio de asignaciones por usuario con tipo: " . $vTipo);
        
        if ($vTipo != 'S') {
            $response = ['success' => false, 'message' => 'No tiene permisos para realizar esta acción'];
        } else {
            try {
                // Obtener conexión
                $conn = Activarmysql();
                
                // Verificar que la conexión es válida
                if (!$conn) {
                    throw new Exception("No se pudo establecer una conexión a la base de datos");
                }
                
                // Iniciar la transacción
                if (method_exists($conn, 'begin_transaction')) {
                    $conn->begin_transaction();
                } else {
                    $conn->query("SET autocommit=0");
                    $conn->query("START TRANSACTION");
                }
                
                $success = true;
                
                // Reiniciar evaluadores y estado en trabajos
                $query1 = "UPDATE ttrabajo SET estado=1, evaluador1=NULL, evaluador2=NULL, evaluador3=NULL WHERE activo='1'";
                $result1 = $conn->query($query1);
                
                if ($result1 === false) {
                    $success = false;
                    error_log("Error en la consulta 1: " . $conn->error);
                    throw new Exception("Error al actualizar evaluadores en trabajos: " . $conn->error);
                }
                
                $trabajos_actualizados = $conn->affected_rows;
                
                // Actualizar campos de calificación
                $query2 = "UPDATE ttrabajo SET 
                        calificacion1_1=NULL, calificacion1_2=NULL, calificacion1_3=NULL,
                        calificacion1_4=NULL, calificacion1_5=NULL, calificacion1_6=NULL,
                        calificacion1_fecha=NULL,
                        calificacion2_1=NULL, calificacion2_2=NULL, calificacion2_3=NULL,
                        calificacion2_4=NULL, calificacion2_5=NULL, calificacion2_6=NULL,
                        calificacion2_fecha=NULL,
                        calificacion3_1=NULL, calificacion3_2=NULL, calificacion3_3=NULL,
                        calificacion3_4=NULL, calificacion3_5=NULL, calificacion3_6=NULL,
                        calificacion3_fecha=NULL,
                        cod_tipo_presentacion_recomendado1=NULL,
                        cod_tipo_presentacion_recomendado2=NULL,
                        cod_tipo_presentacion_recomendado3=NULL,
                        calificacion_promedio=NULL
                        WHERE activo='1'";
                $result2 = $conn->query($query2);
                
                if ($result2 === false) {
                    $success = false;
                    error_log("Error en la consulta 2: " . $conn->error);
                    throw new Exception("Error al actualizar calificaciones en trabajos: " . $conn->error);
                }
                
                // Confirmar o revertir cambios según el resultado
                if ($success) {
                    if (method_exists($conn, 'commit')) {
                        $conn->commit();
                    } else {
                        $conn->query("COMMIT");
                    }
                    
                    $response = [
                        'success' => true, 
                        'message' => 'Asignaciones reiniciadas correctamente',
                        'stats' => [
                            'trabajos_actualizados' => $trabajos_actualizados
                        ]
                    ];
                } else {
                    if (method_exists($conn, 'rollback')) {
                        $conn->rollback();
                    } else {
                        $conn->query("ROLLBACK");
                    }
                    
                    throw new Exception("Error al realizar las consultas de reinicio");
                }
                
            } catch (Exception $e) {
                error_log("Error en reset_all: " . $e->getMessage());
                
                // Intentar rollback en caso de error
                if (isset($conn) && $conn) {
                    if (method_exists($conn, 'rollback')) {
                        $conn->rollback();
                    } else {
                        try { 
                            $conn->query("ROLLBACK"); 
                        } catch (Exception $e2) { 
                            // Ignorar error en rollback 
                        }
                    }
                }
                
                $response = [
                    'success' => false, 
                    'message' => 'Error al reiniciar asignaciones: ' . $e->getMessage()
                ];
            } finally {
                // Restaurar autocommit si fue desactivado
                if (isset($conn) && $conn) {
                    if (!method_exists($conn, 'begin_transaction')) {
                        $conn->query("SET autocommit=1");
                    }
                }
            }
        }
    }
    
    // Devolver respuesta como JSON y terminar la ejecución
    header('Content-Type: application/json');
    echo json_encode($response);
    exit;
}

// Contar trabajos totales y asignados
$totalPapers = 0;
$assignedPapers = 0;

$countQuery = mysqli_query(Activarmysql(), "SELECT COUNT(*) as total FROM ttrabajo WHERE activo='1'");
if ($countRow = mysqli_fetch_assoc($countQuery)) {
    $totalPapers = $countRow['total'];
}
mysqli_free_result($countQuery);

$countAssignedQuery = mysqli_query(Activarmysql(), "SELECT COUNT(*) as total FROM ttrabajo WHERE activo='1' AND estado IN ('2','3','4','5')");
if ($countAssignedRow = mysqli_fetch_assoc($countAssignedQuery)) {
    $assignedPapers = $countAssignedRow['total'];
}
mysqli_free_result($countAssignedQuery);

// Función para obtener el nombre del evaluador por su ID
function getEvaluatorName($evaluadorId) {
    if (empty($evaluadorId)) return '-';
    
    $nombre = GetDato("tusuario", "id", $evaluadorId, "nombre");
    if (empty($nombre)) {
        return $evaluadorId; // Si no se encuentra el nombre, devolver el ID
    }
    
    // Obtener las iniciales o primeras letras del nombre para mostrar en la insignia
    $palabras = explode(' ', $nombre);
    $iniciales = '';
    
    foreach ($palabras as $palabra) {
        if (!empty($palabra)) {
            $iniciales .= mb_substr($palabra, 0, 1, 'UTF-8');
            if (strlen($iniciales) >= 2) break; // Limitar a 2 iniciales
        }
    }
    
    return $iniciales;
}

// Función para obtener el nombre completo para el tooltip
function getEvaluatorFullName($evaluadorId) {
    if (empty($evaluadorId)) return '';
    
    $nombre = GetDato("tusuario", "id", $evaluadorId, "nombre");
    return $nombre ? $nombre : "Evaluador $evaluadorId";
}

// Función para obtener la URL del avatar
function getEvaluatorAvatar($evaluadorId) {
    if (empty($evaluadorId)) return '';
    
    $avatar = GetDato("tusuario", "id", $evaluadorId, "avatar");
    $nombre = GetDato("tusuario", "id", $evaluadorId, "nombre");
    
    if (!empty($avatar)) {
        return "dist/pages/evaluadores/acciones_evaluador/fotos_empleados/" . htmlspecialchars($avatar);
    } else {
        return "https://ui-avatars.com/api/?name=" . urlencode($nombre) . "&background=2c3e50&color=ffffff&size=60&rounded=true";
    }
}

// Obtener evaluadores activos
$evaluadoresActivos = array();
$queryEvaluadores = mysqli_query(Activarmysql(), "SELECT id, nombre, avatar, tipousuario FROM tusuario WHERE activo='1' AND tipousuario='E'");
while ($evaluador = mysqli_fetch_assoc($queryEvaluadores)) {
    $evaluadoresActivos[] = $evaluador;
}
mysqli_free_result($queryEvaluadores);

// Contar asignaciones por evaluador
$evaluadorAsignaciones = array();
foreach ($evaluadoresActivos as $evaluador) {
    $evaluadorId = $evaluador['id'];
    $contadorQuery = mysqli_query(Activarmysql(), "SELECT
        (SELECT COUNT(*) FROM ttrabajo WHERE evaluador1='$evaluadorId' AND activo='1' AND estado IN ('2','3','4','5')) +
        (SELECT COUNT(*) FROM ttrabajo WHERE evaluador2='$evaluadorId' AND activo='1' AND estado IN ('2','3','4','5')) +
        (SELECT COUNT(*) FROM ttrabajo WHERE evaluador3='$evaluadorId' AND activo='1' AND estado IN ('2','3','4','5')) as total");
    
    if ($contadorRow = mysqli_fetch_assoc($contadorQuery)) {
        $evaluadorAsignaciones[$evaluadorId] = $contadorRow['total'];
    } else {
        $evaluadorAsignaciones[$evaluadorId] = 0;
    }
    mysqli_free_result($contadorQuery);
}
?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Scientific Abstracts Assignment</title>
    <!-- CSS primero -->
   <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css" rel="stylesheet">
    <link rel="stylesheet" href="styles.css">
    
    <!-- Scripts externos después -->
   <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/MotionPathPlugin.min.js"></script>
    
    <!-- Script personalizado al final -->
    <script src="scripts.js"></script>
</head>
<body>
    <div class="header">
        <div class="container">
            <h1><i class="fas fa-tasks"></i> Sistema de Asignación de Trabajos Científicos</h1>
        </div>
    </div>

    <div class="container">
        <div id="assignment-progress" class="card">
            <div class="card-header">
                <h2><i class="fas fa-chart-pie"></i> Progreso de Asignación</h2>
            </div>
            <div class="card-body active">
                <div class="stats-box">
                    <div class="stat-item">
                        <div id="pending-count" class="stat-value pending-value"><?php echo $totalPapers - $assignedPapers; ?></div>
                        <div class="stat-label">Pendientes</div>
                    </div>
                    <div class="stat-item">
                        <div id="assigned-count" class="stat-value assigned-value"><?php echo $assignedPapers; ?></div>
                        <div class="stat-label">Asignados</div>
                    </div>
                    <div class="stat-item">
                        <div id="total-count" class="stat-value total-value"><?php echo $totalPapers; ?></div>
                        <div class="stat-label">Total</div>
                    </div>
                </div>
                <div class="progress-container">
                    <div id="progress-bar" class="progress-value" style="width: <?php echo ($totalPapers > 0) ? (($assignedPapers / $totalPapers) * 100) : 0; ?>%;"></div>
                </div>
            </div>
        </div>

              <div class="card">
    <div class="card-header">
        <h2><i class="fas fa-play"></i> Iniciar Asignación</h2>
    </div>
    <div class="card-body active">
        <!-- Mejorar estructura de botones para efectos visuales -->
        <div class="action-buttons">
            <button id="assign-btn" class="btn btn-primary button-3d">
                <span class="button-content">
                    <i class="fas fa-random"></i>
                    <span>Asignar Evaluadores Automáticamente</span>
                </span>
                <span class="button-effect"></span>
            </button>
            <button id="reset-btn" class="btn btn-danger button-3d">
                <span class="button-content">
                    <i class="fas fa-undo"></i>
                    <span>Reiniciar</span>
                </span>
                <span class="button-effect"></span>
            </button>
        </div>
    </div>
</div>
        <!-- Distribución de carga de evaluadores -->
        <div id="evaluator-workload" class="card">
            <div class="card-header">
                <h2><i class="fas fa-balance-scale"></i> Distribución de Carga de Evaluadores</h2>
                <button class="card-toggle">
                    <i class="fas fa-chevron-down"></i> <span>Mostrar</span>
                </button>
            </div>
            <div class="card-body">
                <!-- Agregar contenedor para gráfico de carga -->
                <div id="workload-chart" class="workload-chart"></div>
                
                <div class="table-responsive">
                    <table>
                        <thead>
                            <tr>
                                <th>Evaluador</th>
                                <th>Nombre</th>
                                <th style="text-align: center;">Asignaciones</th>
                            </tr>
                        </thead>
                        <tbody>
                        <?php foreach ($evaluadoresActivos as $evaluador): ?>
                            <tr>
                                <td>
                                    <div class="evaluator-badge">
                                        <?php 
                                        $avatarUrl = getEvaluatorAvatar($evaluador['id']);
                                        if (!empty($avatarUrl)): 
                                        ?>
                                            <img class="evaluator-avatar" src="<?php echo $avatarUrl; ?>" alt="<?php echo $evaluador['nombre']; ?>" style="display: block; width: 100%; height: 100%; object-fit: cover; border-radius: 50%;">
                                        <?php else: ?>
                                            <span class="evaluator-initials"><?php echo getEvaluatorName($evaluador['id']); ?></span>
                                        <?php endif; ?>
                                    </div>
                                </td>
                                <td><?php echo htmlspecialchars($evaluador['nombre']); ?></td>
                                <td style="text-align: center;">
                                    <span class="badge <?php echo ($evaluadorAsignaciones[$evaluador['id']] > 0) ? 'badge-primary' : 'badge-secondary'; ?>">
                                        <?php echo $evaluadorAsignaciones[$evaluador['id']]; ?>
                                    </span>
                                </td>
                            </tr>
                        <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>

        <?php
        $vAreas = GetFile("tarea", "", "id");
        while ($vArea = mysqli_fetch_assoc($vAreas)) {
            $areaId = $vArea['codigo'];
            $areaDesc = $vArea['descripcion'];
            
            // Count papers in this area
            $areaPapersQuery = GetFile("ttrabajo", "activo='1' and area_tematica='".$areaId."'", "id");
            $areaPapersCount = mysqli_num_rows($areaPapersQuery);
            mysqli_free_result($areaPapersQuery);
            
            // Count assigned papers in this area
            $areaAssignedQuery = GetFile("ttrabajo", "activo='1' and area_tematica='".$areaId."' and estado in ('2','3','4','5')", "id");
            $areaAssignedCount = mysqli_num_rows($areaAssignedQuery);
            mysqli_free_result($areaAssignedQuery);
        ?>
        <div class="card area-card" data-area="<?php echo $areaId; ?>">
            <div class="card-header">
                <h2>
                    <i class="fas fa-bookmark"></i> 
                    <?php echo "($areaId) $areaDesc"; ?>
                    <span class="status-badge <?php echo ($areaAssignedCount == $areaPapersCount) ? 'status-assigned' : 'status-pending'; ?>">
                        <?php echo "$areaAssignedCount/$areaPapersCount"; ?>
                    </span>
                </h2>
                <button class="card-toggle">
                    <i class="fas fa-chevron-down"></i> <span>Mostrar</span>
                </button>
            </div>
            <div class="card-body">
                <div class="table-responsive">
                    <table>
                        <thead>
                            <tr>
                                <th>Código</th>
                                <th>Título</th>
                                <th>Tipo</th>
                                <th style="text-align: center;">E1</th>
                                <th style="text-align: center;">E2</th>
                                <th style="text-align: center;">E3</th>
                                <th>Estado</th>
                            </tr>
                        </thead>
                        <tbody>
                        <?php
                        $vTrabajos = GetFile("ttrabajo", "activo='1' and area_tematica='".$areaId."' and estado='1'", "id");
                        $i = 0;
                        while ($vTrabajo = mysqli_fetch_assoc($vTrabajos)){
                            $paperCode = $vTrabajo['codigo'];
                            $paperTitle = $vTrabajo['titulo'];
                            $paperType = GetDato("ttipo_presentacion", "codigo", $vTrabajo['cod_tipo_presentacion_propuesto'], "descripcion_esp");
                            
                            // Get paper type for styling
                            $typeClass = 'tag-poster'; // Default
                            if (stripos($paperType, 'oral') !== false) {
                                $typeClass = 'tag-oral';
                            } elseif (stripos($paperType, 'panel') !== false) {
                                $typeClass = 'tag-panel';
                            }
                            
                            // Add a slight delay to each row for animation effect
                            $delay = $i * 0.15;
                            $i++;
                        ?>
                        <tr class="paper-row" data-paper="<?php echo $paperCode; ?>">
                            <td><?php echo $paperCode; ?></td>
                            <td><?php echo htmlspecialchars($paperTitle); ?></td>
                            <td><span class="tag <?php echo $typeClass; ?>"><?php echo $paperType; ?></span></td>
                            <td style="text-align: center;">
                                <div class="evaluator-badge" id="e1-<?php echo $paperCode; ?>" data-delay="<?php echo $delay; ?>">
                                    <span class="evaluator-initials">-</span>
                                    <img class="evaluator-avatar" src="" alt="" style="display: none; width: 100%; height: 100%; object-fit: cover; border-radius: 50%;">
                                </div>
                            </td>
                            <td style="text-align: center;">
                                <div class="evaluator-badge" id="e2-<?php echo $paperCode; ?>" data-delay="<?php echo $delay + 0.5; ?>">
                                    <span class="evaluator-initials">-</span>
                                    <img class="evaluator-avatar" src="" alt="" style="display: none; width: 100%; height: 100%; object-fit: cover; border-radius: 50%;">
                                </div>
                            </td>
                            <td style="text-align: center;">
                                <div class="evaluator-badge" id="e3-<?php echo $paperCode; ?>" data-delay="<?php echo $delay + 1.0; ?>">
                                    <span class="evaluator-initials">-</span>
                                    <img class="evaluator-avatar" src="" alt="" style="display: none; width: 100%; height: 100%; object-fit: cover; border-radius: 50%;">
                                </div>
                            </td>
                            <td><span class="status-badge status-pending" id="status-<?php echo $paperCode; ?>">Pendiente</span></td>
                        </tr>
                        <?php
                        }
                        mysqli_free_result($vTrabajos);
                        
                        // También mostrar los trabajos ya asignados
                        $vTrabajosAsignados = GetFile("ttrabajo", "activo='1' and area_tematica='".$areaId."' and estado IN ('2','3','4','5')", "id");
                        while ($vTrabajo = mysqli_fetch_assoc($vTrabajosAsignados)){
                            $paperCode = $vTrabajo['codigo'];
                            $paperTitle = $vTrabajo['titulo'];
                            $paperType = GetDato("ttipo_presentacion", "codigo", $vTrabajo['cod_tipo_presentacion_propuesto'], "descripcion_esp");
                            $evaluator1 = $vTrabajo['evaluador1'];
                            $evaluator2 = $vTrabajo['evaluador2'];
                            $evaluator3 = $vTrabajo['evaluador3'];
                            
                            // Get paper type for styling
                            $typeClass = 'tag-poster'; // Default
                            if (stripos($paperType, 'oral') !== false) {
                                $typeClass = 'tag-oral';
                            } elseif (stripos($paperType, 'panel') !== false) {
                                $typeClass = 'tag-panel';
                            }
                        ?>
                        <tr class="paper-row" data-paper="<?php echo $paperCode; ?>">
                            <td><?php echo $paperCode; ?></td>
                            <td><?php echo htmlspecialchars($paperTitle); ?></td>
                            <td><span class="tag <?php echo $typeClass; ?>"><?php echo $paperType; ?></span></td>
                            <td style="text-align: center;">
                                <div class="evaluator-badge assigned" id="e1-<?php echo $paperCode; ?>" title="<?php echo getEvaluatorFullName($evaluator1); ?>" data-evaluator-id="<?php echo $evaluator1; ?>">
                                    <?php 
                                    $avatarUrl = getEvaluatorAvatar($evaluator1);
                                    if (!empty($avatarUrl)): 
                                    ?>
                                        <img class="evaluator-avatar" src="<?php echo $avatarUrl; ?>" alt="<?php echo getEvaluatorFullName($evaluator1); ?>" style="display: block; width: 100%; height: 100%; object-fit: cover; border-radius: 50%;">
                                    <?php else: ?>
                                        <span class="evaluator-initials"><?php echo getEvaluatorName($evaluator1); ?></span>
                                    <?php endif; ?>
                                </div>
                            </td>
                            <td style="text-align: center;">
                                <div class="evaluator-badge assigned" id="e2-<?php echo $paperCode; ?>" title="<?php echo getEvaluatorFullName($evaluator2); ?>" data-evaluator-id="<?php echo $evaluator2; ?>">
                                    <?php 
                                    $avatarUrl = getEvaluatorAvatar($evaluator2);
                                    if (!empty($avatarUrl)): 
                                    ?>
                                        <img class="evaluator-avatar" src="<?php echo $avatarUrl; ?>" alt="<?php echo getEvaluatorFullName($evaluator2); ?>" style="display: block; width: 100%; height: 100%; object-fit: cover; border-radius: 50%;">
                                    <?php else: ?>
                                        <span class="evaluator-initials"><?php echo getEvaluatorName($evaluator2); ?></span>
                                    <?php endif; ?>
                                </div>
                            </td>
                            <td style="text-align: center;">
                                <div class="evaluator-badge assigned" id="e3-<?php echo $paperCode; ?>" title="<?php echo getEvaluatorFullName($evaluator3); ?>" data-evaluator-id="<?php echo $evaluator3; ?>">
                                    <?php 
                                    $avatarUrl = getEvaluatorAvatar($evaluator3);
                                    if (!empty($avatarUrl)): 
                                    ?>
                                        <img class="evaluator-avatar" src="<?php echo $avatarUrl; ?>" alt="<?php echo getEvaluatorFullName($evaluator3); ?>" style="display: block; width: 100%; height: 100%; object-fit: cover; border-radius: 50%;">
                                    <?php else: ?>
                                        <span class="evaluator-initials"><?php echo getEvaluatorName($evaluator3); ?></span>
                                    <?php endif; ?>
                                </div>
                            </td>
                            <td><span class="status-badge status-assigned" id="status-<?php echo $paperCode; ?>">Asignado</span></td>
                        </tr>
                        <?php
                        }
                        mysqli_free_result($vTrabajosAsignados);
                        ?>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
        <?php
        }
        mysqli_free_result($vAreas);
        ?>

 
        
    </div>

    <div class="footer">
        <div class="container">
            <p>© <?php echo date('Y'); ?> Sistema de Gestión de Abstracts Científicos</p>
        </div>
    </div>

 <script>
        // Solo inicializar datos - NO DUPLICAR FUNCIONES
        document.addEventListener('DOMContentLoaded', function() {
            console.log("DOM cargado - inicializando data...");
            
            // Pasamos los datos al script principal
            const activeEvaluatorsData = <?php echo json_encode($evaluadoresActivos); ?>;
            const evaluatorAssignments = <?php echo json_encode($evaluadorAsignaciones); ?>;
            
            // Solo ejecutar esta función si está disponible en el script externo
            if (typeof initializeEvaluators === 'function') {
                initializeEvaluators(activeEvaluatorsData, evaluatorAssignments);
            } else {
                console.error("La función initializeEvaluators no está disponible");
            }
        });
    </script>
</body>
</html>