<?php
$pageTitle = 'Parámetros y Rangos';
require_once __DIR__ . '/../../config/config.php';
requireLogin();

$db = getDB();
$id = intval($_GET['id'] ?? 0);

// Obtener examen
$stmt = $db->prepare("SELECT * FROM examenes WHERE id = ?");
$stmt->execute([$id]);
$examen = $stmt->fetch();

if (!$examen) {
    showAlert('Examen no encontrado', 'danger');
    header('Location: list.php');
    exit;
}

// Añadir columna valor_default si no existe
try {
    $chkVD = $db->query("SHOW COLUMNS FROM parametros_examen LIKE 'valor_default'")->fetch();
    if (!$chkVD) $db->exec("ALTER TABLE parametros_examen ADD COLUMN valor_default VARCHAR(255) NULL DEFAULT NULL");
} catch (Exception $e) {}

// ==================== AJAX: Guardar orden ====================
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'update_orden_ajax') {
    header('Content-Type: application/json');
    try {
        $orden_ids = json_decode($_POST['orden_ids'] ?? '[]', true);
        if (is_array($orden_ids)) {
            $stmt = $db->prepare("UPDATE parametros_examen SET orden = ? WHERE id = ? AND examen_id = ?");
            foreach ($orden_ids as $pos => $pid) {
                $stmt->execute([$pos, intval($pid), $id]);
            }
        }
        echo json_encode(['ok' => true]);
    } catch (Exception $e) {
        echo json_encode(['ok' => false, 'error' => $e->getMessage()]);
    }
    exit;
}

