<?php
$authApp = 'agenda';
session_start();
require __DIR__ . '/../../config/auth.php';
require __DIR__ . '/../../../../../config/db2.php';
require __DIR__ . '/../../lib/helpers.php';

if (!perm('agenda', 'editar')) { http_response_code(403); exit('Sin permiso'); }

$id = (int)($_GET['id'] ?? $_POST['id'] ?? 0);
if (!$id) { header('Location: listarAgenda.php'); exit; }

$stmt = $pdo->prepare("
    SELECT ag.*,
           aa.cuij_principal, aa.otros_cuijs, aa.imputados,
           aa.estado_imputado, aa.vencimiento_pp_actual,
           aa.testigos_aa, aa.testigos_fiscalia, aa.testigos_querella, aa.testigos_defensa,
           aa.jornadas_en_aa, aa.jornadas_agregadas_juez,
           aa.tipo_tribunal, aa.prioridad, aa.id AS aa_id, aa.juez_aa_id,
           aa.duplicidad_plazos
    FROM agj_agendamientos ag
    JOIN agj_autos_apertura aa ON ag.aa_id = aa.id
    WHERE ag.id = ? AND ag.deleted_at IS NULL
");
$stmt->execute([$id]);
$ag = $stmt->fetch();
if (!$ag) { header('Location: listarAgenda.php?msg=No+encontrado'); exit; }

// Jueces IPP + juez del AA → inhabilitados
$stmt_jipp = $pdo->prepare("SELECT juez_id FROM agj_aa_jueces_ipp WHERE aa_id = ?");
$stmt_jipp->execute([$ag['aa_id']]);
$jipp_ids = array_column($stmt_jipp->fetchAll(), 'juez_id');
if ($ag['juez_aa_id']) $jipp_ids[] = $ag['juez_aa_id'];
$jipp_ids = array_unique(array_filter($jipp_ids));

// Litigantes del AA para control de superposición
$stmt_lits = $pdo->prepare("SELECT litigante_id FROM agj_aa_litigantes WHERE aa_id=?");
$stmt_lits->execute([$ag['aa_id']]);
$litigante_ids = array_column($stmt_lits->fetchAll(), 'litigante_id');

$errores    = [];
$conflictos = [];
$fechas_calc = null;

// Agentes Apoyo UAJ (dependencia 9)
$agentes_uaj = $pdo->query("
    SELECT a.id, p.apellido, p.nombre
    FROM ogj_agentes a
    JOIN ogj_personas p ON a.persona = p.id
    JOIN ogj_agente_unidad au ON a.id = au.agente
    WHERE au.dependencia = 9
      AND a.estado = 'Activo'
      AND (au.hasta IS NULL OR au.hasta >= CURDATE())
    ORDER BY p.apellido, p.nombre
")->fetchAll();

// Jueces: Rosario primero, luego Interdistrital
$jueces_list = $pdo->query(
    "SELECT j.juez_id, j.nombre, j.colegio,
         (SELECT cj.competencia FROM mrbs_competencia_jueces cj
          WHERE cj.juez_id = j.juez_id AND CURDATE() BETWEEN cj.desde AND cj.hasta
          ORDER BY cj.desde DESC LIMIT 1) AS comp_label
     FROM mrbs_juez j
     WHERE j.instancia=1 AND j.activo=1 AND j.juez_id NOT IN ('J000','JT00','JC00','JIPP')
     ORDER BY (comp_label = 'JO') DESC, j.nombre"
)->fetchAll();

$obs_superposicion = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $debate_desde      = trim($_POST['debate_desde']      ?? '');
    $debate_hasta      = trim($_POST['debate_hasta']      ?? '');
    $fecha_fallo       = trim($_POST['fecha_fallo']       ?? '');
    $fecha_fin_bloqueo = trim($_POST['fecha_fin_bloqueo'] ?? '');
    $jornadas          = (int)($_POST['jornadas'] ?? 1);
    $extras            = (int)($_POST['jornadas_extras'] ?? 0);
    $pre_aleg          = (int)($_POST['dia_pre_alegatos'] ?? 0);

    if (!$debate_desde) $errores[] = 'La fecha de inicio del debate es obligatoria.';
    if ($jornadas < 1)  $errores[] = 'Las jornadas deben ser al menos 1.';
    if (empty($_POST['turno'])) $errores[] = 'El turno es obligatorio.';

    if (empty($errores)) {
        // Usar fechas del POST; si faltan, calcular automáticamente
        if (!$debate_hasta || !$fecha_fallo || !$fecha_fin_bloqueo) {
            $fechas_calc = calcular_fechas_debate($pdo, $debate_desde, $jornadas, $extras, $pre_aleg, (bool)$ag['duplicidad_plazos']);
            $debate_hasta      = $debate_hasta      ?: $fechas_calc['debate_hasta'];
            $fecha_fallo       = $fecha_fallo       ?: $fechas_calc['fecha_fallo'];
            $fecha_fin_bloqueo = $fecha_fin_bloqueo ?: $fechas_calc['fecha_fin_bloqueo'];
            $debate_desde_norm = $fechas_calc['debate_desde'];
        } else {
            $debate_desde_norm = $debate_desde;
        }
        $fechas_calc = ['debate_desde'=>$debate_desde_norm,'debate_hasta'=>$debate_hasta,'fecha_fallo'=>$fecha_fallo,'fecha_fin_bloqueo'=>$fecha_fin_bloqueo];

        $tribunal_ids = array_values(array_filter([
            $_POST['presidente_id'] ?? '',
            $_POST['vocal_1_id']    ?? '',
            $_POST['vocal_2_id']    ?? '',
        ]));
        $conflictos = verificar_superposicion(
            $pdo,
            $debate_desde_norm,
            $fecha_fin_bloqueo,
            $tribunal_ids,
            $id,
            $litigante_ids,
            $_POST['presidente_id'] ?? '',
            $fecha_fallo
        );

        if (!empty($conflictos)) {
            $parts = [];
            foreach ($conflictos as $c) $parts[] = mb_substr($c['imputados'],0,35) . ' (' . fmtFecha($c['debate_desde']) . ')';
            $obs_superposicion = 'Sup. con: ' . implode('; ', $parts);
        }

        if (!empty($conflictos) && empty($_POST['confirmar_superposicion'])) {
            // Esperar confirmación
        } else {
            $pdo->beginTransaction();
            try {
                $debate_desde_original = $ag['debate_desde_original'] ?? $ag['debate_desde'];
                if ($ag['debate_desde'] && $debate_desde_norm !== $ag['debate_desde'] && !$ag['debate_desde_original']) {
                    $debate_desde_original = $ag['debate_desde'];
                }
                $fecha_fin_original = $ag['fecha_fin_original'] ?? $ag['fecha_fin_bloqueo'];
                if ($ag['fecha_fin_bloqueo'] && $fecha_fin_bloqueo !== $ag['fecha_fin_bloqueo'] && !$ag['fecha_fin_original']) {
                    $fecha_fin_original = $ag['fecha_fin_bloqueo'];
                }

                $apoyo_id = (($_POST['apoyo_oam_id'] ?? '') !== '') ? (int)$_POST['apoyo_oam_id'] : null;
                $tramite_post = trim($_POST['tramite'] ?? '');
                $tramite = $tramite_post ?: ($obs_superposicion ?: null);

                $pdo->prepare("
                    UPDATE agj_agendamientos SET
                        condicion=?, sub_condicion=?, turno=?, estado=?, tramite=?,
                        jornadas=?, jornadas_extras=?, dia_pre_alegatos=?,
                        debate_desde_original=?, debate_desde=?, debate_hasta=?,
                        fecha_fallo=?, fecha_fin_bloqueo=?, fecha_fin_original=?,
                        presidente_id=?, vocal_1_id=?, vocal_2_id=?,
                        tribunal_original=?, apoyo_oam_id=?
                    WHERE id=?
                ")->execute([
                    $_POST['condicion']    ?? 'Titular',
                    $_POST['sub_condicion']?? 'Titular',
                    $_POST['turno'],
                    $_POST['estado']       ?? 'Agendado',
                    $tramite,
                    $jornadas, $extras, $pre_aleg,
                    $debate_desde_original,
                    $debate_desde_norm,
                    $debate_hasta,
                    $fecha_fallo,
                    $fecha_fin_bloqueo,
                    $fecha_fin_original,
                    ($_POST['presidente_id'] ?? '') ?: null,
                    ($_POST['vocal_1_id']    ?? '') ?: null,
                    ($_POST['vocal_2_id']    ?? '') ?: null,
                    ($_POST['tribunal_original'] ?? '') ?: null,
                    $apoyo_id,
                    $id,
                ]);

                $nuevo_estado_ag = $_POST['estado'] ?? 'Agendado';
                $nuevo_estado_aa = match($nuevo_estado_ag) {
                    'Realizado'  => 'Realizado',
                    'Cancelado'  => 'Para Agendar',
                    'Suspendido' => 'Para Agendar',
                    default      => 'Agendado',
                };
                $pdo->prepare("UPDATE agj_autos_apertura SET estado=? WHERE id=?")
                    ->execute([$nuevo_estado_aa, $ag['aa_id']]);

                $pdo->commit();
                header("Location: verAgendamiento.php?id=$id&msg=Agendamiento+actualizado.");
                exit;
            } catch(Throwable $e) {
                $pdo->rollBack();
                $errores[] = 'Error al guardar: ' . $e->getMessage();
            }
        }
    }
}

