<?php
include dirname(__FILE__) . '/../sesion.php';
include dirname(__FILE__) . '/../concha.php';

if (!isset($conn) || !($conn instanceof mysqli)) {
    die('Error: no se encontró la conexión mysqli en concha.php');
}

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

$conn->set_charset('utf8mb4');
date_default_timezone_set('America/Argentina/Buenos_Aires');

function h($txt)
{
    return htmlspecialchars((string)$txt, ENT_QUOTES, 'UTF-8');
}

function limpiar($txt)
{
    return trim((string)$txt);
}

function tablaExiste($conn, $tabla)
{
    $tabla = $conn->real_escape_string($tabla);
    $sql = "SHOW TABLES LIKE '{$tabla}'";
    $res = $conn->query($sql);
    return ($res && $res->num_rows > 0);
}

function setFlash($tipo, $mensaje)
{
    $_SESSION['flash_en_vivo'] = array(
        'tipo' => $tipo,
        'mensaje' => $mensaje
    );
}

function getFlash()
{
    if (isset($_SESSION['flash_en_vivo'])) {
        $flash = $_SESSION['flash_en_vivo'];
        unset($_SESSION['flash_en_vivo']);
        return $flash;
    }
    return null;
}

function guardarSyncPendiente($conn, $tablaOrigen, $registroId, $accion, $payload)
{
    if (!tablaExiste($conn, 'fut_sync_pendientes')) {
        return;
    }

    $sql = "INSERT INTO fut_sync_pendientes
            (tabla_origen, registro_id, accion, payload, estado, intentos, ultimo_error, creado_en, actualizado_en)
            VALUES (?, ?, ?, ?, 'pendiente', 0, NULL, NOW(), NOW())";

    $stmt = $conn->prepare($sql);
    if ($stmt) {
        $stmt->bind_param('siss', $tablaOrigen, $registroId, $accion, $payload);
        $stmt->execute();
        $stmt->close();
    }
}

function obtenerPartidos($conn, $limite = 100)
{
    $items = array();

    $limite = (int)$limite;
    if ($limite <= 0) {
        $limite = 100;
    }

    $sql = "SELECT
                p.id,
                p.fecha_partido,
                p.hora_partido,
                p.estado,
                p.marcador_local,
                p.marcador_visitante,
                el.nombre AS equipo_local_nombre,
                ev.nombre AS equipo_visitante_nombre
            FROM fut_partidos p
            INNER JOIN fut_equipos el ON el.id = p.equipo_local_id
            INNER JOIN fut_equipos ev ON ev.id = p.equipo_visitante_id
            ORDER BY p.fecha_hora_partido DESC, p.id DESC
            LIMIT {$limite}";
    $res = $conn->query($sql);

    if ($res) {
        while ($row = $res->fetch_assoc()) {
            $items[] = $row;
        }
    }

    return $items;
}

function obtenerPartidoPorId($conn, $partidoId)
{
    $partidoId = (int)$partidoId;

    $sql = "SELECT
                p.*,
                el.nombre AS equipo_local_nombre,
                el.nombre_corto AS equipo_local_corto,
                el.logo AS equipo_local_logo,
                ev.nombre AS equipo_visitante_nombre,
                ev.nombre_corto AS equipo_visitante_corto,
                ev.logo AS equipo_visitante_logo,
                es.nombre AS estadio_nombre,
                es.localidad AS estadio_localidad,
                es.provincia AS estadio_provincia
            FROM fut_partidos p
            INNER JOIN fut_equipos el ON el.id = p.equipo_local_id
            INNER JOIN fut_equipos ev ON ev.id = p.equipo_visitante_id
            INNER JOIN fut_estadios es ON es.id = p.estadio_id
            WHERE p.id = {$partidoId}
            LIMIT 1";

    $res = $conn->query($sql);
    if ($res && $res->num_rows > 0) {
        return $res->fetch_assoc();
    }

    return null;
}

function obtenerJugadoresPartidoPorEquipo($conn, $partidoId, $equipoId)
{
    $partidoId = (int)$partidoId;
    $equipoId = (int)$equipoId;
    $items = array();

    if (tablaExiste($conn, 'fut_partidos_alineaciones')) {
        $sqlAli = "SELECT
                        j.id,
                        j.nombre,
                        j.apellido,
                        j.apodo,
                        j.numero_camiseta,
                        j.posicion,
                        j.foto,
                        a.condicion,
                        a.orden_lista
                   FROM fut_partidos_alineaciones a
                   INNER JOIN fut_jugadores j ON j.id = a.jugador_id
                   WHERE a.partido_id = {$partidoId}
                     AND a.equipo_id = {$equipoId}
                   ORDER BY
                        CASE a.condicion WHEN 'titular' THEN 1 WHEN 'suplente' THEN 2 ELSE 3 END ASC,
                        a.orden_lista ASC,
                        j.apellido ASC,
                        j.nombre ASC";
        $resAli = $conn->query($sqlAli);

        if ($resAli && $resAli->num_rows > 0) {
            while ($row = $resAli->fetch_assoc()) {
                $items[] = $row;
            }
            return $items;
        }
    }

    $sql = "SELECT
                id,
                nombre,
                apellido,
                apodo,
                numero_camiseta,
                posicion,
                foto,
                '' AS condicion,
                0 AS orden_lista
            FROM fut_jugadores
            WHERE equipo_id = {$equipoId}
              AND activo = 1
            ORDER BY
                CASE
                    WHEN numero_camiseta REGEXP '^[0-9]+$' THEN CAST(numero_camiseta AS UNSIGNED)
                    ELSE 9999
                END ASC,
                apellido ASC,
                nombre ASC";
    $res = $conn->query($sql);

    if ($res) {
        while ($row = $res->fetch_assoc()) {
            $items[] = $row;
        }
    }

    return $items;
}

function obtenerEventosPartido($conn, $partidoId, $limite = 200)
{
    $partidoId = (int)$partidoId;
    $limite = (int)$limite;
    if ($limite <= 0) {
        $limite = 200;
    }

    $items = array();

    $sql = "SELECT
                e.*,
                el.nombre AS equipo_nombre,
                j.nombre AS jugador_nombre,
                j.apellido AS jugador_apellido,
                jr.nombre AS rel_nombre,
                jr.apellido AS rel_apellido
            FROM fut_partidos_eventos e
            LEFT JOIN fut_equipos el ON el.id = e.equipo_id
            LEFT JOIN fut_jugadores j ON j.id = e.jugador_id
            LEFT JOIN fut_jugadores jr ON jr.id = e.jugador_relacionado_id
            WHERE e.partido_id = {$partidoId}
            ORDER BY e.orden_evento DESC, e.id DESC
            LIMIT {$limite}";
    $res = $conn->query($sql);

    if ($res) {
        while ($row = $res->fetch_assoc()) {
            $items[] = $row;
        }
    }

    return $items;
}