// ==================== Procesar formulario ====================
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $action = $_POST['action'] ?? '';
    
    try {
        if ($action == 'add_parametro') {
            // Siguiente orden automático
            $stmtOrd = $db->prepare("SELECT COALESCE(MAX(orden),0)+1 FROM parametros_examen WHERE examen_id = ?");
            $stmtOrd->execute([$id]);
            $nextOrden = $stmtOrd->fetchColumn();

            $stmt = $db->prepare("
                INSERT INTO parametros_examen (examen_id, nombre, unidad, tipo_entrada, opciones_lista, es_titulo, orden, valor_default)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?)
            ");
            $stmt->execute([
                $id,
                sanitize($_POST['nombre']),
                sanitize($_POST['unidad']),
                sanitize($_POST['tipo_entrada'] ?? 'numerico'),
                sanitize($_POST['opciones_lista'] ?? ''),
                isset($_POST['es_titulo']) ? 1 : 0,
                intval($_POST['orden'] ?? $nextOrden),
                sanitize(isset($_POST['valor_default']) ? $_POST['valor_default'] : '')
            ]);
            showAlert('Parámetro agregado');
        }

        if ($action == 'edit_parametro') {
            $stmt = $db->prepare("
                UPDATE parametros_examen 
                SET nombre = ?, unidad = ?, tipo_entrada = ?, opciones_lista = ?, es_titulo = ?, orden = ?, valor_default = ?
                WHERE id = ? AND examen_id = ?
            ");
            $stmt->execute([
                sanitize($_POST['nombre']),
                sanitize($_POST['unidad']),
                sanitize($_POST['tipo_entrada'] ?? 'numerico'),
                sanitize($_POST['opciones_lista'] ?? ''),
                isset($_POST['es_titulo']) ? 1 : 0,
                intval($_POST['orden']),
                sanitize(isset($_POST['valor_default']) ? $_POST['valor_default'] : ''),
                intval($_POST['parametro_id']),
                $id
            ]);
            showAlert('Parámetro actualizado');
        }
        
        if ($action == 'delete_parametro') {
            $stmt = $db->prepare("DELETE FROM parametros_examen WHERE id = ? AND examen_id = ?");
            $stmt->execute([intval($_POST['parametro_id']), $id]);
            showAlert('Parámetro eliminado');
        }
        
        if ($action == 'add_rango') {
            $stmt = $db->prepare("
                INSERT INTO rangos_referencia (parametro_id, sexo, edad_min, edad_max, valor_min, valor_max, valor_texto, descripcion)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?)
            ");
            $stmt->execute([
                intval($_POST['parametro_id']),
                sanitize($_POST['sexo']),
                intval($_POST['edad_min']),
                intval($_POST['edad_max']),
                $_POST['valor_min'] !== '' ? floatval($_POST['valor_min']) : null,
                $_POST['valor_max'] !== '' ? floatval($_POST['valor_max']) : null,
                sanitize($_POST['valor_texto']),
                sanitize($_POST['descripcion'])
            ]);
            showAlert('Rango de referencia agregado');
        }
        
        if ($action == 'delete_rango') {
            $stmt = $db->prepare("DELETE FROM rangos_referencia WHERE id = ?");
            $stmt->execute([intval($_POST['rango_id'])]);
            showAlert('Rango eliminado');
        }
        
        if ($action == 'edit_rango') {
            $stmt = $db->prepare("
                UPDATE rangos_referencia 
                SET sexo = ?, edad_min = ?, edad_max = ?, valor_min = ?, valor_max = ?, valor_texto = ?, descripcion = ?
                WHERE id = ?
            ");
            $stmt->execute([
                sanitize($_POST['sexo']),
                intval($_POST['edad_min']),
                intval($_POST['edad_max']),
                $_POST['valor_min'] !== '' ? floatval($_POST['valor_min']) : null,
                $_POST['valor_max'] !== '' ? floatval($_POST['valor_max']) : null,
                sanitize($_POST['valor_texto']),
                sanitize($_POST['descripcion']),
                intval($_POST['rango_id'])
            ]);
            showAlert('Rango actualizado correctamente');
        }
        
        header('Location: parametros.php?id=' . $id);
        exit;
        
    } catch (PDOException $e) {
        showAlert('Error: ' . $e->getMessage(), 'danger');
    }
}

// Obtener parámetros
$stmt = $db->prepare("SELECT * FROM parametros_examen WHERE examen_id = ? ORDER BY orden, nombre");
$stmt->execute([$id]);
$parametros = $stmt->fetchAll();

// Obtener rangos por parámetro
$rangosPorParametro = [];
foreach ($parametros as $param) {
    $stmt = $db->prepare("SELECT * FROM rangos_referencia WHERE parametro_id = ? ORDER BY sexo, edad_min");
    $stmt->execute([$param['id']]);
    $rangosPorParametro[$param['id']] = $stmt->fetchAll();
}

require_once __DIR__ . '/../../includes/header.php';
?>

<style>
    .param-row { transition: background 0.2s; }
    .param-row:hover { background: #f8f9fa; }
    .param-row.drag-over { border-top: 3px solid var(--bs-primary); }
    .drag-handle { cursor: grab; color: #aaa; font-size: 1.1em; }
    .drag-handle:active { cursor: grabbing; }
    .sortable-ghost { opacity: 0.3; background: #e3f2fd !important; }
    .sortable-chosen { background: #e8f5e9 !important; }
    .param-orden-badge { min-width: 28px; text-align: center; }
    .rango-texto-preview { white-space: pre-line; max-height: 60px; overflow: hidden; font-size: 0.85em; }
    .rango-texto-preview.expanded { max-height: none; }
</style>

<div class="d-flex justify-content-between align-items-center mt-4 mb-4">
    <div>
        <h2><i class="bi bi-sliders"></i> Parámetros y Rangos</h2>
        <p class="text-muted mb-0">Examen: <strong><?= htmlspecialchars($examen['nombre']) ?></strong> (<?= $examen['codigo'] ?>)</p>
    </div>
    <div>
        <a href="edit.php?id=<?= $id ?>" class="btn btn-outline-primary btn-sm">
            <i class="bi bi-pencil"></i> Editar Examen
        </a>
        <a href="list.php" class="btn btn-outline-secondary btn-sm">
            <i class="bi bi-arrow-left"></i> Volver
        </a>
    </div>
</div>

<!-- ==================== AGREGAR PARÁMETRO (colapsable) ==================== -->
<div class="card mb-4">
    <div class="card-header d-flex justify-content-between align-items-center" 
         role="button" data-bs-toggle="collapse" data-bs-target="#collapseAddParam">
        <h5 class="mb-0"><i class="bi bi-plus-circle me-2"></i>Agregar Nuevo Parámetro</h5>
        <i class="bi bi-chevron-down"></i>
    </div>
    <div class="collapse" id="collapseAddParam">
        <div class="card-body">
            <form method="POST" class="row g-3">
                <input type="hidden" name="action" value="add_parametro">
                <div class="col-md-4">
                    <label class="form-label">Nombre del Parámetro *</label>
                    <input type="text" name="nombre" class="form-control" required placeholder="Ej: Glucosa, Hemoglobina">
                </div>
                <div class="col-md-2">
                    <label class="form-label">Unidad</label>
                    <input type="text" name="unidad" class="form-control" placeholder="Ej: mg/dL">
                </div>
                <div class="col-md-2">
                    <label class="form-label">Tipo de Entrada</label>
                    <select name="tipo_entrada" class="form-select" onchange="toggleOpcionesAdd(this)">
                        <option value="numerico">Numérico</option>
                        <option value="lista">Lista</option>
                        <option value="texto">Texto libre</option>
                        <option value="booleano">Positivo/Negativo</option>
                    </select>
                </div>
                <div class="col-md-2">
                    <label class="form-label">Orden</label>
                    <input type="number" name="orden" class="form-control" value="<?= count($parametros) + 1 ?>" min="0">
                </div>
                <div class="col-md-2 d-flex align-items-end">
                    <div class="form-check">
                        <input class="form-check-input" type="checkbox" name="es_titulo" id="addEsTitulo" value="1">
                        <label class="form-check-label" for="addEsTitulo">Es título</label>
                    </div>
                </div>
                <div class="col-12 add-opciones-lista" style="display:none;">
                    <label class="form-label">Opciones de la Lista</label>
                    <textarea name="opciones_lista" class="form-control" rows="2"
                              placeholder="Separe opciones con | Ej: Negativo|Positivo|Indeterminado"></textarea>
                </div>
                <div class="col-12 add-valor-default" style="display:none;">
                    <label class="form-label"><i class="bi bi-bookmark-check text-primary"></i> Valor Predeterminado</label>
                    <input type="text" name="valor_default" class="form-control"
                           placeholder="Ej: Negativo (se pre-seleccionará al ingresar resultados)">
                    <small class="text-muted">Este valor aparecerá pre-seleccionado al registrar resultados de este parámetro.</small>
                </div>
                <div class="col-12">
                    <button type="submit" class="btn btn-primary">
                        <i class="bi bi-plus-lg me-1"></i>Agregar Parámetro
                    </button>
                </div>
            </form>
        </div>
    </div>
</div>

<!-- ==================== LISTA DE PARÁMETROS ==================== -->
<div class="card">
    <div class="card-header d-flex justify-content-between align-items-center">
        <h5 class="mb-0"><i class="bi bi-list-ul me-2"></i>Parámetros Configurados (<?= count($parametros) ?>)</h5>
        <small class="text-muted"><i class="bi bi-grip-vertical"></i> Arrastre para reordenar</small>
    </div>
    <div class="card-body p-0">
        <?php if (empty($parametros)): ?>
        <div class="alert alert-info m-3">
            <i class="bi bi-info-circle"></i> No hay parámetros configurados. Agregue al menos uno para poder registrar resultados.
        </div>
        <?php else: ?>
        <div class="accordion" id="accordionParametros">
            <?php foreach ($parametros as $i => $param): ?>
            <?php 
            $tipoEntrada = $param['tipo_entrada'] ?? 'numerico';
            $tiposTexto = [
                'numerico' => 'Numérico',
                'lista' => 'Lista',
                'texto' => 'Texto',
                'booleano' => '+/-'
            ];
            $esTitulo = isset($param['es_titulo']) && $param['es_titulo'] == 1;
            $valorDefault = trim((string)($param['valor_default'] ?? ''));
            $opcionesListaArr = [];
            if ($tipoEntrada === 'lista' && !empty($param['opciones_lista'])) {
                $opcionesListaArr = array_values(array_filter(array_map('trim', explode('|', $param['opciones_lista'])), function($v){ return $v !== ''; }));
            }
            $rangos = $rangosPorParametro[$param['id']] ?? [];
            ?>
            <div class="accordion-item param-row" data-param-id="<?= $param['id'] ?>">
                <h2 class="accordion-header d-flex align-items-center">
                    <span class="drag-handle px-2" title="Arrastrar para reordenar">
                        <i class="bi bi-grip-vertical"></i>
                    </span>
                    <span class="badge bg-light text-dark border param-orden-badge me-1"><?= intval($param['orden']) ?></span>
                    <button class="accordion-button collapsed py-2 flex-grow-1" type="button" 
                            data-bs-toggle="collapse" data-bs-target="#param<?= $param['id'] ?>" style="box-shadow:none;">
                        <?php if ($esTitulo): ?>
                        <i class="bi bi-bookmark-fill text-warning me-2"></i>
                        <?php endif; ?>
                        <strong><?= htmlspecialchars($param['nombre']) ?></strong>
                        <?php if ($param['unidad']): ?>
                        <span class="text-muted ms-2">(<?= htmlspecialchars($param['unidad']) ?>)</span>
                        <?php endif; ?>
                        <span class="badge bg-secondary ms-2"><?= $tiposTexto[$tipoEntrada] ?? 'N/A' ?></span>
                        <?php if ($tipoEntrada === 'lista'): ?>
                        <span class="badge bg-primary ms-2">Opciones: <?= count($opcionesListaArr) ?></span>
                        <?php endif; ?>
                        <?php if (($tipoEntrada === 'lista' || $tipoEntrada === 'booleano') && $valorDefault !== ''): ?>
                        <span class="badge bg-warning text-dark ms-2">Predeterminado: <?= htmlspecialchars($valorDefault) ?></span>
                        <?php endif; ?>
                        <span class="badge bg-info ms-2"><?= count($rangos) ?> rangos</span>
                    </button>
                    <button type="button" class="btn btn-sm btn-outline-primary me-1" title="Editar parámetro"
                            onclick="event.stopPropagation(); editarParametro(<?= htmlspecialchars(json_encode($param)) ?>)">
                        <i class="bi bi-pencil"></i>
                    </button>
                    <form method="POST" class="d-inline me-2" onsubmit="return confirm('¿Eliminar este parámetro y todos sus rangos?')">
                        <input type="hidden" name="action" value="delete_parametro">
                        <input type="hidden" name="parametro_id" value="<?= $param['id'] ?>">
                        <button type="submit" class="btn btn-sm btn-outline-danger" title="Eliminar"
                                onclick="event.stopPropagation()">
                            <i class="bi bi-trash"></i>
                        </button>
                    </form>
                </h2>
                <div id="param<?= $param['id'] ?>" class="accordion-collapse collapse">
                    <div class="accordion-body">
                        <?php if ($tipoEntrada === 'lista' || $tipoEntrada === 'booleano'): ?>
                        <div class="alert alert-light border mb-3 py-2">
                            <div class="small fw-semibold mb-1"><i class="bi bi-ui-checks-grid"></i> Configuración de captura</div>
                            <?php if ($tipoEntrada === 'lista'): ?>
                            <div class="small mb-1">
                                <strong>Opciones:</strong>
                                <?php if (!empty($opcionesListaArr)): ?>
                                    <?= htmlspecialchars(implode(' | ', $opcionesListaArr)) ?>
                                <?php else: ?>
                                    <span class="text-danger">No hay opciones configuradas</span>
                                <?php endif; ?>
                            </div>
                            <?php endif; ?>
                            <div class="small">
                                <strong>Valor predeterminado:</strong>
                                <?php if ($valorDefault !== ''): ?>
                                    <span class="text-success"><?= htmlspecialchars($valorDefault) ?></span>
                                <?php else: ?>
                                    <span class="text-muted">No definido</span>
                                <?php endif; ?>
                            </div>
                        </div>
                        <?php endif; ?>

                        <!-- Rangos existentes -->
                        <?php if (!empty($rangos)): ?>
                        <table class="table table-sm table-bordered mb-3">
                            <thead class="table-light">
                                <tr>
                                    <th>Sexo</th>
                                    <th>Edad</th>
                                    <th>Valor Mín</th>
                                    <th>Valor Máx</th>
                                    <th>Texto Referencia</th>
                                    <th>Descripción</th>
                                    <th width="80"></th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($rangos as $rango): ?>
                                <tr>
                                    <td>
                                        <?php
                                        $sexos = ['M' => 'Masc.', 'F' => 'Fem.', 'Ambos' => 'Ambos'];
                                        echo $sexos[$rango['sexo']] ?? $rango['sexo'];
                                        ?>
                                    </td>
                                    <td><?= $rango['edad_min'] ?> - <?= $rango['edad_max'] ?></td>
                                    <td><?= $rango['valor_min'] !== null ? $rango['valor_min'] : '-' ?></td>
                                    <td><?= $rango['valor_max'] !== null ? $rango['valor_max'] : '-' ?></td>
                                    <td>
                                        <?php if ($rango['valor_texto']): ?>
                                        <div class="rango-texto-preview"><?= nl2br(htmlspecialchars($rango['valor_texto'])) ?></div>
                                        <?php else: ?>
                                        <span class="text-muted">-</span>
                                        <?php endif; ?>
                                    </td>
                                    <td><?= $rango['descripcion'] ? htmlspecialchars($rango['descripcion']) : '-' ?></td>
                                    <td class="text-nowrap">
                                        <button type="button" class="btn btn-sm btn-outline-primary" 
                                                onclick="editarRango(<?= htmlspecialchars(json_encode($rango)) ?>)" title="Editar">
                                            <i class="bi bi-pencil"></i>
                                        </button>
                                        <form method="POST" class="d-inline" onsubmit="return confirm('¿Eliminar este rango?')">
                                            <input type="hidden" name="action" value="delete_rango">
                                            <input type="hidden" name="rango_id" value="<?= $rango['id'] ?>">
                                            <button type="submit" class="btn btn-sm btn-outline-danger" title="Eliminar">
                                                <i class="bi bi-trash"></i>
                                            </button>
                                        </form>
                                    </td>
                                </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                        <?php else: ?>
                        <p class="text-muted small mb-3"><i class="bi bi-info-circle"></i> Sin rangos de referencia configurados.</p>
                        <?php endif; ?>

                        <!-- Agregar nuevo rango -->
                        <div class="card bg-light border-0">
                            <div class="card-body py-2">
                                <h6 class="mb-2"><i class="bi bi-plus"></i> Agregar Rango de Referencia</h6>
                                <form method="POST" class="row g-2 align-items-end">
                                    <input type="hidden" name="action" value="add_rango">
                                    <input type="hidden" name="parametro_id" value="<?= $param['id'] ?>">
                                    
                                    <div class="col-md-2">
                                        <label class="form-label small mb-0">Sexo</label>
                                        <select name="sexo" class="form-select form-select-sm">
                                            <option value="Ambos">Ambos</option>
                                            <option value="M">Masculino</option>
                                            <option value="F">Femenino</option>
                                        </select>
                                    </div>
                                    <div class="col-md-1">
                                        <label class="form-label small mb-0">Edad Min</label>
                                        <input type="number" name="edad_min" class="form-control form-control-sm" value="0" min="0">
                                    </div>
                                    <div class="col-md-1">
                                        <label class="form-label small mb-0">Edad Max</label>
                                        <input type="number" name="edad_max" class="form-control form-control-sm" value="150" min="0">
                                    </div>
                                    <div class="col-md-2">
                                        <label class="form-label small mb-0">Valor Mín</label>
                                        <input type="number" name="valor_min" class="form-control form-control-sm" step="0.0001">
                                    </div>
                                    <div class="col-md-2">
                                        <label class="form-label small mb-0">Valor Máx</label>
                                        <input type="number" name="valor_max" class="form-control form-control-sm" step="0.0001">
                                    </div>
                                    <div class="col-md-2 d-flex align-items-end">
                                        <button type="submit" class="btn btn-sm btn-success w-100">
                                            <i class="bi bi-plus"></i> Agregar
                                        </button>
                                    </div>
                                    <div class="col-md-6">
                                        <label class="form-label small mb-0">Texto de Referencia</label>
                                        <textarea name="valor_texto" class="form-control form-control-sm" rows="2"
                                                  placeholder="Ej: Negativo&#10;O lista:&#10;Valor 1&#10;Valor 2&#10;Valor 3"></textarea>
                                        <small class="text-muted">Puede escribir rangos como lista (una línea por valor)</small>
                                    </div>
                                    <div class="col-md-6">
                                        <label class="form-label small mb-0">Descripción</label>
                                        <textarea name="descripcion" class="form-control form-control-sm" rows="3"
                                               placeholder="Ej: Valores normales en adultos&#10;Una línea por ítem:&#10;Ítem 1&#10;Ítem 2"></textarea>
                                        <small class="text-muted">Puede escribir como lista (una línea por ítem)</small>
                                    </div>
                                </form>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <?php endforeach; ?>
        </div>
        <?php endif; ?>
    </div>
</div>

<!-- ==================== MODAL: Editar Parámetro ==================== -->
<div class="modal fade" id="modalEditarParametro" tabindex="-1">
    <div class="modal-dialog">
        <div class="modal-content">
            <form method="POST" id="formEditarParametro">
                <input type="hidden" name="action" value="edit_parametro">
                <input type="hidden" name="parametro_id" id="ep_id">
                <div class="modal-header">
                    <h5 class="modal-title"><i class="bi bi-pencil-square me-2"></i>Editar Parámetro</h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
                </div>
                <div class="modal-body">
                    <div class="row g-3">
                        <div class="col-12">
                            <label class="form-label">Nombre del Parámetro *</label>
                            <input type="text" name="nombre" id="ep_nombre" class="form-control" required>
                        </div>
                        <div class="col-md-6">
                            <label class="form-label">Unidad de Medida</label>
                            <input type="text" name="unidad" id="ep_unidad" class="form-control" placeholder="Ej: mg/dL">
                        </div>
                        <div class="col-md-6">
                            <label class="form-label">Orden</label>
                            <input type="number" name="orden" id="ep_orden" class="form-control" min="0">
                        </div>
                        <div class="col-md-6">
                            <label class="form-label">Tipo de Entrada</label>
                            <select name="tipo_entrada" id="ep_tipo_entrada" class="form-select" onchange="toggleOpcionesEdit()">
                                <option value="numerico">Numérico</option>
                                <option value="lista">Lista</option>
                                <option value="texto">Texto libre</option>
                                <option value="booleano">Positivo/Negativo</option>
                            </select>
                        </div>
                        <div class="col-md-6 d-flex align-items-end">
                            <div class="form-check">
                                <input class="form-check-input" type="checkbox" name="es_titulo" id="ep_es_titulo" value="1">
                                <label class="form-check-label" for="ep_es_titulo">Es título/separador</label>
                            </div>
                        </div>
                        <div class="col-12" id="ep_opciones_div" style="display:none;">
                            <label class="form-label">Opciones de la Lista</label>
                            <textarea name="opciones_lista" id="ep_opciones_lista" class="form-control" rows="3"
                                      placeholder="Separe opciones con | Ej: Negativo|Positivo|Indeterminado"></textarea>
                        </div>
                        <div class="col-12" id="ep_valor_default_div" style="display:none;">
                            <label class="form-label"><i class="bi bi-bookmark-check text-primary"></i> Valor Predeterminado</label>
                            <input type="text" name="valor_default" id="ep_valor_default" class="form-control"
                                   placeholder="Ej: Negativo (se pre-seleccionará al registrar resultados)">
                            <small class="text-muted">Este valor aparecerá pre-seleccionado al registrar resultados.</small>
                        </div>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Cancelar</button>
                    <button type="submit" class="btn btn-primary"><i class="bi bi-check-lg me-1"></i>Guardar Cambios</button>
                </div>
            </form>
        </div>
    </div>
</div>

<!-- ==================== MODAL: Editar Rango ==================== -->
<div class="modal fade" id="modalEditarRango" tabindex="-1">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <form method="POST" id="formEditarRango">
                <input type="hidden" name="action" value="edit_rango">
                <input type="hidden" name="rango_id" id="edit_rango_id">
                <div class="modal-header">
                    <h5 class="modal-title"><i class="bi bi-pencil-square me-2"></i>Editar Rango de Referencia</h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
                </div>
                <div class="modal-body">
                    <div class="row g-3">
                        <div class="col-md-4">
                            <label class="form-label">Sexo</label>
                            <select name="sexo" id="edit_sexo" class="form-select">
                                <option value="Ambos">Ambos</option>
                                <option value="M">Masculino</option>
                                <option value="F">Femenino</option>
                            </select>
                        </div>
                        <div class="col-md-4">
                            <label class="form-label">Edad Mínima</label>
                            <input type="number" name="edad_min" id="edit_edad_min" class="form-control" min="0">
                        </div>
                        <div class="col-md-4">
                            <label class="form-label">Edad Máxima</label>
                            <input type="number" name="edad_max" id="edit_edad_max" class="form-control" min="0">
                        </div>
                        <div class="col-md-6">
                            <label class="form-label">Valor Mínimo</label>
                            <input type="number" name="valor_min" id="edit_valor_min" class="form-control" step="0.0001">
                        </div>
                        <div class="col-md-6">
                            <label class="form-label">Valor Máximo</label>
                            <input type="number" name="valor_max" id="edit_valor_max" class="form-control" step="0.0001">
                        </div>
                        <div class="col-12">
                            <label class="form-label">Texto de Referencia</label>
                            <textarea name="valor_texto" id="edit_valor_texto" class="form-control" rows="4"
                                      placeholder="Puede escribir rangos como lista (una línea por valor):&#10;Valor 1&#10;Valor 2&#10;Valor 3"></textarea>
                            <small class="text-muted">Escriba cada valor de referencia en una línea separada para mostrarlo como lista</small>
                        </div>
                        <div class="col-12">
                            <label class="form-label">Descripción</label>
                            <textarea name="descripcion" id="edit_descripcion" class="form-control" rows="6"
                                      placeholder="Puede escribir como lista (una línea por ítem):&#10;Ítem 1&#10;Ítem 2&#10;Ítem 3"></textarea>
                            <small class="text-muted">Escriba cada ítem en una línea separada para mostrarlo como lista</small>
                        </div>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Cancelar</button>
                    <button type="submit" class="btn btn-primary"><i class="bi bi-check-lg me-1"></i>Guardar Cambios</button>
                </div>
            </form>
        </div>
    </div>
</div>

<!-- Funciones inline que NO dependen de CDNs externos -->
<script>
function toggleOpcionesAdd(sel) {
    var form = sel.closest('form');
    form.querySelector('.add-opciones-lista').style.display = (sel.value === 'lista') ? 'block' : 'none';
    form.querySelector('.add-valor-default').style.display = (sel.value === 'lista' || sel.value === 'booleano') ? 'block' : 'none';
    var placeholder = sel.value === 'booleano' ? 'Ej: Negativo' : 'Ej: primera opción de la lista';
    form.querySelector('.add-valor-default input').placeholder = placeholder + ' (se pre-seleccionará al ingresar resultados)';
}
function toggleOpcionesEdit() {
    var tipo = document.getElementById('ep_tipo_entrada').value;
    document.getElementById('ep_opciones_div').style.display = (tipo === 'lista') ? 'block' : 'none';
    document.getElementById('ep_valor_default_div').style.display = (tipo === 'lista' || tipo === 'booleano') ? 'block' : 'none';
    var ph = tipo === 'booleano' ? 'Ej: Negativo' : 'Ej: primera opción de la lista';
    document.getElementById('ep_valor_default').placeholder = ph + ' (se pre-seleccionará al registrar resultados)';
}
function editarParametro(param) {
    document.getElementById('ep_id').value = param.id;
    document.getElementById('ep_nombre').value = param.nombre || '';
    document.getElementById('ep_unidad').value = param.unidad || '';
    document.getElementById('ep_orden').value = param.orden || 0;
    document.getElementById('ep_tipo_entrada').value = param.tipo_entrada || 'numerico';
    document.getElementById('ep_es_titulo').checked = (param.es_titulo == 1);
    document.getElementById('ep_opciones_lista').value = param.opciones_lista || '';
    document.getElementById('ep_valor_default').value = param.valor_default || '';
    toggleOpcionesEdit();
    var modal = new bootstrap.Modal(document.getElementById('modalEditarParametro'));
    modal.show();
}
function editarRango(rango) {
    document.getElementById('edit_rango_id').value = rango.id;
    document.getElementById('edit_sexo').value = rango.sexo || 'Ambos';
    document.getElementById('edit_edad_min').value = rango.edad_min || 0;
    document.getElementById('edit_edad_max').value = rango.edad_max || 150;
    document.getElementById('edit_valor_min').value = rango.valor_min !== null ? rango.valor_min : '';
    document.getElementById('edit_valor_max').value = rango.valor_max !== null ? rango.valor_max : '';
    document.getElementById('edit_valor_texto').value = rango.valor_texto || '';
    document.getElementById('edit_descripcion').value = rango.descripcion || '';
    var modal = new bootstrap.Modal(document.getElementById('modalEditarRango'));
    modal.show();
}
</script>

<?php require_once __DIR__ . '/../../includes/footer.php'; ?>

<!-- SortableJS: carga DESPUÉS de Bootstrap (defer) para no bloquear la página -->
<script src="https://cdn.jsdelivr.net/npm/sortablejs@1.15.3/Sortable.min.js" defer></script>
<script>
// Drag & Drop - se inicializa cuando todo esté listo, con verificación de que Sortable existe
document.addEventListener('DOMContentLoaded', function() {
    function initSortable() {
        if (typeof Sortable === 'undefined') return;
        var accordion = document.getElementById('accordionParametros');
        if (!accordion) return;

        Sortable.create(accordion, {
            handle: '.drag-handle',
            animation: 200,
            ghostClass: 'sortable-ghost',
            chosenClass: 'sortable-chosen',
            onEnd: function() {
                var items = accordion.querySelectorAll('.param-row');
                var orden_ids = [];
                items.forEach(function(item, index) {
                    orden_ids.push(item.getAttribute('data-param-id'));
                    var badge = item.querySelector('.param-orden-badge');
                    if (badge) badge.textContent = index;
                });

                var fd = new FormData();
                fd.append('action', 'update_orden_ajax');
                fd.append('orden_ids', JSON.stringify(orden_ids));

                fetch('parametros.php?id=<?= $id ?>', {
                    method: 'POST',
                    body: fd
                })
                .then(function(r) { return r.json(); })
                .then(function(data) {
                    if (data.ok) {
                        var header = accordion.closest('.card').querySelector('.card-header');
                        var orig = header.style.background;
                        header.style.background = '#d4edda';
                        setTimeout(function() { header.style.background = orig; }, 600);
                    }
                })
                .catch(function(err) { console.error('Error guardando orden:', err); });
            }
        });
    }

    // Intentar inicializar; si Sortable aún no cargó (defer), reintentar
    if (typeof Sortable !== 'undefined') {
        initSortable();
    } else {
        // Reintentar cuando el script defer termine de cargar
        var checkInterval = setInterval(function() {
            if (typeof Sortable !== 'undefined') {
                clearInterval(checkInterval);
                initSortable();
            }
        }, 200);
        // Dejar de intentar después de 10 segundos
        setTimeout(function() { clearInterval(checkInterval); }, 10000);
    }
});
</script>