$p = $_POST ?: [
    'debate_desde'      => $ag['debate_desde']      ?? '',
    'debate_hasta'      => $ag['debate_hasta']      ?? '',
    'fecha_fallo'       => $ag['fecha_fallo']       ?? '',
    'fecha_fin_bloqueo' => $ag['fecha_fin_bloqueo'] ?? '',
    'jornadas'          => $ag['jornadas']           ?? 1,
    'jornadas_extras'   => $ag['jornadas_extras']    ?? 0,
    'dia_pre_alegatos'  => $ag['dia_pre_alegatos']   ?? 0,
    'turno'             => $ag['turno']              ?? '',
    'condicion'         => $ag['condicion']          ?? 'Titular',
    'sub_condicion'     => $ag['sub_condicion']      ?? 'Titular',
    'estado'            => $ag['estado']             ?? 'Agendado',
    'tramite'           => $ag['tramite']            ?? '',
    'presidente_id'     => $ag['presidente_id']      ?? '',
    'vocal_1_id'        => $ag['vocal_1_id']         ?? '',
    'vocal_2_id'        => $ag['vocal_2_id']         ?? '',
    'tribunal_original' => $ag['tribunal_original']  ?? '',
    'apoyo_oam_id'      => $ag['apoyo_oam_id']       ?? '',
];

