<?php
require_once 'application/class/class_ManageSession.php';

global $connecteur;

$action = getValue('action');
$no_ao = getValue('no_ao');
$type_elt = getValue('type_elt');
$modeEdition = getValue('modeEdition'); // Mode du questionnaire : (A)jout (S)uppression (M)odification
$mode = getValue('mode'); // Mode la fiche AO : (L) pour lecture ou (L/E) pour lecture / écritire
$id_pere = getValue('id_pere');
$id = getValue('id');
$objet = getValue('OBJECT');
$divResultat = getValue('divResultat');
$source = getValue('source');

$format = getValue('_format');
$val = getValue('val');

switch ($action) {
    case 'AffichePopup':
        $popup = new AO_Bibliotheque();
        $xslt = new GenXslt(true);
        $array = $popup->buildXml($action, $no_ao, $modeEdition, $divResultat, $mode, $type_elt, $id_pere, $id);
        echo $xslt->XslHtml(AO_Bibliotheque::fichierXsl, $array);
        echo '<script type="text/javascript">';
        Affichage::displayElement(AO_Bibliotheque::idDivRepListe, false);
        Affichage::displayElement(AO_Bibliotheque::idDivRepLog, false);
        Affichage::displayElement(AO_Bibliotheque::idDivRepNum, false);
        switch ($array['form']['TYPE_REPONSE']['!value']) {
            case 'L':
                Affichage::displayElement(AO_Bibliotheque::idDivRepLog, true);
                break;
            case 'N':
                Affichage::displayElement(AO_Bibliotheque::idDivRepNum, true);
                break;
            case 'T':
                Affichage::displayElement(AO_Bibliotheque::idDivRepListe, true);
                echo 'TraiteUrlAsync("', AO_Bibliotheque::fichierPhp, '?action=AfficheListeReponses&no_ao=' . $no_ao . '&id_pere=' . $id_pere . '&id=' . $id . '&source=xml", document.forms["', AO_Bibliotheque::idForm, '"].elements[0]);';
                break;
        }
        echo '</script>';
        break;
    
    case 'Valider':
        $resultXml = AOQuestionnaireXml::SetFiche($no_ao);
        if ('O' != $resultXml['Statut'])
            Affichage::messageJS($resultXml['MsgErreur']);
        else {
            echo 'setTimeout(function() {window.closePopup();}, 0);';
            echo 'setTimeout(function() {parent.CallUrl("' . AO_Questionnaire::fichierPhp . '?action=rafraichirAffichage&no_ao=' . $no_ao . '&id=' . $id . '&ancrage=' . $divResultat . '&mode=' . $mode . '");}, 0);';
        }
        break;
    
    case 'checkValue':
        $resultat = AO_Bibliotheque::checkValue($id_pere, $id, $objet, $format, $val);
        $messageErreur = $resultat['messageErreur'];
        $valeurModifiee = $resultat['valeurModifiee'];
        if ('' != $messageErreur) {
            Affichage::messageJS($messageErreur);
            Affichage::setValue($objet, '');
        }
        if ('' != $valeurModifiee) {
            Affichage::setValue($objet, $valeurModifiee);
        }
        break;
    
    case 'ChangeType': // Changement du type de réponse : Logique, numérique ou liste de valeurs
                       // On modifie la valeur dans le xml
        $resultat = AO_Bibliotheque::checkValue($id_pere, $id, $objet, $format, $val);
        // On met à jour l'affichage
        Affichage::displayElement(AO_Bibliotheque::idDivRepListe, false);
        Affichage::displayElement(AO_Bibliotheque::idDivRepLog, false);
        Affichage::displayElement(AO_Bibliotheque::idDivRepNum, false);
        switch ($val) {
            case 'L':
                Affichage::displayElement(AO_Bibliotheque::idDivRepLog, true);
                break;
            case 'N':
                Affichage::displayElement(AO_Bibliotheque::idDivRepNum, true);
                break;
            case 'T':
                Affichage::displayElement(AO_Bibliotheque::idDivRepListe, true);
                // Traitement spécial pour l'affichage de la liste des réponses
                echo 'TraiteUrlAsync("', AO_Bibliotheque::fichierPhp, '?action=AfficheListeReponses&no_ao' . $no_ao . '&id_pere=' . $id_pere . '&id=' . $id . '&source=request", document.forms["', AO_Bibliotheque::idForm, '"].elements[0]);';
                break;
        }
        break;
    
    //
    // Gestion de la liste des réponses
    //
    case 'AfficheListeReponses':
    case 'AjouterReponse':
    case 'SupprimerReponse':
        $xslt = new GenXslt(true);
        $array = AO_Bibliotheque_ListeReponses::buildXml($no_ao, $id_pere, $id, $action, $source, getValueAll($_REQUEST));
        $xml = $xslt->XslHtml(AO_Bibliotheque_ListeReponses::fichierXsl, $array);
        Affichage::innerHTMLPointeur(AO_Bibliotheque::idDivRepListe, $xml);
        break;
    default:
        echo 'alert(\'Action non gérée : ', $action, '\');';
        break;
}