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

global $connecteur;

$action = getValue('action');
$no_ao = getValue('no_ao');
$code_fou = getValue('code_fou');
$type_fg = getValue('type_fg');
$c_v = getValue('c_v');
$no_po = getValue('no_po');
$dte_rep = getValue('dte_rep');
$valeur = getValue('valeur');
$ancrage = getValue('ancrage');

switch ($action) {
    case 'popup_choix_four':
        $popup = new AO_Panier_ChoixFour($no_ao);
        $xslt = new GenXslt(true);
        $array = $popup->buildXml();

        $i = 0;

        $minVal = 0; 
        $id_td  = '';

        foreach($array['fournisseurs_ao']['totaux'] as $keyArray => $valArray)
        {
            str_replace(' ', '', $valArray['selection']['!id_td']); 
            
            if($valArray['integraliteNum'] < $minVal || $i == 0)
            {
                $id_td  = $valArray['selection']['!id_td']; 
                //array_push($array['fournisseurs_ao']['totaux'][$i], array('couleur_td' => 'vert'));
            }

            $i++; 
        }
        echo '<script type="javascript">
        console.log("'.$id_td.'"); 
        document.getElementByName("'.$id_td.'").className  = "fondVertSelection";

        </script>';

        

        echo $xslt->XslHtml(AO_Panier_ChoixFour::fichierXsl, $array);
        break;
    
    case 'annuler':
        echo 'window.closePopup();';
        break;
    
    case 'annulerModifications':
        $popup = new AO_Panier_ChoixFour($no_ao);
        $array = $popup->buildXml();
        $genXsl = new GenXslt(true);
        Affichage::innerHTMLPointeur(AO_Panier_ChoixFour::id_main, $genXsl->XslHtml(AO_Panier_ChoixFour::fichierXsl, $array));
        break;
    
    case 'impressionReponses':
        $tousFournisseur = true;
    case 'ConsulterReponse':
        if (!isset($tousFournisseur))
            $tousFournisseur = false;
        if ($result = AO::CallWsdlImprimeReponseAO(utilisateur::getCode(), $no_ao, false, $tousFournisseur, ('F' == $type_fg), $code_fou)) {
            TraitementAsync::PreviewAo($result);
        } else
            Affichage::messageJS(Trad('Une erreur est survenue lors de l\'appel au WSDL OXAPRC_AO_IMP_REPONSE.'));
        break;
    
    case 'ChoixPrix':
    case 'ChoixFournisseur':

        // todo yanis font vert fondVertSelection <= class
        $array = AO_Panier_ChoixFour::getArrayLignAOFour($no_ao, $code_fou, $c_v, $no_po, getValueAll($_REQUEST));
        $arraySelection = $array['selection'];
        $arrayDeselection = $array['deselection'];
        $arrayTotSelection = $array['totSelection'];
  
        // On retire la classe fondVertSelection et on met à jour la valeur
        foreach ($arrayDeselection as & $id) {
            // echo 'document.getElementById("',$id,'").className="";document.getElementById("',mb_str_replace('result_div_', 'result_', $id),'").value=0;';
            Affichage::setAttribut($id, 'className', '');
            Affichage::setValue(mb_str_replace('result_div_', 'result_', $id), 0);
        }
        
        // On ajoute la classe fondVertSelection et on met à jour la valeur
        foreach ($arraySelection as & $id) {
            // echo 'document.getElementById("',$id,'").className="fondVertSelection";document.getElementById("',mb_str_replace('result_div_', 'result_', $id),'").value=1;';
            Affichage::setAttribut($id, 'className', 'fondVertSelection');
            Affichage::setValue(mb_str_replace('result_div_', 'result_', $id), 1);
        }
        
        foreach ($arrayTotSelection as $key => & $value) {
            Affichage::innerHTML('selectionne_' . $key, $value);
            Affichage::setAttribut('selectionne_td_' . $key, 'className', (0 == $value) ? '' : 'fondVertSelection');
        }
        
        break;
    case 'contenuColPrix':
        $prix_ref_bud = ('P' == getValue(AO_Panier_ChoixFour::id_prix_ref_bud)) ? 'B' : 'P';
        $arrayResultat = AO_Panier_ChoixFour::getArrayLigneAOPrxBud($no_ao, $prix_ref_bud);
        $array = $arrayResultat['valeurs'];
        foreach ($array as & $infos) {
            $id = $infos['id'];
            Affichage::innerHTMLPointeur('PRXBUD_' . $id, $infos['value']);
            Affichage::innerHTMLPointeur('TOTAL_' . $id, $infos['total']);
        }
        $array = $arrayResultat['rupture'];
        foreach ($array as & $infos)
            Affichage::innerHTMLPointeur('Rupture_PRXREFBUD_' . $infos['id'], $infos['value']);
        // Mise à jour de l'indicateur hidden
        Affichage::setValue(AO_Panier_ChoixFour::id_prix_ref_bud, $prix_ref_bud);
        // Mise à jour du titre de la colonne
        $libPrixBudget = AO_Panier_ChoixFour::getLibellePrixBudget($prix_ref_bud);
        Affichage::innerHTMLPointeur(AO_Panier_ChoixFour::id_titre_prix_ref_bud, $libPrixBudget);
        break;
    
    case 'AfficheSplit':
        echo 'alert("no_ao : ', $no_ao, ', code_fou=', $code_fou, ', type_fg=', $type_fg, ', c_v=', $c_v, ', no_po=', $no_po, ', dte_rep=', $dte_rep, '");';
        break;
    case 'impressionComparatif':
        $loginAO = utilisateur::getCode();
        if ($result = AO::CallWsdlImprimeTableauAO($loginAO, $no_ao)) {
            TraitementAsync::PreviewAo($result);
        } else
            Affichage::messageJS(Trad('Une erreur est survenue lors de l\'appel au WSDL OXAPRC_AO_COMPMOINSDISANT.'));
        break;
    
    case 'exportExcel':
        $loginAO = utilisateur::getCode();
        $objChoixFour = new AO_Panier_ChoixFour($no_ao);
        $devise = $objChoixFour->getDevise();
        if ($result = AO::CallWsdlExportComparatifExcel($loginAO, $no_ao, $devise)) {
            TraitementAsync::PreviewAo($result);
        } else
            Affichage::messageJS(Trad('Une erreur est survenue lors de l\'appel au WSDL OXAPRC_AO_EXPORT_COMP_EXCEL.'));
        break;
    
    case 'enregistrer':
        $messageErreur = AO_Panier_ChoixFour::enregistrer($no_ao, getValueAll($_REQUEST));
        if ('' != $messageErreur)
            Affichage::messageJS($messageErreur);
        else
            echo 'setTimeout(function() {window.closePopup();}, 0); ', 'if (confirm("' . cnv_to_javascript(Trad('Modifications enregistrées. Voulez-vous valider le choix des fournisseurs retenus')) . ' ?")) ', 'CallUrl(\'gest_AO.php?action=validationChoixFrs&num_ao=' . $no_ao . '\');';
        break;
    
    case 'exclusion':
        $affichageExclus = getValue(AO_Panier_ChoixFour::id_aff_exclus);
        $affichageExclus = 1 - $affichageExclus;
        echo '	function AfficherMasquerFourExclus(myDivId, display) {
					var myDiv = document.getElementById(myDivId);
					var myTable, maxRows, rowCount, idx, jdx;
					if (myDiv) {
						myTable = myDiv.children[0];
						if (myTable) {
							maxRows = myTable.rows.length;
							for (idx = 0 ; idx < maxRows ; idx ++) {
								myRow = myTable.rows[idx];
								rowCount = myRow.cells.length;
								if (rowCount)
									for (jdx = 0 ; jdx < rowCount ; jdx++)
										if (myRow.cells[jdx].id)
											myRow.cells[jdx].style.display = display;
							}
						}
					}
				}
				var display = ("1" == "', $affichageExclus, '")?"":"none";
				// Traitement de la ligne d\'icônes
				AfficherMasquerFourExclus(\'', AO_Panier_ChoixFour::id_div_icones_fou, '\', display);
				// Traitement de la ligne d\'entête
				AfficherMasquerFourExclus(\'', AO_Panier_ChoixFour::id_div_ligne_fou, '\', display);
				// Traitement des lignes d\'ao
				AfficherMasquerFourExclus(\'', AO_Panier_ChoixFour::id_div_entete_fou, '\', display);
				// Traitement des lignes de résultats
				AfficherMasquerFourExclus(\'', AO_Panier_ChoixFour::id_div_totaux_fou, '\', display);
				// On repositionne l\'indicateur
				document.getElementById("', AO_Panier_ChoixFour::id_aff_exclus, '").value = ', $affichageExclus, ';
			';
        break;
    
    case 'choix_panel_tous':
        // Traitement du clic pour sélectionner tout ou rien
        echo '	var value = ("on" == "' . getValue($action) . '");
			var myForm = document.forms["' . (AO_Panier_ChoixFour::id_form) . '"];
			if (myForm) {
				var maxElt     = myForm.elements.length;
				var cptChecked = 0;
				for (var idx = 0 ; idx < maxElt ; idx++) {
					var chkBx = myForm.elements[idx];
					if ("panel_" == chkBx.id.substring(0,6)) {
						chkBx.checked = value;
						cptChecked++;
					}
				}
				// On repositionne l\'indicateur
				document.getElementById("' . (AO_Panier_ChoixFour::id_nb_ligne_panel) . '").innerHTML = (value)?cptChecked:0;
			}';
        // Puis on rafraîchit le tableau
        echo AO_Panier_ChoixFour::getJSActionRafraichirTableau($no_ao);
        break;
    
    case 'rafraichirTableau':
        $choixPanel = getValue(AO_Panier_ChoixFour::id_choix_panel);
        $switch_compl = getValue('switch_compl');
        $affichageCompl = getValue(AO_Panier_ChoixFour::id_aff_complement);
        if ($switch_compl)
            $affichageCompl = ('0' == $affichageCompl) ? '1' : '0';
        
        echo '	var myForm = document.forms["', AO_Panier_ChoixFour::id_form, '"];
				if (myForm) {
					var maxElt     = myForm.elements.length;
					var cptChecked = 0;
					for (var idx = 0 ; idx < maxElt ; idx++) {
						var chkBx = myForm.elements[idx];
						if ("panel_" == chkBx.id.substring(0,6)) {
							var id_ligne_ao        = "ligne_"     + chkBx.id;
							var id_ligne_result    = "result_"    + chkBx.id;
							var num_id             = chkBx.id.substring(6);
							var id_ligne_ao_compl  = "compl_"     + num_id;
							var id_ligne_res_compl = "compl_fou_" + num_id;
				
							var valChk          = chkBx.checked;
							cptChecked += (valChk)?1:0;
							switch("', $choixPanel, '") {
								case "T":
									document.getElementById(id_ligne_ao).style.display = "table-row";
                                    if(document.getElementById(id_ligne_result)){
                                        document.getElementById(id_ligne_result).style.display = "table-row";
                                    }
                                    document.getElementById(id_ligne_ao_compl).style.display = (1 == ' . $affichageCompl . ')?"table-row":"none";
                                    if(document.getElementById(id_ligne_res_compl)){
                                        document.getElementById(id_ligne_res_compl).style.display = (1 == ' . $affichageCompl . ')?"table-row":"none";
                                    }
									break;
								case "P":
									document.getElementById(id_ligne_ao).style.display = (valChk)?"table-row":"none";
                                    if(document.getElementById(id_ligne_result)){
                                        document.getElementById(id_ligne_result).style.display = (valChk)?"table-row":"none";
                                    }
									document.getElementById(id_ligne_ao_compl).style.display = (1 == ' . $affichageCompl . ' && valChk)?"table-row":"none";
                                    if(document.getElementById(id_ligne_res_compl)){
                                        document.getElementById(id_ligne_res_compl).style.display = (1 == ' . $affichageCompl . ' && valChk)?"table-row":"none";
                                    }
									break;
								case "H":
									document.getElementById(id_ligne_ao).style.display = (valChk)?"none":"table-row";
                                    if(document.getElementById(id_ligne_result)){
                                        document.getElementById(id_ligne_result).style.display = (valChk)?"none":"table-row";
                                    }
									document.getElementById(id_ligne_ao_compl).style.display = (1 == ' . $affichageCompl . ' && !valChk)?"table-row":"none";
                                    if(document.getElementById(id_ligne_res_compl)){
                                        document.getElementById(id_ligne_res_compl).style.display = (1 == ' . $affichageCompl . ' && !valChk)?"table-row":"none";
                                    }
									break;
							}
						}
					}
					document.getElementById("' . (AO_Panier_ChoixFour::id_nb_ligne_panel) . '").innerHTML = cptChecked;
					document.getElementById("', AO_Panier_ChoixFour::id_aff_complement, '").value="', $affichageCompl, '";
				}';
        break;
    
    //
    // Getsion du bloc-note
    //
    case 'blocNotes': // Affichage
        $popup = new AO_Panier_ChoixFour_BlocNote($no_ao);
        $xslt = new GenXslt(true);
        $array = $popup->buildXml();
        echo $xslt->XslHtml(AO_Panier_ChoixFour::fichierXsl, $array);
        break;
    
    case 'checkNote': // Vérification
        $resultat = AO_Panier_ChoixFour_BlocNote::checkValue(getValueAll($_REQUEST));
        $messageErreur = $resultat['messageErreur'];
        if ('' != $messageErreur)
            Affichage::messageJS($messageErreur);
        break;
    
    case 'enregistrerNote': // Enregistrement WSDL
        $zoneNote = getValue('zoneNote');
        $resultat = AO_Panier_ChoixFour_BlocNote::Wsdl($no_ao, $zoneNote);
        if ('O' == $resultat['Statut'])
            echo 'window.closePopup();';
        else
            echo Affichage::messageJS($resultat['Erreur']);
        
        break;
}

$connecteur->disconnect();