function calcularMinutoActual($partido)
{
    $ahora = time();
    $estado = isset($partido['estado']) ? $partido['estado'] : 'programado';

    if ($estado === 'primer_tiempo' && !empty($partido['unix_inicio_1t'])) {
        $elapsed = max(0, $ahora - (int)$partido['unix_inicio_1t']);
        $min = floor($elapsed / 60) + 1;
        if ($min > 45) {
            $min = 45;
        }
        return (int)$min;
    }

    if ($estado === 'entretiempo') {
        return 45;
    }

    if ($estado === 'segundo_tiempo' && !empty($partido['unix_inicio_2t'])) {
        $elapsed = max(0, $ahora - (int)$partido['unix_inicio_2t']);
        $min = 45 + floor($elapsed / 60) + 1;
        if ($min > 90) {
            $min = 90;
        }
        return (int)$min;
    }

    if ($estado === 'finalizado') {
        if (!empty($partido['unix_inicio_2t'])) {
            return 90;
        }
        if (!empty($partido['unix_inicio_1t'])) {
            return 45;
        }
    }

    return 0;
}

function calcularEtiquetaTiempo($partido)
{
    $estado = isset($partido['estado']) ? $partido['estado'] : 'programado';
    $min = calcularMinutoActual($partido);

    if ($estado === 'programado') {
        return 'Programado';
    }
    if ($estado === 'primer_tiempo') {
        return '1T ' . $min . "'";
    }
    if ($estado === 'entretiempo') {
        return 'Entretiempo';
    }
    if ($estado === 'segundo_tiempo') {
        return '2T ' . $min . "'";
    }
    if ($estado === 'finalizado') {
        return 'Finalizado';
    }
    if ($estado === 'suspendido') {
        return 'Suspendido';
    }
    if ($estado === 'postergado') {
        return 'Postergado';
    }

    return ucfirst(str_replace('_', ' ', $estado));
}

function determinarTiempoJuegoDesdeEstado($estado)
{
    if ($estado === 'primer_tiempo') {
        return '1T';
    }
    if ($estado === 'segundo_tiempo') {
        return '2T';
    }
    return 'NA';
}

function obtenerUsuarioCarga()
{
    if (isset($_SESSION['usuario']) && $_SESSION['usuario'] !== '') {
        return (string)$_SESSION['usuario'];
    }
    if (isset($_SESSION['user']) && $_SESSION['user'] !== '') {
        return (string)$_SESSION['user'];
    }
    if (isset($_SESSION['nombre']) && $_SESSION['nombre'] !== '') {
        return (string)$_SESSION['nombre'];
    }
    return 'panel';
}

function equipoPerteneceAPartido($partido, $equipoId)
{
    $equipoId = (int)$equipoId;
    return ($equipoId > 0 && ($equipoId === (int)$partido['equipo_local_id'] || $equipoId === (int)$partido['equipo_visitante_id']));
}

if (!tablaExiste($conn, 'fut_partidos')) {
    die('La tabla fut_partidos no existe. Ejecutá primero crea_tablas_futbol.php');
}
if (!tablaExiste($conn, 'fut_partidos_eventos')) {
    die('La tabla fut_partidos_eventos no existe. Ejecutá primero crea_tablas_futbol.php');
}
if (!tablaExiste($conn, 'fut_jugadores')) {
    die('La tabla fut_jugadores no existe. Ejecutá primero crea_tablas_futbol.php');
}

$accion = isset($_REQUEST['accion']) ? limpiar($_REQUEST['accion']) : '';
$partidoId = isset($_REQUEST['partido_id']) ? (int)$_REQUEST['partido_id'] : 0;

