<?php
// Calcolo indice reale (step parte da 1)
$idx = $step - 1;


if (!isset($sezioni[$idx])) {
    echo "<p>Errore: sezione non trovata.</p>";
    return;
}

$ssezione = $sezioni[$idx];
$titolo = $ssezione['titolo'];
$domande = $ssezione['domande'];

echo "<h2>" . htmlspecialchars($titolo) . "</h2>";


foreach ($domande as $domanda) {
    $idd = $domanda['id'];
    $testo = $domanda['testo'];
    $tipo = $domanda['tipo'];
    $classe = $domanda['classe'] ?? ''; // Recupera la classe, se definita
    $note = $domanda['note'] ?? ''; // Recupera le note, se definite
    $note = htmlspecialchars($note); // Escape le note per la sicurezza
    $note = str_replace("\n", "<br>", $note); // Sostituisci i ritorni a capo con <br>
    $readonly = $domanda['readonly'] ?? ''; // Recupera l'attributo readonly, se definito
    $visibile_per = $domanda['visibile_per'] ?? []; // Array di tipi azienda per cui il campo è visibile
    $opzioni = $domanda['opzioni'] ?? [];
    $etichette = $domanda['etichette'] ?? $opzioni; // Usa etichette se definite, altrimenti opzioni
    $valore_default = $domanda['valore_default'] ?? ''; // Recupera il valore di default
    $valore = $_SESSION['survey'][$id_utente]['srv_'.$idd] ?? $valore_default; // Usa il valore salvato o il default
    $required = $domanda['required'] ?? false; // Recupera se il campo è obbligatorio
    $step = $domanda['step'] ?? 1; // Recupera il passo della domanda
    $placeholder = $domanda['placeholder'] ?? ''; // Recupera il placeholder, se definito

    // Aggiungi un attributo data-tipo per la visibilità condizionale
    $data_tipo = !empty($visibile_per) ? 'data-tipo="' . implode(' ', $visibile_per) . '"' : '';

    echo "<div class='fieldcontainer' $data_tipo>\n";
    echo "<fieldset style='border: none;'>\n";
    echo "<legend>" . htmlspecialchars($testo) . "</legend>\n";

    if ($tipo === 'group' && isset($domanda['campi'])) {
        // Gestione dei campi raggruppati
        foreach ($domanda['campi'] as $campo) {
            $campo_id = $campo['id'];
            $campo_testo = $campo['testo'];
            $campo_tipo = $campo['tipo'];
            $campo_classe = $campo['classe'] ?? '';
            $campo_valore = $_SESSION['survey'][$id_utente]['srv_'.$campo_id] ?? '';
            $campo_visibile_per = $campo['visibile_per'] ?? [];
            $campo_data_tipo = !empty($campo_visibile_per) ? 'data-tipo="' . implode(' ', $campo_visibile_per) . '"' : '';

            echo "<div class='group-field' $campo_data_tipo>\n";
            echo "<label for=\"srv_$campo_id\">" . htmlspecialchars($campo_testo) . "</label>\n";

            if ($campo_tipo === 'text') {
                echo "<input type=\"text\" name=\"srv_$campo_id\" value=\"" . htmlspecialchars($campo_valore) . "\" style=\"width:100%; padding: 6px;\" class=\"$campo_classe\">";
            }
            // Puoi aggiungere altri tipi di input qui, se necessario

            echo "</div>\n";
        }
    } else {
        // Gestione dei campi non raggruppati
        if($readonly=="readonly") {
            $readonly = "readonly=\"readonly\"";
        } 
        if($required) {
            $classe .= " required";
            $readonly = ""; // Rimuovi readonly se il campo è obbligatorio
            $requiredtxt = "required";
        } else {
            $requiredtxt = "";
        }
        if($placeholder != '')  $placeholder = "placeholder=\"" . htmlspecialchars($placeholder) . "\"";

        switch ($tipo) {
            case 'textarea':
                echo "<textarea name=\"srv_$idd\" $readonly  $requiredtxt rows=\"4\" style=\"width:100%;\" class=\"$classe\">" . htmlspecialchars($valore) . "</textarea>";
                break;

            case 'text':
                echo "<input type=\"text\" $readonly $requiredtxt $placeholder name=\"srv_$idd\" value=\"" . htmlspecialchars($valore) . "\" style=\"width:100%; padding: 6px;\" class=\"$classe\">";
                break;

            case 'number':
                if(!isset($min)) $min = "0";
                if(!isset($step)) $step = "1";
                echo "<input type=\"number\" $readonly $requiredtxt $placeholder min='$min' step='$step' name=\"srv_$idd\" value=\"" . htmlspecialchars($valore) . "\" style=\"width:100%; padding: 6px;\" class=\"$classe\">";
                break;

            case 'radio':
            case 'checkbox':
                foreach ($opzioni as $index => $opzione) {
                    
                    $etichetta = htmlspecialchars($etichette[$index] ?? $opzione); // Usa l'etichetta corrispondente
                    $checked = ($tipo === 'radio' && $valore === $opzione) ? 'checked' : '';
                    $checked = ($tipo === 'checkbox' && is_array($valore) && in_array($opzione, $valore)) ? 'checked' : $checked;

                    echo "<label style=\"display: block; margin-bottom: 5px;\"><input type=\"$tipo\" name=\"srv_$idd" . ($tipo === 'checkbox' ? "[]" : "") . "\" value=\"" . htmlspecialchars($opzione) . "\" $checked> $etichetta</label>";
                }
                break;

            case 'select':
                if (isset($domanda['opzioni'])) {
                    echo "<select name=\"srv_$idd\" style=\"width:100%; padding: 6px;\" class=\"$classe\">";
                    foreach ($domanda['opzioni'] as $opzione) {
                        if(!strstr($opzione, "{{")) {
                           
                        $selected = ($valore === $opzione) ? 'selected' : '';
                        echo "<option value=\"" . htmlspecialchars($opzione) . "\" $selected>" . htmlspecialchars($opzione) . "</option>";
                        
                        } else {
                            echo getOpzioniSurvey($opzione,$_idutente, $valore);
                        }
                    }
                    echo "</select>";
                }
                break;
            case 'upload':
                echo "<div style=\"margin-bottom: 15px;\">\n";
                echo "<label>" . htmlspecialchars($testo) . "</label>\n";
                echo "<iframe src=\"?_SRV=frmuploadC&id_item=$id&idF=$idd&form=frm1&_dest=anagrafica&_idAnag=$id_anag&MSID=$MSID\" style=\"width:100%; height:150px; border:none;\" scrolling=\"no\"></iframe>\n";
                echo "<input type=\"hidden\" name=\"srv_$idd\" value=\"" . htmlspecialchars($valore) . "\">\n";
                echo "</div>\n";
                echo "<div style=\"\">\n";
                $sql = "SELECT * FROM itm_items_files WHERE id_item=$id AND id_anag=$id_anag AND tipo='$idd'";
                $aFiles=$mydbG->DoSelect($sql);
                foreach($aFiles as $r)
                {
                    $ico = "book.png";
                    #if(stristr($r['file'],".pdf")) $ico = "pdf-file.png";
                    #elseif(stristr($r['file'],".zip")) $ico = "zip-file.png";
                    $id_file = $r['id'];
                    $nomefile = $r['file'];
                    if(strlen($nomefile)>30) $nomefile = substr($nomefile,0,30)."...";
                    echo "<div style=\"margin: 5px;\">\n";
                    echo "<a href=\"".$r['path']."\" target=\"_blank\">";
                    echo "<img src=\"main/contents/icone/$ico\" class=\"ico24\" />\n";
                    echo "</a>\n";
                    echo "$nomefile\n";
                    echo "<a href=\"#\" onclick=\"DeleteFile($id_file);return false;\" >";
                    echo "<img src=\"main/contents/icone/cancel.png\" class=\"ico20 fright\" />\n";
                    echo "</a>\n";
                    
                    echo "</div>\n";

                }
                echo "</div>\n";
                break;
        }
    }
    // Mostra le note se presenti
    if (!empty($note)) {
        echo "<div class=\"note\" style=\"margin-top: 5px; font-size: 0.9em; color: #666;\">$note</div>\n";
    }
    

    echo "</fieldset>\n</div>\n\n";
}
echo "<div style=\"clear:both;\"></div>\n";
// Pulsante di invio
$etichetta = ($step < count($sezioni)) ? 'Avanti' : 'Invia';
echo "<button type=\"submit\" class=\"button\">$etichetta</button>\n";