// $fechas_calc for display uses stored values when no POST
if (!$fechas_calc) {
    $fechas_calc = [
        'debate_desde'      => $p['debate_desde']      ?: '',
        'debate_hasta'      => $p['debate_hasta']      ?: '',
        'fecha_fallo'       => $p['fecha_fallo']       ?: '',
        'fecha_fin_bloqueo' => $p['fecha_fin_bloqueo'] ?: '',
    ];
}

$dias_pp = null;
if ($ag['vencimiento_pp_actual'] && $ag['estado_imputado']==='Preso') {
    $venc = new DateTime($ag['vencimiento_pp_actual']);
    $hoy  = new DateTime('today');
    $dias_pp = (int)$hoy->diff($venc)->days * ($venc >= $hoy ? 1 : -1);
}

$sv = fn($k) => htmlspecialchars($p[$k] ?? '');

$paginaActual = 'juicios';
require __DIR__ . '/../../config/menu.php';
?>
<div class="ph">
  <div>
    <h1>✏️ Editar Agendamiento #<?= $id ?></h1>
    <div class="bc">
      <a href="listarAgenda.php">Agenda</a> ·
      <a href="../autos/verAuto.php?id=<?= $ag['aa_id'] ?>">Ver AA</a> ·
      <a href="verAgendamiento.php?id=<?= $id ?>">Ver</a> · Editar
    </div>
  </div>
  <a href="verAgendamiento.php?id=<?= $id ?>" class="btn btn-g">← Cancelar</a>
</div>

