<?php
//
// Spec 3615 Formulaire générique de recherche avancée
//
require_once 'application/class/class_ManageSession.php';

global $connecteur;

$action = getValue('action');
$ancrage = getValue('ancrage');
$popup_id = getValue('popup_id');
$filtre1 = getValue('filtre1');
$filtre2 = getValue('filtre2');
$filtre3 = getValue('filtre3');

// $gestionFounisseur = 'application/xsl/GestionFournisseurs.xsl';

switch ($action) {
    //
    // Gestion de la recherche simple
    //
    case 'AfficherRechercheSimple':
        // Lorsqu'on arrive sur la page, on efface les données de recherche avancée
        RechercheAvanceeGene::VideSauvegarde($popup_id);
        
        // Préparation des de l'affichage de la recherche simple
        switch ($popup_id) {
            case RechercheAvanceeGestionFournisseurs::$popup_id:
                $array = RechercheAvanceeGestionFournisseurs::BuildXmlFormulaire();
                break;
            case RechercheAvanceeGestFourniss::$popup_id:
                RechercheAvanceeGestFourniss::InitCriteresParDefaut($filtre1, $filtre2, $filtre3);
                $array = RechercheAvanceeGestFourniss::BuildXmlFormulaire($filtre1, $filtre3);
                
                break;
            case RechercheAvanceeGroupementFournisseurs::$popup_id:
                $array = RechercheAvanceeGroupementFournisseurs::BuildXmlFormulaire();
                break;
            default:
                break;
        }
        
        $sqlFrs = new SqlFrs();
        $array['shortList'] = $sqlFrs->rqGetAllShortListForSearch()->TrouveTous();
        $array['countShortList'] = count($array['shortList']);
        $array['!action'] = $action;
        $array['!popup_id'] = $popup_id;
        $arrayTmp['ide'] = & $array;
        
        // Affichage du formulaire
        $genXsl = new GenXslt(true);
        Affichage::innerHTMLPointeur($ancrage, $genXsl->XslHtml(RechercheAvanceeGeneAffichage::$fichier_xml, $arrayTmp));
        
        // On place le focus sur dans la case de recherche
        // Affichage::setFocusOnElement(RechercheAvanceeGeneAffichage::$idStrRecherche);
        
        // Pour l'affichage du résultat par l'objet Browse
        // on prépare les donnnées
        switch ($popup_id) {
            case RechercheAvanceeGestionFournisseurs::$popup_id:
                $monBrowse = RechercheAvanceeGestionFournisseurs::PrepareBrowse();
                break;
            case RechercheAvanceeGestFourniss::$popup_id:
                $monBrowse = RechercheAvanceeGestFourniss::PrepareBrowse();
                break;
            case RechercheAvanceeGroupementFournisseurs::$popup_id:
                $monBrowse = RechercheAvanceeGroupementFournisseurs::PrepareBrowse();
                break;
        }
        
        Affichage::innerHTMLPointeur('ResultatRecherche', $genXsl->XslHtml('application/xsl/template_browse/browseCore.xsl', $monBrowse->getArrayXmlForXsl()));
        
        // On envoie l'action de recherche pour la recherche à vide
        PopupBrowse::execSearch('btnRechercherSimple', true);
        
        break;
    case 'MiseAJourCriteresDefaut':
        switch ($popup_id) {
            case RechercheAvanceeGestFourniss::$popup_id:
                $monBrowse = RechercheAvanceeGestFourniss::MiseAJourCriteresParDefaut(getValueAll($_REQUEST));
                break;
        }
    
    // break;
    case 'search':
    case 'AfficherResultatSimple':
        // On envoie la présentation standard des listes fournisseurs
        switch ($popup_id) {
            case RechercheAvanceeGestionFournisseurs::$popup_id:
                echo RechercheAvanceeGestionFournisseurs::JavascriptAfficherResultat();
                break;
            case RechercheAvanceeGestFourniss::$popup_id:
                echo RechercheAvanceeGestFourniss::JavascriptAfficherResultat();
                break;
            case RechercheAvanceeGroupementFournisseurs::$popup_id:
                echo RechercheAvanceeGroupementFournisseurs::JavascriptAfficherResultat();
                break;
        }
        break;
    
    //
    // Gestion de la recherche avancée
    //
    case 'AfficherRechercheAvancee':
        $array = RechercheAvanceeGene::BuildXmlFormulaireRechercheAvancee($popup_id);
        $array['ide']['!action'] = & $action;
        $genXsl = new GenXslt(true);
        Affichage::innerHTMLPointeur($ancrage, $genXsl->XslHtml(RechercheAvanceeGeneAffichage::$fichier_xml, $array));
        break;
    
    case 'AfficherLigneRechercheAvancee':
        $codeValeur = getValue('codeValeur');
        $typeValeur = getValue('typeValeur');
        
        $critere = new RechAvGeneEtatLigne($popup_id);
        $critere->SetChamp($codeValeur);
        $critere->SetOperateur($typeValeur);
        
        $ecranRechercheAvancee = new RechercheAvanceeGene($popup_id);
        $prepareXml = true;
        $arrayResultat = $ecranRechercheAvancee->GereLigneRechercheAvancee($ancrage, $codeValeur, $typeValeur, null, $prepareXml);
        $ecranRechercheAvancee->Sauver();
        
        if ($arrayResultat['js1'] != '') {
            echo $arrayResultat['js1'];
        } else {
            Affichage::innerHTMLPointeur($ancrage . '_slot', $arrayResultat['xml1']);
            echo $arrayResultat['js2'], $arrayResultat['js3'];
            Affichage::innerHTMLPointeur($arrayResultat['idAAjouter'] . '_slot', $arrayResultat['xml2']);
        }
        
        break;
    case 'AfficherResultatAvance':
        $ecranRechercheAvancee = new RechercheAvanceeGene($popup_id);
        $ecranRechercheAvancee->MiseAJourEtat(getValueAll($_REQUEST));
        
        // On échange les écrans de recherche simple et recherche avancée pour voir les réultats
        echo 'RechAvGen_AfficherRechercheSimple();';
        Affichage::setValue(RechercheAvanceeGeneAffichage::$idStrRecherche, "");
        
        // On met à jour les deux critère de la barre de recherche, si besoin est.
        $critereTypeFournisseur = 'TYPE_FOUR';
        $typeFournisseur = $ecranRechercheAvancee->GetValeurCritere($critereTypeFournisseur);
        if ('' != $typeFournisseur)
            Affichage::setValue('type_four', $typeFournisseur);
        
        $critereValiditeDocument = 'DOC_FOUR_VALIDITE';
        $validiteDocument = $ecranRechercheAvancee->GetValeurCritere($critereValiditeDocument);
        if ('' != $validiteDocument)
            Affichage::setValue('valid_doc', $validiteDocument);
        
        // On envoie la liste de résultats
        switch ($popup_id) {
            case RechercheAvanceeGestionFournisseurs::$popup_id:
                echo RechercheAvanceeGestionFournisseurs::JavascriptAfficherResultat();
                break;
            case RechercheAvanceeGestFourniss::$popup_id:
                echo RechercheAvanceeGestFourniss::JavascriptAfficherResultat();
                break;
            case RechercheAvanceeGroupementFournisseurs::$popup_id:
                echo RechercheAvanceeGroupementFournisseurs::JavascriptAfficherResultat();
                break;
        }
        break;
    case 'SupprimeCritereRechAv':
        $id = getValue('id');
        if ('tous' != $id) {
            
            // On supprime en mémoire
            $ecranRechercheAvancee = new RechercheAvanceeGene($popup_id);
            $eltSupprime = $ecranRechercheAvancee->SupprimerLaLigne($id);
            
            // Selon l'écran de recherche, on remplace certaines valeurs à la valeur par défaut.
            switch ($popup_id) {
                case RechercheAvanceeGestFourniss::$popup_id:
                    switch ($eltSupprime->getChamp()) {
                        case 'TYPE_FOUR':
                            Affichage::setValue('type_four', 'ALL');
                            break;
                        case 'FOUR_VALIDITE':
                            Affichage::setValue('valid_four', 'ALL');
                            break;
                    }
                    break;
            }
            
            // On prépare la relance de recherche
            // On supprime le critère et on relance la recherche
            if ($ecranRechercheAvancee->ExisteCriteres()) {
                echo 'RechAvGen_SupprimerCritere("', $id, '");';
            } else {
                echo 'RechAvGen_SupprimerTousCriteres();';
            }
            // Si on trouve le bouton de rehcerche avancée, on clique dessus, sion on essaie sur le bout de recherce simple
            echo 'var btnRA = document.getElementById(\'btnRechercherAvance\');if (btnRA){btnRA.onclick();}else {var btnRS = document.getElementById(\'btnRechercherSimple\');if (btnRS){btnRS.onclick();}}';
        } else {
            // On supprime tous les critères en mémoire
            RechercheAvanceeGene::VideSauvegarde();
            
            // Selon l'écran de recherche, on remplace certaines valeurs à la valeur par défaut.
            switch ($popup_id) {
                case RechercheAvanceeGestFourniss::$popup_id:
                    Affichage::setValue('type_four', 'ALL');
                    Affichage::setValue('valid_four', 'ALL');
                    break;
            }
            
            // On supprime les critères et on relance la recherche
            echo 'RechAvGen_SupprimerTousCriteres();';
            PopupBrowse::execSearch("btnRechercherSimple", true);
        }
        break;
}

$connecteur->disconnect();
exit();