if ($_SERVER['REQUEST_METHOD'] === 'POST' && $accion === 'control_tiempo') {
    $partidoId = isset($_POST['partido_id']) ? (int)$_POST['partido_id'] : 0;
    $control = isset($_POST['control']) ? limpiar($_POST['control']) : '';

    $partido = obtenerPartidoPorId($conn, $partidoId);
    if (!$partido) {
        setFlash('danger', 'El partido seleccionado no existe.');
        header('Location: en_vivo.php');
        exit;
    }

    $ahoraUnix = time();
    $estadoActual = $partido['estado'];
    $nuevoEstado = $estadoActual;
    $campoUpdate = '';
    $tipoEvento = '';
    $minutoEvento = null;
    $tiempoJuego = 'NA';
    $detalle = '';

    if ($control === 'start_1t') {
        if ($estadoActual !== 'programado') {
            setFlash('danger', 'Solo se puede iniciar el primer tiempo desde estado programado.');
            header('Location: en_vivo.php?partido_id=' . $partidoId);
            exit;
        }
        $nuevoEstado = 'primer_tiempo';
        $campoUpdate = "unix_inicio_1t = {$ahoraUnix}";
        $tipoEvento = 'inicio_1t';
        $minutoEvento = 1;
        $tiempoJuego = '1T';
    } elseif ($control === 'fin_1t') {
        if ($estadoActual !== 'primer_tiempo') {
            setFlash('danger', 'Solo se puede cerrar el primer tiempo si el partido está en primer tiempo.');
            header('Location: en_vivo.php?partido_id=' . $partidoId);
            exit;
        }
        $nuevoEstado = 'entretiempo';
        $campoUpdate = "unix_fin_1t = {$ahoraUnix}";
        $tipoEvento = 'fin_1t';
        $minutoEvento = 45;
        $tiempoJuego = '1T';
    } elseif ($control === 'start_2t') {
        if ($estadoActual !== 'entretiempo') {
            setFlash('danger', 'Solo se puede iniciar el segundo tiempo desde entretiempo.');
            header('Location: en_vivo.php?partido_id=' . $partidoId);
            exit;
        }
        $nuevoEstado = 'segundo_tiempo';
        $campoUpdate = "unix_inicio_2t = {$ahoraUnix}";
        $tipoEvento = 'inicio_2t';
        $minutoEvento = 46;
        $tiempoJuego = '2T';
    } elseif ($control === 'fin_partido') {
        if (!in_array($estadoActual, array('primer_tiempo', 'entretiempo', 'segundo_tiempo'))) {
            setFlash('danger', 'Solo se puede finalizar un partido que esté en juego o en entretiempo.');
            header('Location: en_vivo.php?partido_id=' . $partidoId);
            exit;
        }
        $nuevoEstado = 'finalizado';
        $campoUpdate = "unix_fin_partido = {$ahoraUnix}";
        $tipoEvento = 'fin_partido';
        $minutoEvento = calcularMinutoActual($partido);
        if ($minutoEvento <= 0) {
            $minutoEvento = ($estadoActual === 'primer_tiempo') ? 45 : 90;
        }
        $tiempoJuego = ($estadoActual === 'primer_tiempo') ? '1T' : '2T';
    } else {
        setFlash('danger', 'Acción de control no válida.');
        header('Location: en_vivo.php?partido_id=' . $partidoId);
        exit;
    }

    $conn->begin_transaction();

    try {
        $sqlUp = "UPDATE fut_partidos
                  SET estado = ?, {$campoUpdate}, actualizado_en = NOW()
                  WHERE id = ?";
        $stmtUp = $conn->prepare($sqlUp);
        if (!$stmtUp) {
            throw new Exception('Error al preparar el cambio de estado: ' . $conn->error);
        }
        $stmtUp->bind_param('si', $nuevoEstado, $partidoId);
        if (!$stmtUp->execute()) {
            throw new Exception('No se pudo actualizar el estado del partido: ' . $stmtUp->error);
        }
        $stmtUp->close();

        $usuarioCarga = obtenerUsuarioCarga();
        $ordenEvento = (int)round(microtime(true) * 1000);

        $sqlEv = "INSERT INTO fut_partidos_eventos
                  (partido_id, equipo_id, jugador_id, jugador_relacionado_id, tipo_evento, minuto, tiempo_juego, detalle, orden_evento, usuario_carga, creado_en)
                  VALUES (?, NULL, NULL, NULL, ?, ?, ?, ?, ?, ?, NOW())";
        $stmtEv = $conn->prepare($sqlEv);
        if (!$stmtEv) {
            throw new Exception('Error al preparar el evento de control: ' . $conn->error);
        }
        $stmtEv->bind_param(
            'isissis',
            $partidoId,
            $tipoEvento,
            $minutoEvento,
            $tiempoJuego,
            $detalle,
            $ordenEvento,
            $usuarioCarga
        );
        if (!$stmtEv->execute()) {
            throw new Exception('No se pudo guardar el evento de control: ' . $stmtEv->error);
        }
        $stmtEv->close();

        guardarSyncPendiente(
            $conn,
            'fut_partidos',
            $partidoId,
            'update',
            json_encode(array(
                'id' => $partidoId,
                'estado' => $nuevoEstado,
                'control' => $control,
                'unix' => $ahoraUnix
            ))
        );

        $conn->commit();
        setFlash('success', 'Control de partido ejecutado correctamente.');
        header('Location: en_vivo.php?partido_id=' . $partidoId);
        exit;

    } catch (Exception $e) {
        $conn->rollback();
        setFlash('danger', $e->getMessage());
        header('Location: en_vivo.php?partido_id=' . $partidoId);
        exit;
    }
}

if ($_SERVER['REQUEST_METHOD'] === 'POST' && $accion === 'guardar_evento') {
    $partidoId = isset($_POST['partido_id']) ? (int)$_POST['partido_id'] : 0;
    $tipoEvento = isset($_POST['tipo_evento']) ? limpiar($_POST['tipo_evento']) : '';
    $equipoId = isset($_POST['equipo_id']) ? (int)$_POST['equipo_id'] : 0;
    $jugadorId = isset($_POST['jugador_id']) ? (int)$_POST['jugador_id'] : 0;
    $jugadorRelacionadoId = isset($_POST['jugador_relacionado_id']) ? (int)$_POST['jugador_relacionado_id'] : 0;
    $minuto = isset($_POST['minuto']) ? (int)$_POST['minuto'] : 0;
    $detalle = isset($_POST['detalle']) ? limpiar($_POST['detalle']) : '';

    $partido = obtenerPartidoPorId($conn, $partidoId);
    if (!$partido) {
        setFlash('danger', 'El partido seleccionado no existe.');
        header('Location: en_vivo.php');
        exit;
    }

    $tiposValidos = array('gol', 'amarilla', 'roja', 'cambio', 'incidencia');
    if (!in_array($tipoEvento, $tiposValidos)) {
        setFlash('danger', 'El tipo de evento no es válido.');
        header('Location: en_vivo.php?partido_id=' . $partidoId);
        exit;
    }

    if ($tipoEvento !== 'incidencia') {
        if (!equipoPerteneceAPartido($partido, $equipoId)) {
            setFlash('danger', 'Tenés que seleccionar un equipo válido del partido.');
            header('Location: en_vivo.php?partido_id=' . $partidoId);
            exit;
        }
    } else {
        if (!equipoPerteneceAPartido($partido, $equipoId)) {
            $equipoId = 0;
        }
    }

    if ($tipoEvento === 'cambio' && ($jugadorId <= 0 || $jugadorRelacionadoId <= 0)) {
        setFlash('danger', 'Para un cambio tenés que seleccionar jugador que sale y jugador que entra.');
        header('Location: en_vivo.php?partido_id=' . $partidoId);
        exit;
    }

    if ($tipoEvento === 'gol' && $equipoId <= 0) {
        setFlash('danger', 'Para un gol tenés que indicar a qué equipo corresponde.');
        header('Location: en_vivo.php?partido_id=' . $partidoId);
        exit;
    }

    if ($minuto <= 0) {
        $minuto = calcularMinutoActual($partido);
        if ($minuto <= 0) {
            $minuto = ($partido['estado'] === 'programado') ? 1 : 90;
        }
    }

    if ($minuto > 130) {
        $minuto = 130;
    }

    $tiempoJuego = determinarTiempoJuegoDesdeEstado($partido['estado']);
    $usuarioCarga = obtenerUsuarioCarga();
    $ordenEvento = (int)round(microtime(true) * 1000);

    $conn->begin_transaction();

    try {
        $sqlEv = "INSERT INTO fut_partidos_eventos
                  (partido_id, equipo_id, jugador_id, jugador_relacionado_id, tipo_evento, minuto, tiempo_juego, detalle, orden_evento, usuario_carga, creado_en)
                  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())";
        $stmtEv = $conn->prepare($sqlEv);
        if (!$stmtEv) {
            throw new Exception('Error al preparar el evento: ' . $conn->error);
        }

        $stmtEv->bind_param(
            'iiiisissis',
            $partidoId,
            $equipoId,
            $jugadorId,
            $jugadorRelacionadoId,
            $tipoEvento,
            $minuto,
            $tiempoJuego,
            $detalle,
            $ordenEvento,
            $usuarioCarga
        );

        if (!$stmtEv->execute()) {
            throw new Exception('No se pudo guardar el evento: ' . $stmtEv->error);
        }

        $eventoId = (int)$stmtEv->insert_id;
        $stmtEv->close();

        if ($tipoEvento === 'gol') {
            if ($equipoId === (int)$partido['equipo_local_id']) {
                $sqlMarc = "UPDATE fut_partidos SET marcador_local = marcador_local + 1, actualizado_en = NOW() WHERE id = {$partidoId} LIMIT 1";
            } else {
                $sqlMarc = "UPDATE fut_partidos SET marcador_visitante = marcador_visitante + 1, actualizado_en = NOW() WHERE id = {$partidoId} LIMIT 1";
            }

            if (!$conn->query($sqlMarc)) {
                throw new Exception('Se guardó el gol pero no se pudo actualizar el marcador.');
            }
        }

        guardarSyncPendiente(
            $conn,
            'fut_partidos_eventos',
            $eventoId,
            'insert',
            json_encode(array(
                'id' => $eventoId,
                'partido_id' => $partidoId,
                'tipo_evento' => $tipoEvento,
                'equipo_id' => $equipoId,
                'jugador_id' => $jugadorId,
                'jugador_relacionado_id' => $jugadorRelacionadoId,
                'minuto' => $minuto,
                'tiempo_juego' => $tiempoJuego,
                'detalle' => $detalle
            ))
        );

        $conn->commit();
        setFlash('success', 'Evento cargado correctamente.');
        header('Location: en_vivo.php?partido_id=' . $partidoId);
        exit;

    } catch (Exception $e) {
        $conn->rollback();
        setFlash('danger', $e->getMessage());
        header('Location: en_vivo.php?partido_id=' . $partidoId);
        exit;
    }
}