<!-- Cabecera del AA -->
<div class="card" style="background:#f0f4ff;border-color:#bfdbfe">
  <div style="display:flex;gap:24px;flex-wrap:wrap;font-size:13px">
    <div><div style="font-size:11px;font-weight:700;color:#1e40af;text-transform:uppercase">CUIJ</div>
         <strong><?= htmlspecialchars($ag['cuij_principal']) ?></strong></div>
    <div style="flex:2"><div style="font-size:11px;font-weight:700;color:#1e40af;text-transform:uppercase">Imputados</div>
         <?= htmlspecialchars($ag['imputados']) ?></div>
    <div><div style="font-size:11px;font-weight:700;color:#1e40af;text-transform:uppercase">Tipo Tribunal</div>
         <?= htmlspecialchars($ag['tipo_tribunal'] ?? '—') ?></div>
    <?php if ($ag['estado_imputado']==='Preso' && $ag['vencimiento_pp_actual']): ?>
    <div>
      <div style="font-size:11px;font-weight:700;color:<?= $dias_pp!==null&&$dias_pp<=60?'#dc2626':'#1e40af' ?>;text-transform:uppercase">PP Actual</div>
      <span style="color:<?= $dias_pp!==null&&$dias_pp<=60?'#dc2626':'inherit' ?>;font-weight:<?= $dias_pp!==null&&$dias_pp<=60?'700':'400' ?>">
        <?= fmtFecha($ag['vencimiento_pp_actual']) ?>
        <?php if ($dias_pp!==null): ?><small>(<?= $dias_pp<0?'VENCIDA':$dias_pp.'d' ?>)</small><?php endif; ?>
      </span>
    </div>
    <?php endif; ?>
  </div>
</div>

<?php if (!empty($errores)): ?>
  <div class="msg msg-err"><strong>Corregir:</strong><br><?php foreach($errores as $e) echo "• $e<br>"; ?></div>
<?php endif; ?>
<?php if (!empty($conflictos)): ?>
<div class="msg" style="background:#fef3c7;border:1px solid #f59e0b;color:#78350f;padding:12px">
  <strong>⚠️ Superposición con <?= count($conflictos) ?> agendamiento(s):</strong>
  <ul style="margin:6px 0 0 16px;font-size:13px">
    <?php foreach($conflictos as $c): ?>
      <li>
        <?= htmlspecialchars($c['imputados']) ?> — <?= fmtFecha($c['debate_desde']) ?> al <?= fmtFecha($c['fecha_fin_bloqueo']) ?>
        <?php
        $partes = [];
        foreach (array_filter([$c['pte']??null, $c['v1']??null, $c['v2']??null]) as $nom) {
            $partes[] = in_array($nom, $c['jueces_conflicto'])
                ? "<span style='color:#dc2626;font-weight:700'>" . htmlspecialchars($nom) . "</span>"
                : htmlspecialchars($nom);
        }
        foreach ($c['litigantes_conflicto'] as $nom) {
            $partes[] = "<span style='color:#dc2626;font-weight:700'>" . htmlspecialchars($nom) . "</span>";
        }
        if ($partes) echo ' — ' . implode(' / ', $partes);
        ?>
      </li>
    <?php endforeach; ?>
  </ul>
  <p style="margin-top:8px;font-weight:600">Confirmá para guardar igual.</p>
</div>
<?php endif; ?>

<form method="POST" id="frmEdit">
<input type="hidden" name="id" value="<?= $id ?>">
<?php if (!empty($conflictos)): ?>
  <input type="hidden" name="confirmar_superposicion" value="1">
<?php endif; ?>

