document.addEventListener('DOMContentLoaded', () => {

    // ========== NAVIGAZIONE SIDEBAR ==========
    const sidebarLinks = document.querySelectorAll('.sidebar-link[data-section]');
    const sections = document.querySelectorAll('.content-section');
    const pageTitle = document.getElementById('pageTitle');

    const sectionTitles = {
        'dashboard': 'Dashboard',
        'incidents': 'Registro Incidenti',
        'ai-consultant': 'AI Security Consultant'
    };

    function switchSection(sectionId) {
        // Nascondi tutte le sezioni
        sections.forEach(s => s.classList.remove('active'));
        // Mostra quella selezionata
        const target = document.getElementById('section-' + sectionId);
        if (target) target.classList.add('active');
        // Aggiorna link attivo nella sidebar
        sidebarLinks.forEach(l => l.classList.remove('active'));
        const activeLink = document.querySelector(`.sidebar-link[data-section="${sectionId}"]`);
        if (activeLink) activeLink.classList.add('active');
        // Aggiorna titolo top bar
        if (pageTitle && sectionTitles[sectionId]) {
            pageTitle.textContent = sectionTitles[sectionId];
        }
    }

    // Click sui link della sidebar
    sidebarLinks.forEach(link => {
        link.addEventListener('click', function(e) {
            e.preventDefault();
            const section = this.dataset.section;
            switchSection(section);
        });
    });

    // Click su "Vedi tutti" nella dashboard per andare alla sezione incidenti
    document.querySelectorAll('[data-goto]').forEach(link => {
        link.addEventListener('click', function(e) {
            e.preventDefault();
            switchSection(this.dataset.goto);
        });
    });

    // ========== CONSIGLI AI (Task 2 - Switch/If) ==========
    const defaultAdvice = {
        'Brute Force': 'Attivare 2FA e bloccare IP dopo 3 tentativi falliti.',
        'SQL Injection': 'Utilizzare Prepared Statements (PDO) e sanitizzare gli input.',
        'Port Scanning': 'Verificare le regole del firewall e limitare le porte esposte.',
        'DDoS Attack': 'Contattare il provider per attivare protezione DDoS e limitare il traffico.',
        'XSS Payload': 'Attivare Content-Security-Policy e validare output con htmlspecialchars.',
        'Malware Callback': "Isolare immediatamente l'host e avviare scansione antivirus.",
        'Unauthorized Login': 'Forzare il reset password e verificare i log di accesso.',
        'Data Exfiltration': 'Bloccare il traffico in uscita verso indirizzi sospetti e avviare indagine forense.',
        'Local Privilege Escalation': 'Rivedere i permessi degli utenti e applicare patch di sicurezza.',
        'ARP Spoofing': 'Abilitare il Dynamic ARP Inspection sugli switch.',
        'Botnet Activity': 'Analizzare il traffico di rete e bloccare i domini C&C noti.',
        'SSH Tunneling': 'Disabilitare il tunneling SSH non autorizzato e monitorare le connessioni.',
        'Phishing Link Click': "Resettare le credenziali dell'utente coinvolto e formare il personale.",
        'Credential Stuffing': 'Implementare rate limiting e controllare la presenza di credenziali violate.',
        'Dictionary Attack': 'Allungare i lockout account e utilizzare password complesse.'
    };

    // Click sulla riga della tabella incidenti -> mostra modale con consiglio
    document.querySelectorAll('.incident-row').forEach(row => {
        row.addEventListener('click', function(e) {
            // Evitiamo che il click sul pulsante PDF apra il modale
            if (e.target.tagName === 'A' || e.target.closest('a')) return;
            const tipo = this.dataset.tipo;
            const id = this.dataset.id;
            const ip = this.dataset.ip;
            const msg = defaultAdvice[tipo] || 'Nessun consiglio disponibile per questa minaccia.';
            const adviceText = document.getElementById('adviceText');
            adviceText.innerHTML = '<strong>' + id + '</strong> — ' + tipo + ' (<code>' + ip + '</code>)<br><br>' + msg;
            const modal = new bootstrap.Modal(document.getElementById('adviceModal'));
            modal.show();
        });
    });

    // ========== PROMPT AI (Task 3 - Area Prompt) ==========
    const askBtn = document.getElementById('askAiBtn');
    if (askBtn) {
        askBtn.addEventListener('click', async () => {
            const ip = document.getElementById('ipPrompt').value.trim();
            if (!ip) {
                alert('Inserisci un indirizzo IP');
                return;
            }
            const respDiv = document.getElementById('aiResponse');
            respDiv.style.display = 'block';
            respDiv.textContent = 'Analisi in corso...';
            try {
                const resp = await fetch('../backend/api/ask_ai.php', {
                    method: 'POST',
                    headers: { 'Content-Type': 'application/json' },
                    body: JSON.stringify({ ip: ip })
                });
                const data = await resp.json();
                respDiv.textContent = data.response || 'Nessuna risposta.';
            } catch (err) {
                respDiv.textContent = 'Errore di connessione con il server AI.';
            }
        });
    }
});