if ($accion === 'eliminar_evento' && isset($_GET['evento_id']) && isset($_GET['partido_id'])) {
    $partidoId = (int)$_GET['partido_id'];
    $eventoId = (int)$_GET['evento_id'];

    $partido = obtenerPartidoPorId($conn, $partidoId);
    if (!$partido) {
        setFlash('danger', 'El partido no existe.');
        header('Location: en_vivo.php');
        exit;
    }

    $sqlEv = "SELECT * FROM fut_partidos_eventos WHERE id = {$eventoId} AND partido_id = {$partidoId} LIMIT 1";
    $resEv = $conn->query($sqlEv);
    if (!$resEv || $resEv->num_rows === 0) {
        setFlash('danger', 'El evento no existe.');
        header('Location: en_vivo.php?partido_id=' . $partidoId);
        exit;
    }

    $evento = $resEv->fetch_assoc();

    if (in_array($evento['tipo_evento'], array('inicio_1t', 'fin_1t', 'inicio_2t', 'fin_partido'))) {
        setFlash('danger', 'Los eventos de control de tiempo no se eliminan desde esta pantalla.');
        header('Location: en_vivo.php?partido_id=' . $partidoId);
        exit;
    }

    $conn->begin_transaction();

    try {
        if ($evento['tipo_evento'] === 'gol') {
            $equipoEvento = (int)$evento['equipo_id'];

            if ($equipoEvento === (int)$partido['equipo_local_id']) {
                $sqlMarc = "UPDATE fut_partidos
                            SET marcador_local = IF(marcador_local > 0, marcador_local - 1, 0),
                                actualizado_en = NOW()
                            WHERE id = {$partidoId}
                            LIMIT 1";
            } else {
                $sqlMarc = "UPDATE fut_partidos
                            SET marcador_visitante = IF(marcador_visitante > 0, marcador_visitante - 1, 0),
                                actualizado_en = NOW()
                            WHERE id = {$partidoId}
                            LIMIT 1";
            }

            if (!$conn->query($sqlMarc)) {
                throw new Exception('No se pudo corregir el marcador al eliminar el gol.');
            }
        }

        $sqlDel = "DELETE FROM fut_partidos_eventos WHERE id = {$eventoId} LIMIT 1";
        if (!$conn->query($sqlDel)) {
            throw new Exception('No se pudo eliminar el evento.');
        }

        guardarSyncPendiente(
            $conn,
            'fut_partidos_eventos',
            $eventoId,
            'delete',
            json_encode(array(
                'id' => $eventoId,
                'partido_id' => $partidoId,
                'tipo_evento' => $evento['tipo_evento']
            ))
        );

        $conn->commit();
        setFlash('success', 'Evento eliminado correctamente.');
        header('Location: en_vivo.php?partido_id=' . $partidoId);
        exit;

    } catch (Exception $e) {
        $conn->rollback();
        setFlash('danger', $e->getMessage());
        header('Location: en_vivo.php?partido_id=' . $partidoId);
        exit;
    }
}

$flash = getFlash();
$partidos = obtenerPartidos($conn, 120);
$partido = null;
$eventos = array();
$jugadoresLocal = array();
$jugadoresVisitante = array();
$jugadoresMap = array();
$minutoActual = 0;
$etiquetaTiempo = 'Programado';

if ($partidoId > 0) {
    $partido = obtenerPartidoPorId($conn, $partidoId);

    if ($partido) {
        $eventos = obtenerEventosPartido($conn, $partidoId, 300);
        $jugadoresLocal = obtenerJugadoresPartidoPorEquipo($conn, $partidoId, (int)$partido['equipo_local_id']);
        $jugadoresVisitante = obtenerJugadoresPartidoPorEquipo($conn, $partidoId, (int)$partido['equipo_visitante_id']);

        foreach ($jugadoresLocal as $j) {
            $jugadoresMap[(int)$j['id']] = $j;
        }
        foreach ($jugadoresVisitante as $j) {
            $jugadoresMap[(int)$j['id']] = $j;
        }

        $minutoActual = calcularMinutoActual($partido);
        $etiquetaTiempo = calcularEtiquetaTiempo($partido);
    }
}