<!-- ═══ ESTADO Y CONDICIÓN ═══════════════════════════════════ -->
<div class="card">
  <div class="sec">Estado y Condición</div>
  <div class="fg">
    <div class="ff">
      <label>Estado</label>
      <select name="estado">
        <?php foreach(['Programado','Agendado','Realizado','Suspendido','Cancelado'] as $e): ?>
          <option value="<?= $e ?>" <?= ($p['estado']??'Agendado')===$e?'selected':'' ?>><?= $e ?></option>
        <?php endforeach; ?>
      </select>
    </div>
    <div class="ff">
      <label>Condición</label>
      <select name="condicion" id="sel_cond" onchange="toggleSubCond()">
        <option value="Titular"       <?= ($p['condicion']??'Titular')==='Titular'?'selected':'' ?>>Titular</option>
        <option value="SobreAgendado" <?= ($p['condicion']??'')==='SobreAgendado'?'selected':'' ?>>SobreAgendado</option>
      </select>
    </div>
    <div class="ff" id="div_sub" style="<?= ($p['condicion']??'')==='SobreAgendado'?'':'display:none' ?>">
      <label>Sub-condición</label>
      <select name="sub_condicion">
        <?php foreach(['Titular','SOB 1','SOB 2','SOB 3'] as $sc): ?>
          <option value="<?= $sc ?>" <?= ($p['sub_condicion']??'Titular')===$sc?'selected':'' ?>><?= $sc ?></option>
        <?php endforeach; ?>
      </select>
    </div>
    <div class="ff">
      <label>Turno *</label>
      <select name="turno" required>
        <option value="">— Seleccionar —</option>
        <?php foreach(['Matutino','Vespertino','Doble Jornada'] as $t): ?>
          <option value="<?= $t ?>" <?= ($p['turno']??'')===$t?'selected':'' ?>><?= $t ?></option>
        <?php endforeach; ?>
      </select>
    </div>
    <div class="ff sp2">
      <label>Trámite / Observación</label>
      <input type="text" name="tramite" id="tramite"
             value="<?= htmlspecialchars($obs_superposicion ?: ($p['tramite'] ?? '')) ?>"
             placeholder="Ej: Suspendido por enfermedad del imputado">
    </div>
  </div>
</div>

<!-- ═══ FECHAS DEL DEBATE ════════════════════════════════════ -->
<div class="card">
  <div class="sec">Fechas del Debate</div>

  <?php if ($ag['debate_desde_original'] && $ag['debate_desde_original'] !== $ag['debate_desde']): ?>
  <div style="background:#fef3c7;border:1px solid #f59e0b;border-radius:5px;padding:8px 12px;margin-bottom:12px;font-size:12px;color:#78350f">
    📌 Fecha original: <strong><?= fmtFecha($ag['debate_desde_original']) ?></strong>
    — Fin bloqueo original: <strong><?= fmtFecha($ag['fecha_fin_original']) ?></strong>
  </div>
  <?php endif; ?>

  <!-- Línea 1: jornadas y duplicidad -->
  <div class="fg">
    <div class="ff">
      <label>Jornadas</label>
      <input type="number" name="jornadas" id="jornadas"
             value="<?= (int)($p['jornadas'] ?? 1) ?>" min="1" readonly
             style="background:#f8fafc;color:#64748b;cursor:default" title="Jornadas (solo lectura)">
    </div>
    <div class="ff">
      <label>Jornadas extras</label>
      <input type="number" name="jornadas_extras" id="jornadas_extras"
             value="<?= (int)($p['jornadas_extras'] ?? 0) ?>" min="0" oninput="planificar()">
    </div>
    <div class="ff">
      <label>Duplicidad de Plazos</label>
      <input type="text" value="<?= $ag['duplicidad_plazos'] ? 'Sí (plazos duplicados)' : 'No' ?>" readonly
             style="background:#f8fafc;color:<?= $ag['duplicidad_plazos'] ? '#dc2626' : '#64748b' ?>;cursor:default">
    </div>
    <div class="ff" style="align-self:flex-end;display:flex;flex-direction:column;gap:6px">
      <label>
        <input type="checkbox" name="dia_pre_alegatos" id="dia_pre_alegatos" value="1"
               <?= ($p['dia_pre_alegatos']??0)?'checked':'' ?> onchange="planificar()">
        Día pre-alegatos
      </label>
      <button type="button" class="btn btn-i btn-sm" onclick="sugerirAgendamiento()">💡 Sugerir agendamiento</button>
    </div>
  </div>
  <!-- Línea 2: fechas del juicio (editables) -->
  <div class="fg" style="margin-top:10px;border-top:1px solid #e2e8f0;padding-top:10px">
    <div class="ff">
      <label>Debate desde *</label>
      <input type="date" name="debate_desde" id="debate_desde"
             value="<?= $sv('debate_desde') ?: ($fechas_calc['debate_desde'] ?? '') ?>"
             required onchange="planificar()">
    </div>
    <div class="ff">
      <label>Debate hasta</label>
      <input type="date" name="debate_hasta" id="fecha_hasta"
             value="<?= $sv('debate_hasta') ?: ($fechas_calc['debate_hasta'] ?? '') ?>"
             onblur="sugRecalc('debate_hasta')">
    </div>
    <div class="ff">
      <label>Fallo (veredicto)</label>
      <input type="date" name="fecha_fallo" id="fecha_fallo"
             value="<?= $sv('fecha_fallo') ?: ($fechas_calc['fecha_fallo'] ?? '') ?>"
             onblur="sugRecalc('fecha_fallo')">
    </div>
    <div class="ff">
      <label>Fin bloqueo (fundamentos)</label>
      <input type="date" name="fecha_fin_bloqueo" id="fecha_fin_bloqueo"
             value="<?= $sv('fecha_fin_bloqueo') ?: ($fechas_calc['fecha_fin_bloqueo'] ?? '') ?>">
    </div>
    <?php if ($ag['vencimiento_pp_actual'] && $ag['estado_imputado']==='Preso'): ?>
    <div class="ff">
      <label>Días PP al debate</label>
      <input type="text" id="lbl_pp" readonly style="background:#f8fafc;cursor:default" value="—">
    </div>
    <?php endif; ?>
  </div>

  <div id="panel_calc" style="display:none;color:#64748b;font-size:12px;margin-top:6px">⏳ Calculando…</div>
  <div id="panel_err"  style="display:none;color:#dc2626;font-size:12px;margin-top:6px"></div>

  <div id="panel_sug" style="display:none;margin-top:12px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:6px;padding:14px">
    <div style="font-size:12px;font-weight:700;color:#0369a1;margin-bottom:10px">💡 Fechas sugeridas</div>
    <div id="sug_loading" style="color:#64748b;font-size:12px">⏳ Buscando disponibilidad…</div>
    <div id="sug_error"   style="display:none;color:#dc2626;font-size:12px"></div>
    <div id="sug_opciones" style="display:flex;flex-direction:column;gap:8px"></div>
    <div id="sug_btn_usar" style="display:none;margin-top:10px">
      <button type="button" class="btn btn-s btn-sm" onclick="usarSugerencia()">✔ Usar fecha seleccionada</button>
    </div>
  </div>
