<?php
session_start();

// 1. Verificación de sesión y rol
if (!isset($_SESSION['Inicio']) || $_SESSION['Inicio'] !== "Ok" || !in_array($_SESSION['Rol'], ["Administrativo", "Titular", "Pasante"])) {
    header("Location: ../login.php?m=5");
    exit;
}

// 2. Determinar la URL del menú
$urlMenuCorrespondiente = "";
switch ($_SESSION['Rol']) {
    case "Administrativo": $urlMenuCorrespondiente = "../MenuAdministrativo.php"; break;
    case "Titular": $urlMenuCorrespondiente = "../MenuTitular.php"; break;
    case "Pasante": $urlMenuCorrespondiente = "../MenuPasante.php"; break;
    default: header("Location: ../login.php?m=6"); exit;
}

function get_param($key, $default = '') {
    return isset($_GET[$key]) ? htmlspecialchars($_GET[$key], ENT_QUOTES, 'UTF-8') : $default;
}

// Obtener TODOS los datos (paciente y evaluación) desde la URL
$id_sondeo = get_param('id'); 

// Datos del paciente
$clave_paciente = get_param('clave_paciente');
$codigo_paciente = get_param('codigo_paciente');
$nombre_paciente = get_param('nombre_paciente');
$apellido_paterno_paciente = get_param('apellido_paterno_paciente');
$apellido_materno_paciente = get_param('apellido_materno_paciente');
$fecha_nacimiento_paciente = get_param('fecha_nacimiento_paciente');
$sexoPaciente = get_param('sexo_paciente');
$semanasgesta = get_param('semanas_gestacion');