echo "<input type=\"hidden\" name=\"nstep\" value=\"".count($sezioni)."\" />\n";

if($step == count($sezioni)) {
   
if (!isset($_SESSION['submit_token'])) {
    $_SESSION['submit_token'] = bin2hex(random_bytes(32));
}
echo "<input type=\"hidden\" name=\"submit_token\" value=\"".$_SESSION['submit_token']."\" />\n";

}

?>

<script>
document.addEventListener('DOMContentLoaded', function () {
    // Trova tutti i campi con data-tipo
    const fields = document.querySelectorAll('[data-tipo]');

    fields.forEach(field => {
        // Trova il nome del campo di controllo (radio/checkbox/select) più vicino precedente
        let parent = field.previousElementSibling;
        let controlName = null;
        while (parent) {
            const inputs = parent.querySelectorAll('input[type="radio"], input[type="checkbox"], select');
            if (inputs.length > 0) {
                controlName = inputs[0].name;
                break;
            }
            parent = parent.previousElementSibling;
        }
        // Fallback: cerca nel documento
        if (!controlName) {
            const inputs = document.querySelectorAll('input[type="radio"], input[type="checkbox"], select');
            if (inputs.length > 0) {
                controlName = inputs[0].name;
            }
        }
        if (!controlName) return; // Se non trovato, salta

        function updateVisibility() {
            // Gestione radio
            const radioChecked = document.querySelector(`input[type="radio"][name="${controlName}"]:checked`);
            // Gestione checkbox
            const checkboxChecked = document.querySelectorAll(`input[type="checkbox"][name="${controlName}"]:checked`);
            // Gestione select
            const select = document.querySelector(`select[name="${controlName}"]`);

            let selectedValues = [];
            if (radioChecked) {
                selectedValues = [radioChecked.value];
            } else if (checkboxChecked.length > 0) {
                selectedValues = Array.from(checkboxChecked).map(cb => cb.value);
            } else if (select) {
                selectedValues = [select.value];
            }

            const types = field.getAttribute('data-tipo').split(' ');
            // Mostra se almeno uno dei valori selezionati è tra quelli richiesti
            const show = types.some(type => selectedValues.includes(type));
            field.style.display = show ? '' : 'none';
        }

        // Event listener su tutti i controlli
        const radios = document.querySelectorAll(`input[type="radio"][name="${controlName}"]`);
        radios.forEach(radio => radio.addEventListener('change', updateVisibility));
        const checkboxes = document.querySelectorAll(`input[type="checkbox"][name="${controlName}"]`);
        checkboxes.forEach(cb => cb.addEventListener('change', updateVisibility));
        const select = document.querySelector(`select[name="${controlName}"]`);
        if (select) select.addEventListener('change', updateVisibility);

        // Inizializza la visibilità
        updateVisibility();
    });
});
</script>

<script>

    
        function Upload(idF){
            waitpage();
            document.frm1.azione.value = 'upload';
            document.frm1.step.value = <?=$step;?>;
            document.frm1.filestype.value = idF;
            document.frm1.submit();

        }
    
</script>