</div>

<!-- ═══ TRIBUNAL DEL DEBATE ══════════════════════════════════ -->
<div class="card">
  <div class="sec">Tribunal del Debate
    <small style="font-weight:400;color:#64748b;font-size:12px">(jueces IPP y juez del AA inhabilitados)</small>
  </div>
  <div class="fg">
    <?php foreach([
      'presidente_id' => 'Presidente (1er voto)',
      'vocal_1_id'    => 'Vocal 1 (2do voto)',
      'vocal_2_id'    => 'Vocal 2 (3er voto)',
    ] as $fn => $fl): ?>
    <div class="ff">
      <label><?= $fl ?></label>
      <select name="<?= $fn ?>">
        <option value="">— Sin designar —</option>
        <?php foreach($jueces_list as $j):
          $inhab = in_array($j['juez_id'], $jipp_ids);
          $lbl   = $j['nombre'] . ($j['comp_label'] ? ' (' . htmlspecialchars($j['comp_label']) . ')' : '');
          $lbl  .= $inhab ? ' [inhabilitado]' : '';
        ?>
          <option value="<?= $j['juez_id'] ?>"
                  <?= ($p[$fn]??'')===$j['juez_id']?'selected':'' ?>
                  <?= $inhab?'disabled style="color:#94a3b8"':'' ?>>
            <?= $lbl ?>
          </option>
        <?php endforeach; ?>
      </select>
    </div>
    <?php endforeach; ?>
  </div>
  <div class="fg" style="margin-top:0">
    <div class="ff sp2">
      <label>Tribunal (texto libre para historial)</label>
      <input type="text" name="tribunal_original" value="<?= $sv('tribunal_original') ?>">
    </div>
    <div class="ff">
      <label>Apoyo UAJ</label>
      <select name="apoyo_oam_id">
        <option value="">— Sin asignar —</option>
        <?php foreach($agentes_uaj as $agx): ?>
          <option value="<?= $agx['id'] ?>" <?= (int)($p['apoyo_oam_id']??0)===$agx['id']?'selected':'' ?>>
            <?= htmlspecialchars($agx['apellido'] . ', ' . $agx['nombre']) ?>
          </option>
        <?php endforeach; ?>
      </select>
    </div>
  </div>
</div>