// Datos de la evaluación de Sondeo
$fecha_evaluacion = get_param('fecha_evaluacion');
$edad = get_param('edad');
$edad_corregida = get_param('edad_corregida');
$rango_edad = get_param('rango_edad'); // <-- CORREGIDO EL ERROR DE TIPEO AQUÍ
$sond_art_punt_brutosa = get_param('sond_art_punt_brutosa');
$sond_articul_fonem_con_retras = get_param('sond_articul_fonem_con_retras');
$sond_articu_interpr = get_param('sond_articu_interpr');
?>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&family=Montserrat:wght@700&display=swap" rel="stylesheet">
    <link rel="icon" type="image/png" href="./img/UNAM amarillo.png"> 
    <link rel="stylesheet" type="text/css" href="../Css/EstilosUpdateWi.css">
    <title>Modificar Sondeo Articulatorio</title>
    <style>
        .is-invalid { border-color: red !important; }
        .auto-filled { background-color: #e9ecef; cursor: not-allowed; }
        .header-section { display: flex; justify-content: space-between; align-items: center; margin-bottom: 25px; padding-bottom: 15px; border-bottom: 2px solid #f0f0f0; }
        .main-tittle { margin: 0; padding: 0; border: none; }
        .btn-salir { white-space: nowrap; padding: 8px 20px; flex-shrink: 0; font-size: 0.9rem; }
        .hidden { display: none; }
        .age-fields-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; align-items: flex-end; }
        .edad-activa { background-color: #e0e8f0; border-color: #0056b3; box-shadow: 0 0 5px rgba(0, 86, 179, 0.3); }
        .instruccion-evaluacion { font-size: 0.9em; color: #555; background-color: #f8f9fa; padding: 10px; border-left: 4px solid #007bff; margin-top: 0; margin-bottom: 15px; border-radius: 0 4px 4px 0; }
        .instruccion-evaluacion strong { color: #0056b3; }
        .campo-error { border-color: red !important; box-shadow: 0 0 5px rgba(255, 0, 0, 0.5) !important; }
    </style>
</head>
<body>
    <div class="container">
        <div class="header-section">
            <h1 class="main-tittle"> Modificar Sondeo Articulatorio</h1>
            <a href="USondeo.php" class="btn-salir">Volver a la lista</a> 
        </div>

        <form method="POST" action="USSondeo.php" id="myForm">
            <input type="hidden" name="id_sondeo" value="<?php echo $id_sondeo; ?>">

            <div class="form-section">
                <h2 class="section-tittle">Datos Personales del Paciente</h2>
                <div class="input-grid">
                    <input type="hidden" name="clave_paciente" value="<?php echo $clave_paciente; ?>">
                    <input type="hidden" id="semanas_gestacion_hidden" value="<?php echo $semanasgesta; ?>">
                    <div class="input-box"><label>Código</label><input type="text" value="<?php echo $codigo_paciente; ?>" readonly class="auto-filled"></div>
                    <div class="input-box"><label>Nombre</label><input type="text" value="<?php echo $nombre_paciente; ?>" readonly class="auto-filled"></div>
                    <div class="input-box"><label>A. Paterno</label><input type="text" value="<?php echo $apellido_paterno_paciente; ?>" readonly class="auto-filled"></div>
                    <div class="input-box"><label>A. Materno</label><input type="text" value="<?php echo $apellido_materno_paciente; ?>" readonly class="auto-filled"></div>
                    <div class="input-box"><label>F. Nacimiento</label><input type="date" id="fecha_nacimiento_paciente" value="<?php echo $fecha_nacimiento_paciente; ?>" readonly class="auto-filled"></div>
                    <div class="input-box"><label>Semanas Gestación</label><input type="text" value="<?php echo $semanasgesta; ?>" readonly class="auto-filled"></div>
                </div>

                <h2 class="section-tittle" style="margin-top: 20px;">Datos de Evaluación</h2>
                <p class="instruccion-evaluacion">
                    <strong>Instrucción:</strong> Modifica la fecha de evaluación si es necesario. Los cálculos se actualizarán.
                </p>
                <div class="age-fields-grid">
                    <div class="input-box">
                        <label for="fecha_evaluacion">Fecha de Evaluación</label>
                        <input type="date" id="fecha_evaluacion" name="fecha_evaluacion" value="<?php echo $fecha_evaluacion; ?>" required class="input-field">
                    </div>
                    <div class="input-box">
                        <label>Edad Cronológica</label>
                        <input type="text" id="edad" name="edad" value="<?php echo $edad; ?>" readonly class="input-field auto-filled" required>
                    </div>
                    <div class="input-box">
                        <label>Edad Corregida</label>
                        <input type="text" id="edad_corregida" name="edad_corregida" value="<?php echo $edad_corregida; ?>" readonly class="input-field auto-filled">
                    </div>
                    <div class="input-box">
                        <label>Condición</label>
                        <input type="text" id="condicion_paciente" value="" readonly class="input-field auto-filled">
                    </div>
                    <div class="input-box">
                        <label>Rango de Edad</label>
                        <input type="text" id="rango_edad" name="rango_edad" value="<?php echo $rango_edad; ?>" readonly class="input-field auto-filled">
                    </div>
                </div>
            </div>

            <div class="form-section">
                <h2 class="section-tittle">Resultados Sondeo</h2>
                <div class="highlight-section">
                     <div class="input-grid">
                        <div class="input-box">
                            <label for="sond_art_punt_brutosa">Puntuación bruta</label>
                            <input type="text" class="input-field" validate="numeric" autocomplete="off" placeholder="0" maxlength="4" id="sond_art_punt_brutosa" name="sond_art_punt_brutosa" value="<?php echo $sond_art_punt_brutosa; ?>" required>
                        </div>
                    </div>
                    <div class="highlight-section">
                        <div class="input-box-fullwidth">
                            <label for="sond_articul_fonem_con_retras" class="sub-section-tittle">Fonemas con Retraso</label>
                            <input type="text" class="input-field" autocomplete="off" placeholder="Clic en fonemas o NA" id="sond_articul_fonem_con_retras" name="sond_articul_fonem_con_retras" value="<?php echo $sond_articul_fonem_con_retras; ?>" required>
                        </div>
                        <div class="fonema-buttons-container">
                            <button type="button" class="btn-clear-fonemas" onclick="limpiarFonemas()">Limpiar</button>
                            <!-- Botones (sin cambios) -->
                            <div class="fonema-category-buttons"><h4>Vocales</h4><div class="fonema-button" onclick="agregarFonema('/a/')">/a/</div><div class="fonema-button" onclick="agregarFonema('/e/')">/e/</div><div class="fonema-button" onclick="agregarFonema('/i/')">/i/</div><div class="fonema-button" onclick="agregarFonema('/o/')">/o/</div><div class="fonema-button" onclick="agregarFonema('/u/')">/u/</div></div>
                            <div class="fonema-category-buttons"><h4>Oclusivas</h4><div class="fonema-button" onclick="agregarFonema('/p/')">/p/</div><div class="fonema-button" onclick="agregarFonema('/b/ (b, v)')">/b/ (b, v)</div><div class="fonema-button" onclick="agregarFonema('/t/')">/t/</div><div class="fonema-button" onclick="agregarFonema('/d/')">/d/</div><div class="fonema-button" onclick="agregarFonema('/k/ (c, k, qu)')">/k/ (c, k, qu)</div><div class="fonema-button" onclick="agregarFonema('/g/ (g, gu)')">/g/ (g, gu)</div></div>
                            <div class="fonema-category-buttons"><h4>Fricativas</h4><div class="fonema-button" onclick="agregarFonema('/f/')">/f/</div><div class="fonema-button" onclick="agregarFonema('/θ/ (c, z)')">/θ/ (c, z)</div><div class="fonema-button" onclick="agregarFonema('/s/')">/s/</div><div class="fonema-button" onclick="agregarFonema('/ʝ/ (y, ll)')">/ʝ/ (y, ll)</div><div class="fonema-button" onclick="agregarFonema('/x/ (j, g)')">/x/ (j, g)</div></div>
                            <div class="fonema-category-buttons"><h4>Nasales</h4><div class="fonema-button" onclick="agregarFonema('/m/')">/m/</div><div class="fonema-button" onclick="agregarFonema('/n/')">/n/</div><div class="fonema-button" onclick="agregarFonema('/ɲ/ (ñ)')">/ɲ/ (ñ)</div></div>
                            <div class="fonema-category-buttons"><h4>Líquidas</h4><div class="fonema-button" onclick="agregarFonema('/l/')">/l/</div><div class="fonema-button" onclick="agregarFonema('/ɾ/ (r suave)')">/ɾ/ (r suave)</div><div class="fonema-button" onclick="agregarFonema('/r/ (rr fuerte)')">/r/ (rr fuerte)</div></div>
                            <div class="fonema-category-buttons"><h4>Africadas</h4><div class="fonema-button" onclick="agregarFonema('/tʃ/ (ch)')">/tʃ/ (ch)</div></div>
                            <div class="fonema-category-buttons"><h4>Grupos /l/</h4><div class="fonema-button" onclick="agregarFonema('/pl/')">/pl/</div><div class="fonema-button" onclick="agregarFonema('/bl/')">/bl/</div><div class="fonema-button" onclick="agregarFonema('/fl/')">/fl/</div><div class="fonema-button" onclick="agregarFonema('/kl/ (cl)')">/kl/ (cl)</div><div class="fonema-button" onclick="agregarFonema('/gl/')">/gl/</div></div>
                            <div class="fonema-category-buttons"><h4>Grupos /ɾ/</h4><div class="fonema-button" onclick="agregarFonema('/pɾ/')">/pɾ/</div><div class="fonema-button" onclick="agregarFonema('/bɾ/')">/bɾ/</div><div class="fonema-button" onclick="agregarFonema('/fɾ/')">/fɾ/</div><div class="fonema-button" onclick="agregarFonema('/tɾ/')">/tɾ/</div><div class="fonema-button" onclick="agregarFonema('/dɾ/')">/dɾ/</div><div class="fonema-button" onclick="agregarFonema('/kɾ/ (cr)')">/kɾ/ (cr)</div><div class="fonema-button" onclick="agregarFonema('/gɾ/')">/gɾ/</div></div>
                        </div>
                    </div>
                    <div class="input-box input-box-fullwidth">
                        <label for="sond_articu_interpr">Interpretación</label>
                        <textarea class="input-field" id="sond_articu_interpr" name="sond_articu_interpr" rows="5" required><?php echo $sond_articu_interpr; ?></textarea>
                    </div>
                </div>
            </div>
            
            <input type="submit" class="btn-submit" value="Guardar Cambios" id="registrar">
        </form>

        <script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script>
        <script src="../Jquery/jquery-3.6.0.min.js"></script>

        <script>
            // --- Las funciones auxiliares son idénticas y no necesitan cambios ---
            function calculatePreciseAge(startDate, endDate) {
                if (!(startDate instanceof Date) || !(endDate instanceof Date) || isNaN(startDate) || isNaN(endDate)) {
                    return { years: 0, months: 0, days: 0, totalMonths: 0 };
                }
                let years = endDate.getFullYear() - startDate.getFullYear();
                let months = endDate.getMonth() - startDate.getMonth();
                let days = endDate.getDate() - startDate.getDate();
                if (days < 0) {
                    months--;
                    const lastMonth = new Date(endDate.getFullYear(), endDate.getMonth(), 0);
                    days += lastMonth.getDate();
                }
                if (months < 0) { years--; months += 12; }
                const totalMonths = (years * 12) + months;
                return { years, months, days, totalMonths };
            }

            function setPatientCondition() {
                const gestWeeks = parseInt(document.getElementById('semanas_gestacion_hidden').value, 10);
                const conditionElem = document.getElementById('condicion_paciente');
                if (!conditionElem) return;
                if (gestWeeks > 0 && gestWeeks < 37) { conditionElem.value = "Prematuro"; } 
                else if (gestWeeks >= 37) { conditionElem.value = "Nacido a término"; } 
                else { conditionElem.value = "No especificado"; }
            }

            function agregarFonema(fonema) {
                const inputField = document.getElementById('sond_articul_fonem_con_retras');
                let currentValue = inputField.value.trim();
                if (currentValue.toUpperCase() === 'NA') currentValue = '';
                const phonemesExistentes = currentValue ? currentValue.split(/, /) : [];
                if (!phonemesExistentes.includes(fonema)) {
                    inputField.value = currentValue === '' ? fonema : currentValue + ', ' + fonema;
                }
            }

            function limpiarFonemas() {
                document.getElementById('sond_articul_fonem_con_retras').value = '';
            }

            // --- ESTA ES LA FUNCIÓN ACTUALIZADA DE CISondeo ---
            function calculateAllAgesAndUpdate_Sondeo(showAlert = true) {
                const birthDateElem = document.getElementById('fecha_nacimiento_paciente');
                const evalDateElem = document.getElementById('fecha_evaluacion');
                const cronoAgeElem = document.getElementById('edad');
                const correctedAgeElem = document.getElementById('edad_corregida');
                const rangoEdadElem = document.getElementById('rango_edad');

                if (!birthDateElem.value || !evalDateElem.value) return;
                
                const startDate = new Date(birthDateElem.value);
                const endDate = new Date(evalDateElem.value);
                if (startDate > endDate) {
                    if(showAlert) Swal.fire({ icon: 'error', title: 'Error en las fechas', text: 'La fecha de nacimiento no puede ser posterior a la de evaluación.' });
                    return;
                }

                const cronoAge = calculatePreciseAge(startDate, endDate);
                cronoAgeElem.value = `${cronoAge.years}A ${cronoAge.months}M ${cronoAge.days}D`;

                const gestWeeks = parseInt(document.getElementById('semanas_gestacion_hidden').value, 10);
                const esPrematuro = gestWeeks > 0 && gestWeeks < 37;
                const esMenorDe3Anos = cronoAge.totalMonths < 36;
                
                let edadAUsar = cronoAge;
                let edadActivaElem = cronoAgeElem;
                cronoAgeElem.classList.remove('edad-activa');
                correctedAgeElem.classList.remove('edad-activa');

                if (esPrematuro && esMenorDe3Anos) {
                    const weeksPremature = 40 - gestWeeks;
                    const daysToCorrect = weeksPremature * 7;
                    let correctedEndDate = new Date(endDate);
                    correctedEndDate.setDate(correctedEndDate.getDate() - daysToCorrect);
                    
                    if (correctedEndDate >= startDate) {
                        const correctedAge = calculatePreciseAge(startDate, correctedEndDate);
                        correctedAgeElem.value = `${correctedAge.years}A ${correctedAge.months}M ${correctedAge.days}D`;
                        edadAUsar = correctedAge;
                        edadActivaElem = correctedAgeElem;
                    } else {
                        correctedAgeElem.value = 'No aplicable (< 0)';
                        edadAUsar.totalMonths = -1; // Forzar que esté fuera de rango
                    }
                } else {
                    correctedAgeElem.value = 'No Aplica';
                }
                
                edadActivaElem.classList.add('edad-activa');

                const edadEnMeses = edadAUsar.totalMonths;

                if (edadEnMeses >= 30 && edadEnMeses <= 35) {
                    rangoEdadElem.value = `${edadAUsar.years}:${edadAUsar.months}`;
                    rangoEdadElem.style.borderColor = 'green';
                } else {
                    rangoEdadElem.value = "No Aplica"; 
                    rangoEdadElem.style.borderColor = 'orange';
                    if(showAlert) {
                        Swal.fire({
                            icon: 'warning',
                            title: 'Edad Fuera de Rango',
                            text: `La edad a usar (${edadEnMeses} meses) está fuera del rango esperado (30-35 meses). El valor se guardará como "No Aplica".`
                        });
                    }
                }
            }

            // --- Lógica de inicialización adaptada para MODIFICAR ---
            document.addEventListener('DOMContentLoaded', function() {
                // 1. Ejecutar los cálculos iniciales al cargar la página (sin mostrar alertas)
                setPatientCondition();
                calculateAllAgesAndUpdate_Sondeo(false); 

                // 2. Asignar el evento para recalcular si el usuario cambia la fecha
                document.getElementById('fecha_evaluacion').addEventListener('change', () => {
                    calculateAllAgesAndUpdate_Sondeo(true); // Con alertas
                });

                // 3. Lógica de validación y envío del formulario
                const myForm = document.getElementById('myForm');
                myForm.addEventListener('submit', function(event) {
                    event.preventDefault(); 
                    const requiredFields = myForm.querySelectorAll('[required]:not([disabled])');
                    let allValid = true;
                    let firstInvalidField = null;
                    requiredFields.forEach(field => {
                        field.classList.remove('campo-error');
                        if (!field.value.trim()) {
                            allValid = false;
                            field.classList.add('campo-error');
                            if (!firstInvalidField) firstInvalidField = field;
                        }
                    });
                    if (!allValid) {
                        Swal.fire({
                            icon: 'error',
                            title: 'Campos incompletos',
                            text: 'Por favor, complete todos los campos requeridos.'
                        }).then(() => { if (firstInvalidField) firstInvalidField.focus(); });
                    } else {
                        myForm.submit();
                    }
                });
                
                myForm.querySelectorAll('[required]').forEach(input => {
                    input.addEventListener('input', () => {
                        if (input.value.trim() !== "") input.classList.remove('campo-error');
                    });
                });
            });
        </script>
    </div>
</body>
</html>