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

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

$aa_id = (int)($_GET['aa_id'] ?? $_POST['aa_id'] ?? 0);
if (!$aa_id) { header('Location: ../autos/listarAutos.php'); exit; }

$stmt = $pdo->prepare("SELECT * FROM agj_autos_apertura WHERE id = ? AND deleted_at IS NULL");
$stmt->execute([$aa_id]);
$aa = $stmt->fetch();
if (!$aa) { header('Location: ../autos/listarAutos.php?msg=AA+no+encontrado'); exit; }

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

// Litigantes del AA para control de superposición y cabecera
$stmt_lits = $pdo->prepare("
    SELECT al.litigante_id, al.rol_en_causa, vl.nombre
    FROM agj_aa_litigantes al
    JOIN v_litigantes vl ON al.litigante_id = vl.litigante_id
    WHERE al.aa_id = ?
    ORDER BY al.rol_en_causa, al.orden, al.id
");
$stmt_lits->execute([$aa_id]);
$lits_rows     = $stmt_lits->fetchAll();
$litigante_ids = array_column($lits_rows, 'litigante_id');
$partes        = [];
foreach ($lits_rows as $lr) $partes[$lr['rol_en_causa']][] = $lr['nombre'];

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

$stmtCnt = $pdo->prepare("SELECT COUNT(*) FROM agj_agendamientos WHERE aa_id=? AND deleted_at IS NULL AND estado NOT IN ('Cancelado')");
$stmtCnt->execute([$aa_id]);
$cntAgendamientos = (int)$stmtCnt->fetchColumn();

// Agentes de la Oficina de Apoyo a Magistrados (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 para el tribunal: Rosario primero, luego Interdistrital, luego resto
$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 ($cntAgendamientos >= 2) $errores[] = 'Este AA ya tiene 2 agendamientos activos. No se puede agregar un tercero.';
    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)$aa['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,
            0,
            $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'])) {
            // Mostrar conflictos para confirmación
        } else {
            $pdo->beginTransaction();
            try {
                $apoyo_id = (($_POST['apoyo_oam_id'] ?? '') !== '') ? (int)$_POST['apoyo_oam_id'] : null;
                $tramite  = trim($_POST['tramite'] ?? '') ?: ($obs_superposicion ?: null);

                $pdo->prepare("
                    INSERT INTO agj_agendamientos
                    (aa_id, condicion, sub_condicion, turno, estado,
                     jornadas, jornadas_extras, dia_pre_alegatos,
                     debate_desde, debate_hasta, fecha_fallo, fecha_fin_bloqueo,
                     presidente_id, vocal_1_id, vocal_2_id, tribunal_original,
                     apoyo_oam, apoyo_oam_id, tramite)
                    VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
                ")->execute([
                    $aa_id,
                    $_POST['condicion'] ?? 'Titular',
                    $_POST['sub_condicion'] ?? 'Titular',
                    $_POST['turno'],
                    'Agendado',
                    $jornadas, $extras, $pre_aleg,
                    $debate_desde_norm,
                    $debate_hasta,
                    $fecha_fallo,
                    $fecha_fin_bloqueo,
                    ($_POST['presidente_id'] ?? '') ?: null,
                    ($_POST['vocal_1_id']    ?? '') ?: null,
                    ($_POST['vocal_2_id']    ?? '') ?: null,
                    ($_POST['tribunal_original'] ?? '') ?: null,
                    ($_POST['apoyo_oam_texto'] ?? '') ?: null,
                    $apoyo_id,
                    $tramite,
                ]);

                $pdo->prepare("UPDATE agj_autos_apertura SET estado='Agendado' WHERE id=?")
                    ->execute([$aa_id]);

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

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

// Jornadas por defecto: suma jornadas_aa + agregadas_juez
$jornadas_default = (int)($aa['jornadas_en_aa'] ?? 0) + (int)($aa['jornadas_agregadas_juez'] ?? 0);
if ($jornadas_default < 1) $jornadas_default = 1;

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

$paginaActual = 'juicios';
require __DIR__ . '/../../config/menu.php';
?>
<div class="ph">
  <div>
    <h1>📅 Nuevo Agendamiento</h1>
    <div class="bc"><a href="../autos/listarAutos.php">Autos</a> · <a href="../autos/verAuto.php?id=<?= $aa_id ?>">Ver AA</a> · Agendar</div>
  </div>
</div>

<!-- Cabecera del AA -->
<?php
$pdet  = calcular_prioridad_detalle($aa);
$ptot  = $pdet['total'];
$pttip = implode(' | ', array_map(fn($c) => $c['label'].': '.$c['valor'], $pdet['componentes']));
[$plbl,$pbg,$pcol] = $ptot>=700 ? ['Alta','#fee2e2','#dc2626'] : ($ptot>=350 ? ['Media','#fef3c7','#d97706'] : ['Baja','#d1fae5','#16a34a']);
?>
<div class="card" style="background:#f0f4ff;border-color:#bfdbfe;font-size:13px">
  <!-- Fila 1: CUIJ · Imputados+Delito · Tribunal · Prioridad -->
  <div style="display:flex;gap:16px;flex-wrap:wrap;align-items:flex-start">
    <div style="min-width:110px">
      <div style="font-size:10px;font-weight:700;color:#1e40af;text-transform:uppercase;margin-bottom:2px">CUIJ</div>
      <div style="font-family:monospace;font-size:12px"><?= htmlspecialchars($aa['cuij_principal']) ?></div>
    </div>
    <div style="flex:3;min-width:200px">
      <div style="font-size:10px;font-weight:700;color:#1e40af;text-transform:uppercase;margin-bottom:2px">Imputados</div>
      <div><?= htmlspecialchars($aa['imputados']) ?></div>
      <?php if (!empty($aa['delitos'])): ?>
      <div style="color:#475569;margin-top:3px;font-size:12px">
        <span style="font-size:10px;font-weight:700;color:#64748b;text-transform:uppercase">Delito: </span>
        <?= htmlspecialchars($aa['delitos']) ?>
      </div>
      <?php endif; ?>
    </div>
    <div style="min-width:80px">
      <div style="font-size:10px;font-weight:700;color:#1e40af;text-transform:uppercase;margin-bottom:2px">Tribunal</div>
      <div><?= htmlspecialchars($aa['tipo_tribunal'] ?? '—') ?></div>
    </div>
    <div title="<?= htmlspecialchars($pttip) ?>" style="cursor:help;flex-shrink:0">
      <div style="font-size:10px;font-weight:700;color:#1e40af;text-transform:uppercase;margin-bottom:2px">Prioridad ⓘ</div>
      <span style="display:inline-flex;flex-direction:column;align-items:center;background:<?=$pbg?>;color:<?=$pcol?>;
                   padding:2px 10px;border-radius:10px;font-weight:700;line-height:1.3">
        <span style="font-size:9px"><?=$plbl?></span>
        <span style="font-size:13px"><?=$ptot?></span>
      </span>
    </div>
  </div>
  <!-- Fila 2: Partes -->
  <?php
  $rolesLabel = ['Fiscal'=>'Fiscal/es','Defensor'=>'Defensor/es','Querellante'=>'Querellante/s'];
  $partesVis  = array_filter($partes, fn($v) => !empty($v));
  ?>
  <?php if ($partesVis): ?>
  <div style="margin-top:10px;padding-top:10px;border-top:1px solid #bfdbfe;display:flex;gap:16px;flex-wrap:wrap">
    <?php foreach ($rolesLabel as $rol => $lbl): ?>
      <?php if (!empty($partes[$rol])): ?>
      <div style="min-width:140px">
        <div style="font-size:10px;font-weight:700;color:#1e40af;text-transform:uppercase;margin-bottom:2px"><?= $lbl ?></div>
        <div style="font-size:12px"><?= htmlspecialchars(implode(', ', $partes[$rol])) ?></div>
      </div>
      <?php endif; ?>
    <?php endforeach; ?>
  </div>
  <?php endif; ?>
</div>

<?php if ($cntAgendamientos >= 2 && empty($errores)): ?>
  <div class="msg msg-err">⛔ Este AA ya tiene <strong>2 agendamientos activos</strong>. No se puede crear un tercero.</div>
<?php endif; ?>
<?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 como SobreAgendado.</p>
</div>
<?php endif; ?>

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

<!-- ═══ CONDICIÓN ════════════════════════════════════════════ -->
<div class="card">
  <div class="sec">Condición</div>
  <div class="fg">
    <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>
</div>

<!-- ═══ FECHAS DEL DEBATE ════════════════════════════════════ -->
<div class="card">
  <div class="sec">Fechas del Debate</div>
  <!-- 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'] ?? $jornadas_default) ?>" min="1" readonly
             style="background:#f8fafc;color:#64748b;cursor:default" title="Jornadas del AA (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="<?= $aa['duplicidad_plazos'] ? 'Sí (plazos duplicados)' : 'No' ?>" readonly
             style="background:#f8fafc;color:<?= $aa['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"
             <?= !empty($p['dia_pre_alegatos'])?'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 ($aa['vencimiento_pp_actual'] && $aa['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>

  <!-- Panel de sugerencias -->
  <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 id="panel_calculando" style="display:none;color:#64748b;font-size:12px;margin-top:6px">⏳ Calculando fechas…</div>
  <div id="panel_error_calc" style="display:none;color:#dc2626;font-size:12px;margin-top:6px"></div>
</div>

<!-- ═══ OBSERVACIONES ════════════════════════════════════════ -->
<div class="card">
  <div class="sec">Observaciones</div>
  <div class="fg">
    <div class="ff sp3">
      <label>Trámite / Observación</label>
      <input type="text" name="tramite" id="tramite"
             value="<?= htmlspecialchars($_POST['tramite'] ?? $obs_superposicion) ?>"
             placeholder="Ej: Suspendido por enfermedad del imputado">
    </div>
  </div>
</div>

<!-- ═══ TRIBUNAL ═════════════════════════════════════════════ -->
<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') ?>" placeholder="Ej: PEDRANA / BECERRA / ALIAU">
    </div>
    <div class="ff">
      <label>Apoyo UAJ</label>
      <select name="apoyo_oam_id">
        <option value="">— Sin asignar —</option>
        <?php foreach($agentes_uaj as $ag): ?>
          <option value="<?= $ag['id'] ?>" <?= (int)($p['apoyo_oam_id']??0)===$ag['id']?'selected':'' ?>>
            <?= htmlspecialchars($ag['apellido'] . ', ' . $ag['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">💾 Crear Agendamiento</button>
  <?php endif; ?>
  <a href="../autos/verAuto.php?id=<?= $aa_id ?>" class="btn btn-g">Cancelar</a>
</div>
</form>

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

function fmt(iso) {
    if (!iso) return '—';
    const [y,m,d] = iso.split('-');
    return `${d}/${m}/${y}`;
}
function planificar() {
    clearTimeout(planTimer);
    planTimer = setTimeout(_planificar, 500);
}
// sugRecalc: on blur of date fields, suggest recalculating related dates
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_calculando').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_calculando').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_calculando').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_calculando').style.display='';
    document.getElementById('panel_error_calc').style.display='none';
    const params = new URLSearchParams({desde, jornadas:jorn, extras, pre, duplicidad: DUPL});
    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_calculando').style.display='none';
        if (data.error) {
            document.getElementById('panel_error_calc').textContent = data.error;
            document.getElementById('panel_error_calc').style.display='';
            return;
        }
        // Poblar campos de fecha editables
        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_calculando').style.display='none';
        document.getElementById('panel_error_calc').textContent='Error al calcular fechas.';
        document.getElementById('panel_error_calc').style.display='';
    });
}
function toggleSubCond() {
    document.getElementById('div_sub').style.display =
        document.getElementById('sel_cond').value==='SobreAgendado' ? '' : 'none';
}
if (document.getElementById('debate_desde').value) _planificar();

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: <?= $aa_id ?>, jornadas: jorn, extras, pre,
            duplicidad: <?= (int)($aa['duplicidad_plazos'] ?? 0) ?>
        })
    })
    .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 = '';
        const TIPO_CFG = {
            fechaA: { icon:'📅', color:'#2563eb', prefijo:'Más próxima — tribunal libre' },
            fechaB: { icon:'✅', color:'#16a34a', prefijo:'Tribunal y partes disponibles' },
        };
        // Alerta si no se encontró FechaB dentro de 6 meses
        if (data.alerta) {
            const al = document.createElement('div');
            al.style.cssText = 'background:#fffbeb;border:1px solid #fde68a;border-radius:6px;' +
                'padding:8px 12px;font-size:12px;color:#92400e;margin-bottom:8px';
            al.textContent = '⚠️ ' + data.alerta;
            cont.appendChild(al);
        }
        data.opciones.forEach((op) => {
            const cfg = TIPO_CFG[op.tipo] || { icon:'📅', color:'#64748b', prefijo:'Opción' };
            const lbl = document.createElement('label');
            lbl.style.cssText = 'display:flex;align-items:flex-start;gap:10px;padding:8px 10px;' +
                'background:#fff;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;font-size:13px';
            const juecesHtml = op.jueces && op.jueces.length
                ? `<div style="font-size:12px;color:#1e40af;margin-top:3px">👨‍⚖️ ${op.jueces.join(' · ')}</div>`
                : '';
            // Detalle de partes superpuestas (solo en fechaA con conflictos)
            let parteHtml = '';
            if (op.partes_superpuestas && op.partes_superpuestas.length) {
                const items = op.partes_superpuestas.map(p => {
                    const desde = p.debate_desde ? p.debate_desde.slice(8,10)+'/'+p.debate_desde.slice(5,7) : '';
                    const hasta = p.debate_hasta ? p.debate_hasta.slice(8,10)+'/'+p.debate_hasta.slice(5,7) : '';
                    return `<span style="display:inline-block;background:#fee2e2;border-radius:3px;padding:1px 5px;margin:1px 2px 1px 0;font-size:11px">`+
                           `${p.nombre} (${p.cuij} ${desde}–${hasta})</span>`;
                }).join('');
                parteHtml = `<div style="margin-top:4px;line-height:1.6">${items}</div>`;
            }
            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';
            lbl.appendChild(radio);
            const div = document.createElement('div');
            div.style.flex = '1';
            div.innerHTML = `<div style="font-size:11px;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.04em">${cfg.prefijo}</div>
                  <div style="font-weight:700;color:${cfg.color}">${cfg.icon} ${op.label}</div>
                  <div style="font-size:12px;color:#64748b;margin-top:2px">${op.desc}</div>
                  ${juecesHtml}${parteHtml}`;
            lbl.appendChild(div);
            cont.appendChild(lbl);
        });
        cont.style.display = '';
        document.getElementById('sug_btn_usar').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; }

    // Poblar fecha de inicio y recalcular las demás
    document.getElementById('debate_desde').value = sel.value;
    planificar();

    // Poblar selects de tribunal con los jueces sugeridos; limpiar los no cubiertos
    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] || '';   // '' = "Sin designar" (limpia vocales no usados en unipersonal)
    });

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