<div style="display:flex;gap:10px;padding-bottom:20px">
  <?php if (!empty($conflictos)): ?>
    <button type="submit" class="btn btn-w">⚠️ Confirmar con superposición</button>
  <?php else: ?>
    <button type="submit" class="btn btn-s">💾 Guardar cambios</button>
  <?php endif; ?>
  <a href="verAgendamiento.php?id=<?= $id ?>" class="btn btn-g">Cancelar</a>
</div>
</form>

</div></body></html>
<script>
const VPP_DATE = '<?= $ag['vencimiento_pp_actual'] ?? '' ?>';
const DUPL = <?= (int)($ag['duplicidad_plazos'] ?? 0) ?>;
let planTimer = null;

function planificar() {
    clearTimeout(planTimer);
    planTimer = setTimeout(_planificar, 600);
}
function sugRecalc(campo) {
    const msgs = {
        debate_hasta: '¿Recalculo la fecha del fallo y el fin de bloqueo a partir del debate hasta ingresado?',
        fecha_fallo:  '¿Recalculo la fecha de fin de bloqueo a partir del fallo ingresado?',
    };
    if (!msgs[campo]) return;
    const val = document.getElementById(campo === 'debate_hasta' ? 'fecha_hasta' : campo)?.value;
    if (!val) return;
    if (!confirm(msgs[campo])) return;
    const params = new URLSearchParams({duplicidad: DUPL});
    if (campo === 'debate_hasta') params.set('hasta_manual', val);
    if (campo === 'fecha_fallo')  params.set('fallo_manual', val);
    document.getElementById('panel_calc').style.display = '';
    fetch('<?= BASE_URL ?>/public/agendamientos/ajax_fechas.php', {
        method:'POST', headers:{'Content-Type':'application/x-www-form-urlencoded'},
        body: params.toString()
    }).then(r=>r.json()).then(data=>{
        document.getElementById('panel_calc').style.display = 'none';
        if (data.fecha_fallo)        document.getElementById('fecha_fallo').value = data.fecha_fallo;
        if (data.fecha_fin_bloqueo)  document.getElementById('fecha_fin_bloqueo').value = data.fecha_fin_bloqueo;
    }).catch(()=>{ document.getElementById('panel_calc').style.display = 'none'; });
}
function _planificar() {
    const desde  = document.getElementById('debate_desde').value;
    const jorn   = parseInt(document.getElementById('jornadas').value) || 1;
    const extras = parseInt(document.getElementById('jornadas_extras').value) || 0;
    const pre    = document.getElementById('dia_pre_alegatos').checked ? 1 : 0;
    if (!desde) return;
    document.getElementById('panel_calc').style.display = '';
    document.getElementById('panel_err').style.display  = 'none';
    fetch('<?= BASE_URL ?>/public/agendamientos/ajax_fechas.php', {
        method: 'POST',
        headers: {'Content-Type':'application/x-www-form-urlencoded'},
        body: new URLSearchParams({desde, jornadas: jorn, extras, pre, duplicidad: DUPL}).toString()
    })
    .then(r => r.json())
    .then(data => {
        document.getElementById('panel_calc').style.display = 'none';
        if (data.error) {
            document.getElementById('panel_err').textContent = data.error;
            document.getElementById('panel_err').style.display = '';
            return;
        }
        if (data.debate_desde)      document.getElementById('debate_desde').value     = data.debate_desde;
        if (data.debate_hasta)      document.getElementById('fecha_hasta').value       = data.debate_hasta;
        if (data.fecha_fallo)       document.getElementById('fecha_fallo').value       = data.fecha_fallo;
        if (data.fecha_fin_bloqueo) document.getElementById('fecha_fin_bloqueo').value = data.fecha_fin_bloqueo;
        const lblPP = document.getElementById('lbl_pp');
        if (lblPP && VPP_DATE && data.debate_desde) {
            const vp = new Date(VPP_DATE);
            const db = new Date(data.debate_desde);
            const d  = Math.round((vp - db) / 864e5);
            lblPP.value = d < 0 ? 'Ya vencida' : d + 'd';
            lblPP.style.color = d < 0 || d < 30 ? '#dc2626' : (d < 90 ? '#d97706' : 'inherit');
        }
    })
    .catch(() => {
        document.getElementById('panel_calc').style.display = 'none';
        document.getElementById('panel_err').textContent = 'Error al calcular fechas.';
        document.getElementById('panel_err').style.display = '';
    });
}
function toggleSubCond() {
    document.getElementById('div_sub').style.display =
        document.getElementById('sel_cond').value === 'SobreAgendado' ? '' : 'none';
}

