// La Paguita - Test de Aptitud (UI)

let _testPreguntaActual = 0;
let _testPuntos = 0;

function isTestCompleted() {
    return localStorage.getItem(TEST_APTITUD_SAVE_KEY) === 'true';
}

function markTestCompleted() {
    localStorage.setItem(TEST_APTITUD_SAVE_KEY, 'true');
}

function showTestScreen() {
    const screen = document.getElementById('test-aptitud-screen');
    const startScreen = document.getElementById('start-screen');
    const gameContainer = document.getElementById('game-container');

    if (screen) screen.style.display = 'flex';
    if (startScreen) startScreen.style.display = 'none';
    if (gameContainer) gameContainer.style.display = 'none';

    _testPreguntaActual = 0;
    _testPuntos = 0;

    document.getElementById('test-intro').textContent = TEST_APTITUD.intro;
    document.getElementById('test-result').style.display = 'none';
    document.getElementById('test-question-area').style.display = 'block';

    renderTestPregunta();
}

function hideTestScreen() {
    const screen = document.getElementById('test-aptitud-screen');
    if (screen) screen.style.display = 'none';
}

function replayTest() {
    showTestScreen();
}

function handleSkipTest() {
    const modal = document.getElementById('test-skip-modal');
    const warningText = document.getElementById('test-skip-warning-text');
    if (warningText && typeof TEST_SKIP_WARNING === 'string') {
        warningText.textContent = TEST_SKIP_WARNING;
    }
    if (modal) modal.classList.add('show');
}

function cancelarSkipTest() {
    const modal = document.getElementById('test-skip-modal');
    if (modal) modal.classList.remove('show');
}

function confirmarSkipTest() {
    const modal = document.getElementById('test-skip-modal');
    if (modal) modal.classList.remove('show');
    markTestCompleted();
    hideTestScreen();
    if (typeof showStartScreen === 'function') showStartScreen();
    if (typeof renderSeleccionPersonaje === 'function') renderSeleccionPersonaje();
}

function renderTestPregunta() {
    const preguntas = TEST_APTITUD.preguntas;
    if (_testPreguntaActual >= preguntas.length) {
        mostrarResultadoTest();
        return;
    }

    const pregunta = preguntas[_testPreguntaActual];

    const questionArea = document.getElementById('test-question-area');
    const responseArea = document.getElementById('test-response');
    const resultArea = document.getElementById('test-result');

    if (questionArea) questionArea.style.display = 'block';
    if (responseArea) responseArea.style.display = 'none';
    if (resultArea) resultArea.style.display = 'none';

    // Progress
    const progressBar = document.getElementById('test-progress-bar');
    const progressText = document.getElementById('test-progress-text');
    const pct = (_testPreguntaActual / preguntas.length) * 100;
    if (progressBar) progressBar.style.width = pct + '%';
    if (progressText) progressText.textContent = `Pregunta ${_testPreguntaActual + 1}/${preguntas.length}`;

    // Question
    document.getElementById('test-q-emoji').textContent = pregunta.emoji;
    document.getElementById('test-q-text').textContent = pregunta.texto;

    const optionsEl = document.getElementById('test-options');
    optionsEl.innerHTML = pregunta.opciones.map((op, i) =>
        `<button class="btn btn--test-option" onclick="handleTestRespuesta(${i})">${op.texto}</button>`
    ).join('');
}

function handleTestRespuesta(index) {
    const pregunta = TEST_APTITUD.preguntas[_testPreguntaActual];
    const opcion = pregunta.opciones[index];

    _testPuntos += opcion.puntos;

    // Show response
    document.getElementById('test-question-area').style.display = 'none';
    const responseArea = document.getElementById('test-response');
    responseArea.style.display = 'block';
    document.getElementById('test-response-text').textContent = opcion.respuesta;

    setTimeout(() => {
        _testPreguntaActual++;
        renderTestPregunta();
    }, 1800);
}

function mostrarResultadoTest() {
    document.getElementById('test-question-area').style.display = 'none';
    document.getElementById('test-response').style.display = 'none';

    const resultArea = document.getElementById('test-result');
    resultArea.style.display = 'block';

    const progressBar = document.getElementById('test-progress-bar');
    if (progressBar) progressBar.style.width = '100%';

    const aprobado = _testPuntos < TEST_APTITUD_THRESHOLD;
    const pool = aprobado ? TEST_APTITUD.resultados.aprobado : TEST_APTITUD.resultados.suspendido;

    let resultado = pool[0];
    for (const r of pool) {
        if (_testPuntos >= r.minPuntos && _testPuntos <= r.maxPuntos) {
            resultado = r;
            break;
        }
    }

    document.getElementById('test-result-emoji').textContent = resultado.emoji;
    document.getElementById('test-result-titulo').textContent = resultado.titulo;
    document.getElementById('test-result-texto').textContent = resultado.texto;

    const btn = document.getElementById('test-result-btn');
    btn.textContent = resultado.boton;

    if (aprobado) {
        btn.className = 'btn btn--lg btn--start';
        btn.onclick = () => {
            markTestCompleted();
            hideTestScreen();
            showStartScreen();
            renderSeleccionPersonaje();
        };
    } else {
        btn.className = 'btn btn--lg btn--warning';
        btn.onclick = () => {
            showTestScreen(); // reset and restart
        };
    }
}