$estadoCss = 'estado-programado';
if ($partido) {
    $estadoCss = 'estado-' . $partido['estado'];
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf-8">
    <meta name="description" content="Panel en vivo">
    <meta name="author" content="<?php echo isset($nombresitio) ? h($nombresitio) : 'Panel'; ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <title><?php echo isset($nombresitio) ? h($nombresitio) . ' - En vivo' : 'Panel - En vivo'; ?></title>

    <link href="https://fonts.googleapis.com/css?family=Oswald:400,500,700|Roboto:300,400,500,700" rel="stylesheet">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">

    <style type="text/css">
        *{
            border-radius:0 !important;
            box-sizing:border-box;
        }
        body{
            margin:0;
            padding:0;
            background:#f4f6f9;
            font-family:'Roboto', sans-serif;
            color:#222;
        }
        a{
            transition:all .2s ease;
        }
        .top-wrap{
            background:#ffffff;
            border-bottom:1px solid #e5e5e5;
        }
        .topbar{
            display:flex;
            flex-wrap:wrap;
            align-items:center;
            justify-content:space-between;
            padding:12px 0;
        }
        .topbar-left{
            font-family:'Oswald', sans-serif;
            font-size:24px;
            font-weight:700;
            color:#0066FF;
            text-transform:uppercase;
        }
        .topbar-right a{
            display:inline-block;
            margin-left:8px;
            text-decoration:none;
            background:#0066FF;
            color:#fff;
            padding:10px 14px;
            font-size:13px;
            font-weight:700;
            border:1px solid #0066FF;
            text-transform:uppercase;
        }
        .topbar-right a:hover{
            background:#004fc7;
            border-color:#004fc7;
            color:#fff;
            text-decoration:none;
        }
        .panel-wrapper{
            padding:30px 0;
        }
        .panel-header{
            background:#0066FF;
            color:#fff;
            padding:25px 20px;
            text-align:center;
            margin-bottom:25px;
        }
        .panel-header h1{
            margin:0;
            font-family:'Oswald', sans-serif;
            font-size:32px;
            font-weight:700;
            text-transform:uppercase;
        }
        .panel-header p{
            margin:10px 0 0 0;
            font-size:15px;
            opacity:.95;
        }
        .box{
            background:#fff;
            border:1px solid #e3e6ea;
            padding:25px;
            margin-bottom:20px;
        }
        .box-title{
            margin:0 0 18px 0;
            font-size:24px;
            font-weight:700;
            color:#0066FF;
            font-family:'Oswald', sans-serif;
            text-transform:uppercase;
        }
        .quick-link{
            display:block;
            width:100%;
            text-align:center;
            background:#0066FF;
            color:#fff;
            text-decoration:none;
            padding:14px 10px;
            font-weight:700;
            border:1px solid #0066FF;
            text-transform:uppercase;
        }
        .quick-link:hover{
            background:#004fc7;
            border-color:#004fc7;
            color:#fff;
            text-decoration:none;
        }
        .scoreboard{
            background:#fff;
            border:1px solid #e3e6ea;
            padding:25px;
            margin-bottom:20px;
        }
        .score-flex{
            display:flex;
            flex-wrap:wrap;
            align-items:center;
            justify-content:space-between;
        }
        .team-box{
            width:36%;
            text-align:center;
        }
        .team-box img{
            width:90px;
            height:90px;
            object-fit:contain;
            display:block;
            margin:0 auto 10px auto;
            background:#fff;
            border:1px solid #ddd;
            padding:8px;
        }
        .team-box .logo-placeholder{
            width:90px;
            height:90px;
            margin:0 auto 10px auto;
            display:flex;
            align-items:center;
            justify-content:center;
            border:1px solid #ddd;
            background:#fafafa;
            color:#999;
            font-size:11px;
            text-align:center;
            padding:6px;
        }
        .team-name{
            font-family:'Oswald', sans-serif;
            font-size:28px;
            font-weight:700;
            color:#222;
            line-height:1.15;
        }
        .score-center{
            width:28%;
            text-align:center;
        }
        .score-number{
            font-family:'Oswald', sans-serif;
            font-size:78px;
            line-height:1;
            color:#0066FF;
            font-weight:700;
            margin-bottom:10px;
        }
        .estado{
            display:inline-block;
            padding:7px 12px;
            font-size:12px;
            font-weight:700;
            text-transform:uppercase;
            color:#fff;
            margin-bottom:8px;
        }
        .estado-programado{ background:#6c757d; }
        .estado-primer_tiempo{ background:#28a745; }
        .estado-entretiempo{ background:#fd7e14; }
        .estado-segundo_tiempo{ background:#20c997; }
        .estado-finalizado{ background:#343a40; }
        .estado-suspendido{ background:#dc3545; }
        .estado-postergado{ background:#6f42c1; }

        .clock-box{
            font-family:'Oswald', sans-serif;
            font-size:32px;
            font-weight:700;
            color:#111;
        }
        .clock-sub{
            font-size:14px;
            color:#666;
        }
        .table{
            margin-bottom:0;
        }
        .table thead th{
            background:#f7f9fc;
            border-top:none;
            border-bottom:1px solid #e3e6ea;
            color:#444;
            font-size:13px;
            text-transform:uppercase;
            vertical-align:middle;
        }
        .table td{
            vertical-align:middle;
        }
        .mini-player{
            display:flex;
            align-items:center;
        }
        .mini-player img{
            width:44px;
            height:58px;
            object-fit:cover;
            margin-right:10px;
            border:1px solid #ddd;
            background:#fafafa;
        }
        .mini-player .no-foto{
            width:44px;
            height:58px;
            margin-right:10px;
            display:flex;
            align-items:center;
            justify-content:center;
            border:1px solid #ddd;
            background:#f7f7f7;
            color:#999;
            font-size:9px;
            text-align:center;
            padding:3px;
        }
        .form-control, .btn{
            border-radius:0 !important;
        }
        .btn-primary{
            background:#0066FF;
            border-color:#0066FF;
        }
        .btn-primary:hover{
            background:#004fc7;
            border-color:#004fc7;
        }
        .btn-outline-primary{
            color:#0066FF;
            border-color:#0066FF;
        }
        .btn-outline-primary:hover{
            background:#0066FF;
            border-color:#0066FF;
        }
        .control-grid .btn,
        .control-grid form{
            margin-bottom:10px;
        }
        .info-line{
            font-size:14px;
            line-height:1.7;
            color:#444;
        }
        @media (max-width: 767px){
            .topbar{
                display:block;
            }
            .topbar-left{
                margin-bottom:12px;
                font-size:20px;
            }
            .topbar-right a{
                display:block;
                margin:0 0 8px 0;
                text-align:center;
            }
            .panel-header h1{
                font-size:24px;
            }
            .box,
            .scoreboard{
                padding:20px;
            }
            .score-flex{
                display:block;
            }
            .team-box,
            .score-center{
                width:100%;
                margin-bottom:18px;
            }
            .score-number{
                font-size:60px;
            }
            .team-name{
                font-size:22px;
            }
            .clock-box{
                font-size:28px;
            }
        }
    </style>
</head>
<body>

    <div class="top-wrap">
        <div class="container">
            <div class="topbar">
                <div class="topbar-left">
                    <?php echo isset($nombresitio) && $nombresitio !== '' ? h($nombresitio) : 'Panel'; ?>
                </div>
                <div class="topbar-right">
                    <a href="dashboard_futbol.php">Dashboard</a>
                    <a href="../partidos.php" target="_blank">Ver sitio</a>
                    <a href="../logout.php">Salir</a>
                </div>
            </div>
        </div>
    </div>

    <div class="container panel-wrapper">

        <div class="panel-header">
            <h1>En vivo</h1>
            <p>Control de tiempos, carga rápida de eventos y administración del marcador en tiempo real.</p>
        </div>

        <?php if ($flash) { ?>
            <div class="alert alert-<?php echo h($flash['tipo']); ?>">
                <?php echo h($flash['mensaje']); ?>
            </div>
        <?php } ?>

        <div class="row mt-2">
            <div class="col-md-4 mb-3">
                <a href="dashboard_futbol.php" class="quick-link">Volver al dashboard</a>
            </div>
            <div class="col-md-4 mb-3">
                <a href="partidos_admin.php" class="quick-link">Ir a partidos</a>
            </div>
            <div class="col-md-4 mb-3">
                <?php if ($partidoId > 0) { ?>
                    <a href="../partido.php?id=<?php echo (int)$partidoId; ?>" target="_blank" class="quick-link">Ver partido público</a>
                <?php } else { ?>
                    <a href="../partidos.php" target="_blank" class="quick-link">Ver partidos públicos</a>
                <?php } ?>
            </div>
        </div>

        <div class="box">
            <h3 class="box-title">Seleccionar partido</h3>

            <form method="get" action="en_vivo.php">
                <div class="row">
                    <div class="col-md-10 mb-2">
                        <select name="partido_id" class="form-control" required>
                            <option value="">Seleccionar partido</option>
                            <?php foreach ($partidos as $p) {
                                $sel = ($partidoId === (int)$p['id']) ? 'selected' : '';
                            ?>
                                <option value="<?php echo (int)$p['id']; ?>" <?php echo $sel; ?>>
                                    <?php echo h(date('d/m/Y', strtotime($p['fecha_partido']))); ?>
                                    -
                                    <?php echo h(substr($p['hora_partido'], 0, 5)); ?> hs
                                    -
                                    <?php echo h($p['equipo_local_nombre']); ?>
                                    vs
                                    <?php echo h($p['equipo_visitante_nombre']); ?>
                                </option>
                            <?php } ?>
                        </select>
                    </div>
                    <div class="col-md-2 mb-2">
                        <button type="submit" class="btn btn-outline-primary btn-block">Cargar</button>
                    </div>
                </div>
            </form>
        </div>

        <?php if ($partido) { ?>
            <div class="scoreboard">
                <div class="score-flex">
                    <div class="team-box">
                        <?php if ($partido['equipo_local_logo'] != '') { ?>
                            <img src="../<?php echo h($partido['equipo_local_logo']); ?>" alt="">
                        <?php } else { ?>
                            <div class="logo-placeholder">SIN LOGO</div>
                        <?php } ?>
                        <div class="team-name"><?php echo h($partido['equipo_local_nombre']); ?></div>
                    </div>

                    <div class="score-center">
                        <div class="score-number">
                            <span id="marcador_local"><?php echo (int)$partido['marcador_local']; ?></span>
                            -
                            <span id="marcador_visitante"><?php echo (int)$partido['marcador_visitante']; ?></span>
                        </div>

                        <div class="estado <?php echo h($estadoCss); ?>" id="estado_partido">
                            <?php echo h(str_replace('_', ' ', $partido['estado'])); ?>
                        </div>

                        <div class="clock-box" id="clock_label"><?php echo h($etiquetaTiempo); ?></div>
                        <div class="clock-sub">
                            <?php echo h(date('d/m/Y', strtotime($partido['fecha_partido']))); ?> -
                            <?php echo h(substr($partido['hora_partido'], 0, 5)); ?> hs
                        </div>
                    </div>

                    <div class="team-box">
                        <?php if ($partido['equipo_visitante_logo'] != '') { ?>
                            <img src="../<?php echo h($partido['equipo_visitante_logo']); ?>" alt="">
                        <?php } else { ?>
                            <div class="logo-placeholder">SIN LOGO</div>
                        <?php } ?>
                        <div class="team-name"><?php echo h($partido['equipo_visitante_nombre']); ?></div>
                    </div>
                </div>
            </div>

            <div class="box">
                <h3 class="box-title">Resumen del partido</h3>
                <div class="row">
                    <div class="col-md-6">
                        <div class="info-line">
                            <strong>Competencia:</strong> <?php echo h($partido['competencia']); ?><br>
                            <strong>Temporada:</strong> <?php echo h($partido['temporada']); ?><br>
                            <strong>Jornada:</strong> <?php echo h($partido['jornada']); ?><br>
                            <strong>Instancia:</strong> <?php echo h($partido['instancia']); ?><br>
                        </div>
                    </div>
                    <div class="col-md-6">
                        <div class="info-line">
                            <strong>Estadio:</strong> <?php echo h($partido['estadio_nombre']); ?><br>
                            <strong>Ubicación:</strong> <?php echo h($partido['estadio_localidad']); ?> / <?php echo h($partido['estadio_provincia']); ?><br>
                            <strong>Minuto actual:</strong> <?php echo (int)$minutoActual; ?><br>
                            <strong>Estado:</strong> <?php echo h(str_replace('_', ' ', $partido['estado'])); ?>
                        </div>
                    </div>
                </div>
            </div>

            <div class="box">
                <h3 class="box-title">Controles del partido</h3>

                <div class="row control-grid">
                    <div class="col-md-3">
                        <form method="post" action="en_vivo.php">
                            <input type="hidden" name="accion" value="control_tiempo">
                            <input type="hidden" name="partido_id" value="<?php echo (int)$partido['id']; ?>">
                            <input type="hidden" name="control" value="start_1t">
                            <button type="submit" class="btn btn-success btn-block">Iniciar 1T</button>
                        </form>
                    </div>
                    <div class="col-md-3">
                        <form method="post" action="en_vivo.php">
                            <input type="hidden" name="accion" value="control_tiempo">
                            <input type="hidden" name="partido_id" value="<?php echo (int)$partido['id']; ?>">
                            <input type="hidden" name="control" value="fin_1t">
                            <button type="submit" class="btn btn-warning btn-block">Cerrar 1T</button>
                        </form>
                    </div>
                    <div class="col-md-3">
                        <form method="post" action="en_vivo.php">
                            <input type="hidden" name="accion" value="control_tiempo">
                            <input type="hidden" name="partido_id" value="<?php echo (int)$partido['id']; ?>">
                            <input type="hidden" name="control" value="start_2t">
                            <button type="submit" class="btn btn-info btn-block">Iniciar 2T</button>
                        </form>
                    </div>
                    <div class="col-md-3">
                        <form method="post" action="en_vivo.php">
                            <input type="hidden" name="accion" value="control_tiempo">
                            <input type="hidden" name="partido_id" value="<?php echo (int)$partido['id']; ?>">
                            <input type="hidden" name="control" value="fin_partido">
                            <button type="submit" class="btn btn-dark btn-block">Finalizar partido</button>
                        </form>
                    </div>
                </div>
            </div>

            <div class="box">
                <h3 class="box-title">Cargar evento</h3>

                <form method="post" action="en_vivo.php">
                    <input type="hidden" name="accion" value="guardar_evento">
                    <input type="hidden" name="partido_id" value="<?php echo (int)$partido['id']; ?>">

                    <div class="row">
                        <div class="col-md-3 mb-3">
                            <label><strong>Tipo de evento</strong></label>
                            <select name="tipo_evento" id="tipo_evento" class="form-control">
                                <option value="gol">Gol</option>
                                <option value="amarilla">Amarilla</option>
                                <option value="roja">Roja</option>
                                <option value="cambio">Cambio</option>
                                <option value="incidencia">Incidencia</option>
                            </select>
                        </div>

                        <div class="col-md-3 mb-3">
                            <label><strong>Equipo</strong></label>
                            <select name="equipo_id" id="equipo_id" class="form-control">
                                <option value="0">Seleccionar</option>
                                <option value="<?php echo (int)$partido['equipo_local_id']; ?>"><?php echo h($partido['equipo_local_nombre']); ?></option>
                                <option value="<?php echo (int)$partido['equipo_visitante_id']; ?>"><?php echo h($partido['equipo_visitante_nombre']); ?></option>
                            </select>
                        </div>

                        <div class="col-md-3 mb-3">
                            <label><strong>Jugador</strong></label>
                            <select name="jugador_id" id="jugador_id" class="form-control">
                                <option value="0">Seleccionar</option>
                                <optgroup label="<?php echo h($partido['equipo_local_nombre']); ?>">
                                    <?php foreach ($jugadoresLocal as $j) { ?>
                                        <option value="<?php echo (int)$j['id']; ?>">
                                            <?php echo h(($j['numero_camiseta'] != '' ? '#' . $j['numero_camiseta'] . ' ' : '') . $j['nombre'] . ' ' . $j['apellido']); ?>
                                        </option>
                                    <?php } ?>
                                </optgroup>
                                <optgroup label="<?php echo h($partido['equipo_visitante_nombre']); ?>">
                                    <?php foreach ($jugadoresVisitante as $j) { ?>
                                        <option value="<?php echo (int)$j['id']; ?>">
                                            <?php echo h(($j['numero_camiseta'] != '' ? '#' . $j['numero_camiseta'] . ' ' : '') . $j['nombre'] . ' ' . $j['apellido']); ?>
                                        </option>
                                    <?php } ?>
                                </optgroup>
                            </select>
                        </div>

                        <div class="col-md-3 mb-3" id="wrap_jugador_rel">
                            <label><strong>Jugador relacionado</strong></label>
                            <select name="jugador_relacionado_id" id="jugador_relacionado_id" class="form-control">
                                <option value="0">Seleccionar</option>
                                <optgroup label="<?php echo h($partido['equipo_local_nombre']); ?>">
                                    <?php foreach ($jugadoresLocal as $j) { ?>
                                        <option value="<?php echo (int)$j['id']; ?>">
                                            <?php echo h(($j['numero_camiseta'] != '' ? '#' . $j['numero_camiseta'] . ' ' : '') . $j['nombre'] . ' ' . $j['apellido']); ?>
                                        </option>
                                    <?php } ?>
                                </optgroup>
                                <optgroup label="<?php echo h($partido['equipo_visitante_nombre']); ?>">
                                    <?php foreach ($jugadoresVisitante as $j) { ?>
                                        <option value="<?php echo (int)$j['id']; ?>">
                                            <?php echo h(($j['numero_camiseta'] != '' ? '#' . $j['numero_camiseta'] . ' ' : '') . $j['nombre'] . ' ' . $j['apellido']); ?>
                                        </option>
                                    <?php } ?>
                                </optgroup>
                            </select>
                            <div class="help-text">En un cambio: jugador que entra o se relaciona con el evento.</div>
                        </div>

                        <div class="col-md-2 mb-3">
                            <label><strong>Minuto</strong></label>
                            <input type="number" min="1" max="130" name="minuto" id="minuto" class="form-control" value="<?php echo (int)$minutoActual; ?>">
                            <div class="help-text">Si lo dejás vacío o 0, toma el actual.</div>
                        </div>

                        <div class="col-md-10 mb-3">
                            <label><strong>Detalle</strong></label>
                            <input type="text" name="detalle" id="detalle" class="form-control" placeholder="Ej: de cabeza, penal, falta táctica, incidencia general">
                        </div>

                        <div class="col-md-12">
                            <button type="submit" class="btn btn-primary">Guardar evento</button>
                        </div>
                    </div>
                </form>
            </div>

            <div class="box">
                <h3 class="box-title">Eventos cargados</h3>

                <?php if (count($eventos) > 0) { ?>
                    <div class="table-responsive">
                        <table class="table table-bordered table-hover">
                            <thead>
                                <tr>
                                    <th>Hora</th>
                                    <th>Min</th>
                                    <th>Tipo</th>
                                    <th>Equipo</th>
                                    <th>Jugador</th>
                                    <th>Detalle</th>
                                    <th>Acción</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($eventos as $ev) {
                                    $nombreJugador = trim($ev['jugador_nombre'] . ' ' . $ev['jugador_apellido']);
                                    $nombreRel = trim($ev['rel_nombre'] . ' ' . $ev['rel_apellido']);
                                    $detalleFinal = $ev['detalle'];

                                    if ($ev['tipo_evento'] === 'cambio') {
                                        $detalleCambio = '';
                                        if ($nombreJugador !== '') {
                                            $detalleCambio .= 'Sale: ' . $nombreJugador;
                                        }
                                        if ($nombreRel !== '') {
                                            $detalleCambio .= ($detalleCambio !== '' ? ' / ' : '') . 'Entra: ' . $nombreRel;
                                        }
                                        if ($ev['detalle'] !== '') {
                                            $detalleCambio .= ($detalleCambio !== '' ? ' - ' : '') . $ev['detalle'];
                                        }
                                        $detalleFinal = $detalleCambio;
                                    }
                                ?>
                                    <tr>
                                        <td><?php echo h(date('H:i:s', strtotime($ev['creado_en']))); ?></td>
                                        <td><?php echo (int)$ev['minuto']; ?><?php echo $ev['tiempo_juego'] !== 'NA' ? ' (' . h($ev['tiempo_juego']) . ')' : ''; ?></td>
                                        <td><?php echo h(str_replace('_', ' ', $ev['tipo_evento'])); ?></td>
                                        <td><?php echo h($ev['equipo_nombre']); ?></td>
                                        <td>
                                            <?php
                                            if ($nombreJugador !== '') {
                                                echo h($nombreJugador);
                                            } elseif ($ev['tipo_evento'] === 'incidencia' || strpos($ev['tipo_evento'], 'inicio_') === 0 || strpos($ev['tipo_evento'], 'fin_') === 0) {
                                                echo '-';
                                            } else {
                                                echo '-';
                                            }
                                            ?>
                                        </td>
                                        <td><?php echo h($detalleFinal); ?></td>
                                        <td>
                                            <?php if (!in_array($ev['tipo_evento'], array('inicio_1t', 'fin_1t', 'inicio_2t', 'fin_partido'))) { ?>
                                                <a href="en_vivo.php?partido_id=<?php echo (int)$partido['id']; ?>&accion=eliminar_evento&evento_id=<?php echo (int)$ev['id']; ?>" class="btn btn-sm btn-danger" onclick="return confirm('¿Querés eliminar este evento?');">Eliminar</a>
                                            <?php } else { ?>
                                                <span class="btn btn-sm btn-secondary disabled">Bloqueado</span>
                                            <?php } ?>
                                        </td>
                                    </tr>
                                <?php } ?>
                            </tbody>
                        </table>
                    </div>
                <?php } else { ?>
                    <div style="color:#666;">Todavía no hay eventos cargados para este partido.</div>
                <?php } ?>
            </div>

        <?php } else { ?>
            <div class="box">
                <h3 class="box-title">Panel en vivo</h3>
                <div style="color:#666;">
                    Seleccioná un partido para iniciar tiempos, cargar eventos y administrar el vivo.
                </div>
            </div>
        <?php } ?>

    </div>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script>
    (function(){
        var tipoEvento = document.getElementById('tipo_evento');
        var wrapJugadorRel = document.getElementById('wrap_jugador_rel');

        function refrescarFormularioEvento() {
            if (!tipoEvento || !wrapJugadorRel) return;
            if (tipoEvento.value === 'cambio') {
                wrapJugadorRel.style.display = '';
            } else {
                wrapJugadorRel.style.display = 'none';
            }
        }

        if (tipoEvento) {
            tipoEvento.addEventListener('change', refrescarFormularioEvento);
            refrescarFormularioEvento();
        }

        <?php if ($partido) { ?>
        var estado = <?php echo json_encode($partido['estado']); ?>;
        var unixInicio1T = <?php echo (int)$partido['unix_inicio_1t']; ?>;
        var unixInicio2T = <?php echo (int)$partido['unix_inicio_2t']; ?>;
        var clockLabel = document.getElementById('clock_label');
        var minutoInput = document.getElementById('minuto');

        function calcularMinutoCliente() {
            var now = Math.floor(Date.now() / 1000);

            if (estado === 'primer_tiempo' && unixInicio1T > 0) {
                var elapsed1 = Math.floor((now - unixInicio1T) / 60) + 1;
                if (elapsed1 < 1) elapsed1 = 1;
                if (elapsed1 > 45) elapsed1 = 45;
                return { etiqueta: '1T ' + elapsed1 + "'", minuto: elapsed1 };
            }

            if (estado === 'entretiempo') {
                return { etiqueta: 'Entretiempo', minuto: 45 };
            }

            if (estado === 'segundo_tiempo' && unixInicio2T > 0) {
                var elapsed2 = 45 + Math.floor((now - unixInicio2T) / 60) + 1;
                if (elapsed2 < 46) elapsed2 = 46;
                if (elapsed2 > 90) elapsed2 = 90;
                return { etiqueta: '2T ' + elapsed2 + "'", minuto: elapsed2 };
            }

            if (estado === 'finalizado') {
                return { etiqueta: 'Finalizado', minuto: 90 };
            }

            if (estado === 'suspendido') {
                return { etiqueta: 'Suspendido', minuto: 0 };
            }

            if (estado === 'postergado') {
                return { etiqueta: 'Postergado', minuto: 0 };
            }

            return { etiqueta: 'Programado', minuto: 0 };
        }

        function refrescarClock() {
            var data = calcularMinutoCliente();
            if (clockLabel) {
                clockLabel.innerHTML = data.etiqueta;
            }
            if (minutoInput && (!minutoInput.value || minutoInput.value === "0")) {
                minutoInput.value = data.minuto;
            }
        }

        refrescarClock();
        setInterval(refrescarClock, 1000);
        <?php } ?>
    })();
    </script>
</body>
</html>