function sugerirAgendamiento() {
    const jorn   = parseInt(document.getElementById('jornadas').value)||1;
    const extras = parseInt(document.getElementById('jornadas_extras').value)||0;
    const pre    = document.getElementById('dia_pre_alegatos').checked ? 1 : 0;
    const panSug = document.getElementById('panel_sug');
    panSug.style.display = '';
    document.getElementById('sug_loading').style.display  = '';
    document.getElementById('sug_error').style.display    = 'none';
    document.getElementById('sug_opciones').style.display = 'none';
    document.getElementById('sug_btn_usar').style.display = 'none';
    fetch('<?= BASE_URL ?>/public/agendamientos/ajax_sugerir.php', {
        method: 'POST',
        headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        body: new URLSearchParams({
            aa_id:    '<?= (int)$ag['aa_id'] ?>',
            jornadas: jorn,
            extras:   extras,
            pre:      pre,
        })
    })
    .then(r => r.json())
    .then(data => {
        document.getElementById('sug_loading').style.display = 'none';
        if (!data.ok) {
            document.getElementById('sug_error').textContent = data.error || 'Error al buscar disponibilidad.';
            document.getElementById('sug_error').style.display = '';
            return;
        }
        const cont = document.getElementById('sug_opciones');
        cont.innerHTML = '';
        if (data.alerta) {
            const al = document.createElement('div');
            al.style.cssText = 'background:#fef3c7;color:#78350f;padding:8px;border-radius:4px;font-size:12px;margin-bottom:8px';
            al.textContent = '⚠️ ' + data.alerta;
            cont.appendChild(al);
        }
        data.opciones.forEach(op => {
            const wrap = document.createElement('div');
            wrap.style.cssText = 'background:#fff;border:1px solid #e2e8f0;border-radius:5px;padding:10px 12px;display:flex;gap:10px;align-items:flex-start';
            const radio = document.createElement('input');
            radio.type = 'radio'; radio.name = 'sug_radio'; radio.value = op.fecha;
            radio.dataset.ids = JSON.stringify(op.juez_ids || []);
            radio.style.marginTop = '2px';
            radio.addEventListener('change', () => { document.getElementById('sug_btn_usar').style.display = ''; });
            const info = document.createElement('div');
            let partsHtml = '';
            if (op.partes_superpuestas && op.partes_superpuestas.length) {
                partsHtml = '<div style="color:#dc2626;font-size:11px;margin-top:4px">⚠️ Partes con superposición: ' +
                    op.partes_superpuestas.map(p => p.nombre + ' (' + p.cuij + ')').join(', ') + '</div>';
            }
            info.innerHTML = '<strong>' + op.label + '</strong>'
                + '<div style="font-size:12px;color:#475569;margin-top:2px">' + op.desc + '</div>'
                + '<div style="font-size:12px;color:#0369a1;margin-top:2px">Tribunal: ' + (op.jueces||[]).join(', ') + '</div>'
                + partsHtml;
            wrap.appendChild(radio); wrap.appendChild(info);
            cont.appendChild(wrap);
        });
        cont.style.display = '';
    })
    .catch(() => {
        document.getElementById('sug_loading').style.display = 'none';
        document.getElementById('sug_error').textContent = 'Error de comunicación.';
        document.getElementById('sug_error').style.display = '';
    });
}

function usarSugerencia() {
    const sel = document.querySelector('input[name="sug_radio"]:checked');
    if (!sel) { alert('Seleccioná una opción primero.'); return; }

    // Copiar fecha al campo debate_desde y recalcular las demás
    document.getElementById('debate_desde').value = sel.value;
    planificar();

    // Poblar selects de tribunal con los jueces sugeridos
    const ids = JSON.parse(sel.dataset.ids || '[]');
    ['presidente_id','vocal_1_id','vocal_2_id'].forEach((fn, i) => {
        const el = document.querySelector(`select[name="${fn}"]`);
        if (el) el.value = ids[i] || '';
    });

    document.getElementById('panel_sug').style.display = 'none';
}
</script>
