/**
  * Affiche le detail de l'adresse avec le listing des événements associés
  *
  * @param unknown $idAdresse : Id de l'adresse a afficher
  *
  * @return HTML du contenu principal de la page
  */
 public function afficherDetailAdresse($idAdresse, $idEvenementGroupeAdresse)
 {
     /*
      * Etape :
      * Afficher la google map
      * Afficher le sommaire des evenements
      * Récupérer la liste des evenements et les afficher un par un
      *
      */
     //Template loading
     $this->messages->display();
     $t = new Template('modules/archi/templates/evenement');
     $t->set_filenames(array('index' => 'index.tpl'));
     $title = $this->displayTitle();
     //Init auth var to check furtherly user state (connected or not)
     $authentification = new archiAuthentification();
     //Setting idAdresse
     if (isset($idAdresse) && $idAdresse != '') {
         //Setting idEvenementGroupeAdresse
         if (isset($idEvenementGroupeAdresse) != 1 || $idEvenementGroupeAdresse == '') {
             $requete = "SELECT idEvenement FROM _adresseEvenement WHERE idAdresse = " . $idAdresse;
             $result = $this->connexionBdd->requete($requete);
             $fetch = mysql_fetch_assoc($result);
             $oldIdEvt = $idEvenementGroupeAdresse;
             $idEvenementGroupeAdresse = $fetch['idEvenement'];
         }
     }
     //Getting coordo for the current address
     $requete = "SELECT latitude , longitude FROM historiqueAdresse WHERE idAdresse = " . $idAdresse;
     $result = $this->connexionBdd->requete($requete);
     $fetch = mysql_fetch_assoc($result);
     $coordonnees['longitude'] = $fetch['longitude'];
     $coordonnees['latitude'] = $fetch['latitude'];
     //Displaying google map
     $e = new archiEvenement();
     //Should be moved to archiUtils
     $calqueGoogleMap = new calqueObject(array('idPopup' => 10));
     $contenuIFramePopup = $e->getContenuIFramePopupGoogleMap(array('idAdresseCourante' => $idAdresse, 'calqueObject' => $calqueGoogleMap, 'idEvenementGroupeAdresseCourant' => $idEvenementGroupeAdresse));
     $t->assign_block_vars('CarteGoogle', array('src' => $this->creerUrl('', 'afficheGoogleMapIframe', array('noHeaderNoFooter' => 1, 'longitude' => $coordonnees['longitude'], 'latitude' => $coordonnees['latitude'], 'archiIdAdresse' => $idAdresse, 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse)), 'lienVoirCarteGrand' => "<a href='#' onclick=\"" . $calqueGoogleMap->getJsOpenPopupNoDraggableWithBackgroundOpacity() . "document.getElementById('iFrameDivPopupGM').src='" . $this->creerUrl('', 'afficheGoogleMapIframe', array('longitude' => $coordonnees['longitude'], 'latitude' => $coordonnees['latitude'], 'noHeaderNoFooter' => true, 'archiIdAdresse' => $idAdresse, 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse, 'modeAffichage' => 'popupDetailAdresse')) . "';\" class='bigger' style='font-size:11px;'>" . _("Voir la carte en + grand") . "</a>", 'popupGoogleMap' => $calqueGoogleMap->getDivNoDraggableWithBackgroundOpacity(array('top' => 20, 'lienSrcIFrame' => '', 'contenu' => $contenuIFramePopup))));
     //Getting neighborhood addresses
     $arrayEncartAdresses = $this->getArrayEncartAdressesImmeublesAvantApres(array('idEvenementGroupeAdresse' => $idEvenementGroupeAdresse));
     $urlAutreBiens = $this->getArrayRetourLiensVoirBatiments($idAdresse);
     $t->assign_block_vars('listeAdressesVoisines', array('content' => $arrayEncartAdresses['html'], 'urlAutresBiensRue' => $urlAutreBiens['urlAutresBiensRue'], 'urlAutresBiensQuartier' => $urlAutreBiens['urlAutresBiensQuartier']));
     $t->assign_block_vars('sommaireEvenements', array());
     //Preparing the loop on all related event to the current address
     $requeteIdEvenements = "\n\t\t\t\tSELECT DISTINCT ee.idEvenementAssocie as idEvenement\n\t\t\t\tFROM _evenementEvenement ee\n\t\t\t\tLEFT JOIN positionsEvenements pe on pe.idEvenement = ee.idEvenementAssocie\n\t\t\t\tWHERE ee.idEvenement = {$idEvenementGroupeAdresse}\n\t\t\t\tORDER BY IF(pe.position IS NULL,0, pe.position) ASC\n\t\t\t\t";
     $resultIdEvenements = $this->connexionBdd->requete($requeteIdEvenements);
     //Add actions buttons
     //Ajouter sous evenement
     $t->assign_block_vars('actionsSommaire', array('urlAction' => $this->creerUrl('', 'ajouterSousEvenement', array('idAdresse' => $idAdresse, 'archiIdEvenement' => $idEvenementGroupeAdresse)), 'labelAction' => 'Ajouter un événement'));
     // Selection des images
     // Copy/paste code from old function
     $afficheSelectionImages = 1;
     if ($authentification->estConnecte() && isset($this->variablesGet['afficheSelectionImage']) && $this->variablesGet['afficheSelectionImage'] == '1') {
         $afficheSelectionImages = 0;
     }
     if ($authentification->estConnecte()) {
         if ($authentification->estAdmin()) {
             $t->assign_block_vars('actionsSommaire', array('urlAction' => $this->creerUrl('', 'evenement', array('idEvenement' => $idEvenementGroupeAdresse, 'archiIdAdresse' => $idAdresse, 'afficheSelectionImage' => $afficheSelectionImages)), 'labelAction' => 'Sélectionner des images'));
         }
     }
     // Selection de l'image principale
     $afficheSelectionImagePrincipale = 1;
     /*
     if ($authentification->estConnecte () && isset ( $this->variablesGet ['afficheSelectionImagePrincipale'] ) && $this->variablesGet ['afficheSelectionImagePrincipale'] == '1') {
     	$afficheSelectionImagePrincipale = 0;
     }
     */
     if ($authentification->estConnecte()) {
         if ($authentification->estAdmin()) {
             $t->assign_block_vars('actionsSommaire', array('urlAction' => $this->creerUrl('', 'evenement', array('idEvenement' => $idEvenementGroupeAdresse, 'archiIdAdresse' => $idAdresse, 'afficheSelectionImagePrincipale' => $afficheSelectionImagePrincipale)), 'labelAction' => 'Sélectionner l\'image principale'));
         }
     }
     // Selection du titre
     $afficheSelectionTitre = 1;
     /*
     if ($authentification->estConnecte () && isset ( $this->variablesGet ['afficheSelectionTitre'] ) && $this->variablesGet ['afficheSelectionTitre'] == '1') {
     	$afficheSelectionTitre = 0;
     }
     */
     if ($authentification->estConnecte()) {
         if ($authentification->estAdmin()) {
             $t->assign_block_vars('actionsSommaire', array('urlAction' => $this->creerUrl('', 'evenement', array('idEvenement' => $idEvenementGroupeAdresse, 'archiIdAdresse' => $idAdresse, 'afficheSelectionTitre' => $afficheSelectionTitre)), 'labelAction' => 'Sélectionner un titre'));
         }
     }
     // Repositionner les evenements
     $affichePositionnementEvenements = 1;
     if ($authentification->estConnecte() && isset($this->variablesGet['affichePositionnementEvenements']) && $this->variablesGet['affichePositionnementEvenements'] == '1') {
         $affichePositionnementEvenements = 0;
         $a = new archiEvenement();
         $imageObject = new imageObject();
         // objet image du framework
         $a->addToJsHeader($imageObject->getJSFunctionsDragAndDrop(array('withBalisesScript' => true)));
         // rajoute les fonctions de deplacement d'elements dans le header du formulaire
     }
     if ($authentification->estConnecte()) {
         if ($authentification->estAdmin()) {
             $t->assign_block_vars('actionsSommaire', array('urlAction' => $this->creerUrl('', 'evenement', array('archiIdAdresse' => $idAdresse, 'idEvenement' => $idEvenementGroupeAdresse, 'archiIdAdresse' => $idAdresse, 'affichePositionnementEvenements' => $affichePositionnementEvenements)), 'labelAction' => 'Repositionner les événements'));
         }
     }
     //Loop on all evenet related to this idAdresse specified in argument of this function
     while ($fetch = mysql_fetch_assoc($resultIdEvenements)) {
         //Getting all the infos with this method
         $evenement = $e->getEventInfos($fetch['idEvenement']);
         $result = $e->displaySingleEvent($evenement);
         $t->assign_block_vars('event', array('content' => $result));
         //Filling the template with the infos
         $t->assign_block_vars('evenement', $evenement['evenementData']);
         $titre = stripslashes($evenement['evenementData']['titre']);
         if (isset($evenement['evenementData']['titre']) && $evenement['evenementData']['titre'] != "") {
             $titre .= " - ";
         }
         $ancre = "#evenement" . $evenement['evenementData']['idEvenement'];
         $t->assign_block_vars('sommaireEvenements.sommaireItem', array('ancre' => $ancre, 'titre' => $titre, 'date' => $evenement['evenementData']['dates']));
     }
     //Getting all the miscellaneous images (vueSur / prisDepuis)
     $image = new archiImage();
     $idVueSur = $image->getIdImageVueSur($idEvenementGroupeAdresse);
     $idPrisDepuis = $image->getidImagePrisDepuis($idEvenementGroupeAdresse);
     if (!empty($idVueSur)) {
         $evenementVueSur = $image->getEventInfosMiscImage($idVueSur, $idAdresse, "Autres vues sur");
         $t->assign_block_vars('evenement', $evenementVueSur);
     }
     if (!empty($idPrisDepuis)) {
         $evenementPrisDepuis = $image->getEventInfosMiscImage($idPrisDepuis, $idAdresse, "Vues prises depuis");
         $t->assign_block_vars('evenement', $evenementPrisDepuis);
     }
     $listeCommentaires = $this->getListeCommentaires($idEvenementGroupeAdresse);
     $formulaireCommentaire = $e->getFormComment($idEvenementGroupeAdresse, $this->getCommentairesFields(), '');
     $s = new archiSource();
     $t->assign_vars(array('title' => $title, 'listeCommentairesAdresse' => $listeCommentaires, 'formulaireCommentaireAdresse' => $formulaireCommentaire, 'popupDescriptionSource' => $s->getPopupDescriptionSource()));
     ob_start();
     $t->pparse('index');
     $html .= ob_get_contents();
     ob_end_clean();
     return $html;
 }
 /**
  * Affichage de la liste des image dans le formulaire de modif de position
  *
  * @param array $params Paramètres
  *
  * @return string HTML
  * */
 public function afficheFormulaireModifPosition($params = array())
 {
     $html = "";
     $imageObj = new imageObject();
     $adresse = new archiAdresse();
     $html .= "<h1>Position des images</h1><br>";
     $evenement = new archiEvenement();
     // affichages des recapitulatifs en haut de la page ( adresse + titres des evenements)
     $idEvenementGroupeAdresse = $evenement->getParent($this->variablesGet['archiIdEvenement']);
     $html .= $adresse->afficherRecapitulatifAdresses($idEvenementGroupeAdresse);
     $html .= $evenement->afficherRecapitulatifAncres($idEvenementGroupeAdresse, $params['idEvenement']);
     $html .= $evenement->afficherLiensModificationEvenement($params['idEvenement']);
     $html .= "Deplacez les images par drag and drop.";
     $html .= "<script>" . $imageObj->getJSFunctionsDragAndDrop() . "</script>";
     $reqImages = $this->getImagesFromEvenement(array('idEvenement' => $params['idEvenement'], 'select' => "hi1.idHistoriqueImage as idHistoriqueImage,  hi1.dateUpload as dateUpload"));
     $resImages = $this->connexionBdd->requete($reqImages);
     while ($fetch = mysql_fetch_assoc($resImages)) {
         $imageObj->addImageDragAndDrop(array('imageSrc' => 'resizeImage.php?id=' . $fetch['idHistoriqueImage'], 'idHistoriqueImage' => $fetch['idHistoriqueImage']));
     }
     $reqAdresses = $adresse->getIdAdressesFromIdEvenement(array('idEvenement' => $params['idEvenement']));
     $resAdresses = $this->connexionBdd->requete($reqAdresses);
     $idAdresse = 0;
     if (mysql_num_rows($resAdresses) > 0) {
         $fetchAdresses = mysql_fetch_assoc($resAdresses);
         $idAdresse = $fetchAdresses['idAdresse'];
     }
     $html .= "<form action='" . $this->creerUrl('enregistrePositionsImages', 'adresseDetail', array('archiIdEvenement' => $params['idEvenement'], 'archiIdAdresse' => $idAdresse)) . "' name='formDragAndDrop' id='formDragAndDrop' method='POST' enctype='multipart/form-data'>";
     $html .= "<table><tr><td>";
     $html .= $imageObj->getDragAndDrop();
     $html .= "</td></tr></table>";
     $html .= "<input type='submit' onclick=\"" . $imageObj->getJSSubmitDragAndDrop() . "\" name='validePosition' value='" . _("Valider") . "'>";
     $html .= "</form>";
     return $html;
 }
    public function afficher($idEvenement = null, $modeAffichage = '', $idHistoriqueEvenement = null, $paramChampCache = array(), $params = array())
    {
        $authentification = new ArchiAuthentification();
        $estConnecte = $authentification->estConnecte();
        $estAdmin = $authentification->estAdmin();
        $estModerateur = $authentification->estModerateur();
        $userId = $authentification->getIdUtilisateur();
        $html = '';
        $erreurObject = new objetErreur();
        $t = new Template('modules/archi/templates/');
        $t->set_filenames(array('ev' => 'evenement.tpl'));
        $isMH = false;
        $isISMH = false;
        $isAffichageSingleEvenement = false;
        $listeGroupeAdressesAffichees = array();
        // liste des groupes d'adresses reellement affichés , donc dans cette liste ne figure pas les groupe d'adresses ou il n'y a pas d'evenements liés
        $u = new archiUtilisateur();
        // on renvoi le nom de type de structure ( ceci sert a voir si on affiche aussi le type de structure sur l'evenement suivant du groupe d'adresse (pour eviter les redondances) )
        $retourIdTypeStructure = "";
        // on renvoi le titre de l'evenement pour l'affichage des ancres
        $retourTitreAncre = "";
        $retourNomTypeEvenement = "";
        $retourDate = "";
        $retourDateFin = "";
        $nomTable = "evenements";
        $adresse = new archiAdresse();
        $imageObject = new imageObject();
        // objet image du framework
        $idAdresseCourante = 0;
        if (isset($this->variablesGet['archiIdAdresse']) && $this->variablesGet['archiIdAdresse'] != '') {
            $idAdresseCourante = $this->variablesGet['archiIdAdresse'];
        }
        $t->assign_vars(array("divDisplayMenuAction" => "none"));
        if (!isset($idEvenement) || $idEvenement == null || $idEvenement == '') {
            if (isset($this->variablesGet['archiIdEvenement']) && $this->variablesGet['archiIdEvenement'] != '') {
                if ($modeAffichage != 'consultationHistoriqueEvenement') {
                    $idEvenement = $this->variablesGet['archiIdEvenement'];
                }
            }
        }
        // fabrication de la requete en fonction des parametres
        $sqlEvenementsAdressesLiees = "";
        if (empty($idEvenement)) {
            if ($modeAffichage == 'consultationHistoriqueEvenement') {
                // on affiche les idHistoriqueEvenement de l'evenement choisi
                $isAffichageSingleEvenement = true;
                $sqlWhere = 'hE.idHistoriqueEvenement=' . $idHistoriqueEvenement;
                $nomTable = "historiqueEvenement";
            }
            if (isset($this->variablesGet['modeAffichage']) && $this->variablesGet['modeAffichage'] == 'comparaisonEvenement') {
                // debug pour eviter un message d'erreur si l'evenement n'existe pas dans l'affichage de la comparaison d'evenement ancien/nouveau
            }
        } else {
            if ($modeAffichage == 'simple') {
                // l'idEvenement en parametre correspond a l'evenement enfant a afficher
                $sqlWhere = 'hE.idEvenement=' . $idEvenement;
            } else {
                // l'idEvenement en parametres correspond a un evenement enfant on va donc chercher l'evenement parent qui correspond au groupe d'adresses
                $sqlWhere = '(hE.idEvenement=
						IF (
						(SELECT _eE.idEvenement FROM _evenementEvenement _eE
						LEFT JOIN evenements USING (idEvenement)
						LEFT JOIN typeEvenement tE USING (idTypeEvenement) WHERE idEvenementAssocie=' . $idEvenement . ' LIMIT 1),
						(SELECT _eE.idEvenement FROM _evenementEvenement _eE
						LEFT JOIN evenements USING (idEvenement)
						LEFT JOIN typeEvenement tE USING (idTypeEvenement) WHERE idEvenementAssocie=' . $idEvenement . ' LIMIT 1),
						' . $idEvenement . ')) ';
                // si on est en mode de deplacement d'image
                // ou de selection de titre
                // on rajoute le formulaire sur la page
                if ($estConnecte && (isset($this->variablesGet['afficheSelectionImage']) && $this->variablesGet['afficheSelectionImage'] == '1' || isset($this->variablesGet['afficheSelectionTitre']) && $this->variablesGet['afficheSelectionTitre'] == '1')) {
                    $html .= "<form action='' name='formulaireEvenement' method='POST' enctype='multipart/form-data' id='formulaireEvenement'>\n\t\t\t\t\t\t\t<input type='hidden' name='actionFormulaireEvenement' id='actionFormulaireEvenement' value=''>";
                }
            }
        }
        if (isset($sqlWhere)) {
            /*
             **  REQUÊTE
             */
            // recuperation des données de l'evenement groupe d'adresses
            // on ne fait pas de group by   having
            // on prend simplement le dernier enregistrement classé selon l'idHistoriqueEvenement
            // et donc le nombre de resultats de la requete permet de recuperer le nombre d'historiques sur l'evenement dans la foulée
            $sql = 'SELECT  hE.idEvenement,
					hE.titre, hE.idSource,
					hE.idTypeStructure,
					hE.idTypeEvenement,
					hE.description,
					hE.dateDebut,
					hE.dateFin,
					hE.dateDebut,
					hE.dateFin,
					tE.nom AS nomTypeEvenement,
					tS.nom AS nomTypeStructure,
					s.nom AS nomSource,
					u.nom AS nomUtilisateur,
					u.prenom as prenomUtilisateur,
					tE.groupe,
					hE.ISMH ,
					hE.MH,
					date_format(hE.dateCreationEvenement,"' . _("%e/%m/%Y à %kh%i") . '") as dateCreationEvenement,
					hE.isDateDebutEnviron as isDateDebutEnviron,
					u.idUtilisateur as idUtilisateur,
					hE.numeroArchive as numeroArchive

					FROM ' . $nomTable . ' hE
					LEFT JOIN source s      ON s.idSource = hE.idSource
					LEFT JOIN typeStructure tS  ON tS.idTypeStructure = hE.idTypeStructure
					LEFT JOIN typeEvenement tE  ON tE.idTypeEvenement = hE.idTypeEvenement
					LEFT JOIN utilisateur u     ON u.idUtilisateur = hE.idUtilisateur
					WHERE ' . $sqlWhere . '
			ORDER BY hE.idEvenement DESC';
            $rep = $this->connexionBdd->requete($sql);
        } else {
            echo "<p><strong>Cette fiche n'existe plus, merci de <a href='" . $this->creerUrl("", "contact") . "'>contacter un administrateur</a>.</strong></p>";
        }
        // lien vers le formulaire d'ajout d'une adresse pour un evenement parent
        // recherche de l'evenement parent
        $idEvenementGroupeAdresse = $this->getParent($idEvenement);
        if ($idEvenementGroupeAdresse == 0) {
            $idEvenementGroupeAdresse = $idEvenement;
            // pas de parent trouvé , donc l'evenement est lui meme un parent
        }
        // ***************************
        // gestion mode deplacement d'images
        // ***************************
        $styleColorDeplacementActif = "";
        $afficheSelectionImages = 1;
        if ($estConnecte && isset($this->variablesGet['afficheSelectionImage']) && $this->variablesGet['afficheSelectionImage'] == '1') {
            $styleColorDeplacementActif = "color:red;";
            $afficheSelectionImages = 0;
        }
        $t->assign_vars(array('urlLierAdresseAEvenement' => $this->creerUrl('', 'formulaireGroupeAdresses', array('archiIdEvenementGroupeAdresses' => $idEvenementGroupeAdresse)), 'urlAjouterEvenement' => $this->creerUrl('', 'ajouterSousEvenement', array('archiIdEvenement' => $idEvenementGroupeAdresse)), 'urlDeplacerImages' => $this->creerUrl('', 'evenement', array('idEvenement' => $idEvenementGroupeAdresse, 'afficheSelectionImage' => $afficheSelectionImages)), 'styleModeDeplacementImageActif' => "{$styleColorDeplacementActif};"));
        // **********************************
        // gestion selection du titre du groupe d'adresse
        // **********************************
        $styleColorSelectionTitreActif = "";
        $afficheSelectionTitre = 1;
        if ($estConnecte && isset($this->variablesGet['afficheSelectionTitre']) && $this->variablesGet['afficheSelectionTitre'] == '1') {
            $styleColorSelectionTitreActif = "color:red;";
            $afficheSelectionTitre = 0;
        }
        $t->assign_vars(array('urlSelectionTitreAdresse' => $this->creerUrl('', 'evenement', array('idEvenement' => $idEvenementGroupeAdresse, 'afficheSelectionTitre' => $afficheSelectionTitre)), 'styleModeChoixTitre' => $styleColorSelectionTitreActif));
        // *******************************************
        // gestion selection de l'image principale du groupe d'adresse
        // *******************************************
        $styleColorSelectionImagePrincipaleActif = "";
        $afficheSelectionImagePrincipale = 1;
        if ($estConnecte && isset($this->variablesGet['afficheSelectionImagePrincipale']) && $this->variablesGet['afficheSelectionImagePrincipale'] == '1') {
            $styleColorSelectionImagePrincipaleActif = "color:red";
            $afficheSelectionImagePrincipale = 0;
        }
        $t->assign_vars(array('urlSelectionImagePrincipale' => $this->creerUrl('', 'evenement', array('idEvenement' => $idEvenementGroupeAdresse, 'afficheSelectionImagePrincipale' => $afficheSelectionImagePrincipale)), 'styleModeSelectionImagePrincipale' => $styleColorSelectionImagePrincipaleActif));
        // *******************************************
        // gestion positionnement evenements
        // *******************************************
        $styleColorPositionnementEvenements = "";
        $affichePositionnementEvenements = 1;
        if ($estConnecte && isset($this->variablesGet['affichePositionnementEvenements']) && $this->variablesGet['affichePositionnementEvenements'] == '1') {
            $styleColorPositionnementEvenements = "color:red";
            $affichePositionnementEvenements = 0;
            $this->addToJsHeader($imageObject->getJSFunctionsDragAndDrop(array('withBalisesScript' => true)));
            // rajoute les fonctions de deplacement d'elements dans le header du formulaire
        }
        $t->assign_vars(array('urlPositionnementEvenements' => $this->creerUrl('', 'evenement', array('archiIdAdresse' => $idAdresseCourante, 'idEvenement' => $idEvenementGroupeAdresse, 'affichePositionnementEvenements' => $affichePositionnementEvenements)), 'styleModePositionnementEvenements' => $styleColorPositionnementEvenements));
        if (isset($sqlWhere) && mysql_num_rows($rep) > 0) {
            $nbHistorique = mysql_num_rows($rep) - 1;
            // on ne compte pas le groupe d'adresse qui a le meme idEvenement
            $res = mysql_fetch_object($rep);
            $idEvenement = $res->idEvenement;
            // si c'est un groupe d'adresse, on n'affiche pas le détail de l'événement, juste ses événements enfants
            if ($res->groupe != 3) {
                if ($modeAffichage === 'simple' || $modeAffichage == 'consultationHistoriqueEvenement') {
                    $t->assign_block_vars('simple', array());
                    // si l'evenement est un evenement externe au groupe d'adresse , on affiche un menu different a droite
                    if (isset($params['isLieFromOtherAdresse']) && $params['isLieFromOtherAdresse'] == true) {
                        // on recupere d'abord l'idAdresse de cet evenement externe
                        $reqAdresses = $adresse->getIdAdressesFromIdEvenement(array('idEvenement' => $idEvenement));
                        $resAdresses = $this->connexionBdd->requete($reqAdresses);
                        $fetchAdressesExternes = mysql_fetch_assoc($resAdresses);
                        $intituleAdresse = $adresse->getIntituleAdresseFrom($fetchAdressesExternes['idAdresse'], 'idAdresse');
                        //$t->assign_vars(array("divDisplayMenuAction"=>"none"));
                        $ancrePositionAdresseLiee = "";
                        $positionSurAdresseOrigine = $adresse->getPositionFromEvenement($idEvenement);
                        if ($positionSurAdresseOrigine != '' && $positionSurAdresseOrigine != '0') {
                            $ancrePositionAdresseLiee = "#" . $positionSurAdresseOrigine;
                        }
                        $t->assign_vars(array("urlEvenementExterne" => "<small>" . _("Adresse d'origine :") . " <a href='" . $this->creerUrl('', 'adresseDetail', array('archiIdAdresse' => $fetchAdressesExternes['idAdresse'])) . $ancrePositionAdresseLiee . "'>" . $intituleAdresse . "</a></small>"));
                    } else {
                        if ($modeAffichage != 'consultationHistoriqueEvenement') {
                            $t->assign_vars(array("divDisplayMenuAction" => "table"));
                        }
                    }
                    if ($estConnecte) {
                        $t->assign_block_vars('simple.menuAction', array());
                        if ($modeAffichage != 'consultationHistoriqueEvenement') {
                            if (isset($params['isLieFromOtherAdresse']) && $params['isLieFromOtherAdresse'] == true) {
                                $t->assign_vars(array("divDisplayMenuAction" => "none"));
                                // si un utilisateur est connecté , et que l'evenement est un evenement lie , on affiche pas le menu d'action
                            } else {
                                $t->assign_vars(array("divDisplayMenuAction" => "table"));
                                // si un utilisateur est connecté et que l'evenement n'est pas un evenement lié, on affiche le menu d'action
                            }
                        } else {
                            $t->assign_vars(array("divDisplayMenuAction" => "none"));
                            // si on est en mode d'affichage de l'historique d'un evenement, on ne propose pas de menu action
                        }
                        if ($u->isAuthorized('evenement_lier_adresses', $userId)) {
                            if (!archiPersonne::isPerson($idEvenementGroupeAdresse) && ($u->getIdProfil($userId) == 4 || $u->isModerateurFromVille($userId, $idEvenementGroupeAdresse, 'idEvenementGroupeAdresse'))) {
                                $t->assign_block_vars('simple.menuAction.afficheElementMenuLierAdresse', array());
                            }
                        }
                    }
                    if ($estAdmin) {
                        $t->assign_block_vars('simple.menuAction.isAdmin', array());
                    }
                    if ($u->isAuthorized('evenement_supprimer', $userId)) {
                        $isModerateurFromVilleCourante = false;
                        if ($authentification->getIdProfil() == 3) {
                            //moderateur
                            $arrayVillesModerees = $u->getArrayVillesModereesPar($userId);
                            $idVilleAdresseCourante = $adresse->getIdVilleFrom($idEvenement, 'idEvenement');
                            if (in_array($idVilleAdresseCourante, $arrayVillesModerees)) {
                                $isModerateurFromVilleCourante = true;
                            }
                        }
                        if ($authentification->getIdProfil() == 4 || $isModerateurFromVilleCourante) {
                            // est on administrateur ou moderateur de la ville ?
                            $t->assign_block_vars('simple.menuAction.isAdminOrModerateurFromVille', array());
                            if ($estConnecte && $estAdmin && isset($this->variablesGet['afficheSelectionImage']) && $this->variablesGet['afficheSelectionImage'] == '1') {
                                $t->assign_block_vars('simple.menuAction.isAdmin.isAffichageSelectionImages', array());
                            }
                        }
                    }
                    if (!archiPersonne::isPerson($idEvenementGroupeAdresse) && $u->isAuthorized('evenement_deplacer', $userId)) {
                        $t->assign_block_vars('simple.menuAction.afficheElementMenuDeplacerEvenement', array());
                    }
                    if ($estConnecte && $estAdmin && isset($this->variablesGet['afficheSelectionImage']) && $this->variablesGet['afficheSelectionImage'] == '1') {
                        //$t->assign_block_vars('simple.menuAction.isAdminOrModerateurFromVille',array());
                    }
                }
                // ******************************************************************************************************
                // Affichage des dates
                $dateTxt = "";
                $environDateDebutTxt = "";
                if ($res->isDateDebutEnviron == '1') {
                    $environDateDebutTxt = "environ ";
                }
                switch (strtolower($res->nomTypeEvenement)) {
                    case 'information (nouveautés)':
                    case 'extension':
                    case 'inauguration':
                    case 'exposition':
                        $articleAvantTypeEvenement = "de l'";
                        break;
                    default:
                        $articleAvantTypeEvenement = "de";
                        break;
                }
                if (substr($res->dateDebut, 5) == "00-00") {
                    $datetime = substr($res->dateDebut, 0, 4);
                } else {
                    $datetime = $res->dateDebut;
                }
                if ($res->nomTypeEvenement == 'Construction') {
                    if ($res->dateDebut != '0000-00-00') {
                        $dateTxt = _("Année de construction :") . " <time itemprop='startDate' datetime='" . $datetime . "'>" . $environDateDebutTxt . $this->date->toFrenchAffichage($res->dateDebut) . "</time>";
                    }
                    if ($res->dateFin != '0000-00-00') {
                        $dateTxt .= " (-> " . $this->date->toFrenchAffichage($res->dateFin) . ")";
                        $retourDateFin = " (-> " . $this->date->toFrenchAffichage($res->dateFin) . ")";
                    }
                } else {
                    if ($res->dateDebut != '0000-00-00') {
                        if ($res->MH != '1' && $res->ISMH != '1') {
                            if (pia_strlen($this->date->toFrench($res->dateDebut)) <= 4) {
                                if (archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                                    $nomTypeEvenement = "début";
                                } else {
                                    $nomTypeEvenement = strtolower($res->nomTypeEvenement);
                                }
                                $dateTxt = _("Année") . " " . $articleAvantTypeEvenement . " <time itemprop='startDate' datetime='" . $datetime . "'>" . $nomTypeEvenement . " : {$environDateDebutTxt}" . $this->date->toFrenchAffichage($res->dateDebut) . "</time>";
                            } else {
                                if (archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                                    $typeEvenement = "";
                                } else {
                                    $typeEvenement = $articleAvantTypeEvenement . " " . strtolower($res->nomTypeEvenement);
                                }
                                $dateTxt = _("Date") . " <time itemprop='startDate' datetime='" . $datetime . "'>" . $typeEvenement . " : {$environDateDebutTxt}" . $this->date->toFrenchAffichage($res->dateDebut) . "</time>";
                            }
                        }
                        if ($res->MH == '1') {
                            $dateTxt = "<b>" . _("Classement Monument Historique") . "</b> {$environDateDebutTxt} le " . $this->date->toFrenchAffichage($res->dateDebut);
                            $isMH = true;
                        }
                        if ($res->ISMH == '1') {
                            $dateTxt = "<b>" . _("Inscription à l'Inventaire Supplémentaire des Monuments Historiques") . "</b> {$environDateDebutTxt} : " . $this->date->toFrenchAffichage($res->dateDebut);
                            if ($res->MH == '1') {
                                $dateTxt .= "<br><b>" . _("Classement Monument Historique") . "</b> {$environDateDebutTxt} : " . $this->date->toFrenchAffichage($res->dateDebut);
                            }
                            $isISMH = true;
                        }
                    }
                    if ($res->dateFin != '0000-00-00') {
                        if (pia_strlen($this->date->toFrench($res->dateFin)) <= 4) {
                            $dateTxt .= " " . _("à") . " " . $this->date->toFrenchAffichage($res->dateFin);
                        } else {
                            $dateTxt .= " " . _("au") . " " . $this->date->toFrenchAffichage($res->dateFin);
                        }
                    }
                }
                // ******************************************************************************************************
                // on renseigne la variable nomTypeStructure pour la renvoyer au retour de la fonction
                $retourIdTypeStructure = $res->idTypeStructure;
                // idem pour le titre qui sera affiché en resume pour le tableau de liens
                $retourTitreAncre = "";
                if (stripslashes($res->titre) != '') {
                    $retourTitreAncre .= htmlspecialchars(stripslashes($res->titre));
                } else {
                    $retourTitreAncre .= _("Sans titre");
                }
                $retourNomTypeEvenement = $res->nomTypeEvenement;
                $retourDate = $environDateDebutTxt . " " . $this->date->toFrench($res->dateDebut);
                $dateDebut = $res->dateDebut;
                if (isset($paramChampCache['idTypeStructurePrecedent']) && $res->idTypeStructure == $paramChampCache['idTypeStructurePrecedent']) {
                    $typeStructure = '';
                } else {
                    if (archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                        $typeStructure = "";
                    } else {
                        $typeStructure = "Structure : <a href='" . $this->creerUrl('', 'evenementListe', array('selection' => 'typeStructure', 'id' => $res->idTypeStructure)) . "'>" . $res->nomTypeStructure . "</a><br>";
                    }
                }
                $source = "";
                if ($res->idSource != 0) {
                    $source = "Source : <a href='" . $this->creerUrl('', 'listeAdressesFromSource', array('source' => $res->idSource, 'submit' => 'Rechercher')) . "' onmouseover=\"document.getElementById('calqueDescriptionSource').style.top=(getScrollHeight()+150)+'px';\n\t\t\t\t\t\t\t\t\tdocument.getElementById('calqueDescriptionSource').style.display='block';\n\t\t\t\t\t\t\t\t\tdocument.getElementById('iframe').src='" . $this->creerUrl('', 'descriptionSource', array('archiIdSource' => $res->idSource, 'noHeaderNoFooter' => 1)) . "';\"\n\t\t\t\t\t\t\t\t\t>" . stripslashes($res->nomSource) . "</a><br>";
                } else {
                    // exception temporaire (?)
                    if ($res->numeroArchive != '') {
                        // s'il y a un numero d'archive et pas de source précisée , on dit que la source est "archives municipales" (voir fabien)
                        $reqSourceStatic = "SELECT nom as nomSource FROM source WHERE idSource='24'";
                        $resSourceStatic = $this->connexionBdd->requete($reqSourceStatic);
                        $fetchSourceStatic = mysql_fetch_assoc($resSourceStatic);
                        $source = "Source : <a href='" . $this->creerUrl('', 'listeAdressesFromSource', array('submit' => 'Rechercher', 'source' => 24)) . "' onmouseover=\"document.getElementById('calqueDescriptionSource').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueDescriptionSource').style.display='block';document.getElementById('iframe').src='" . $this->creerUrl('', 'descriptionSource', array('archiIdSource' => 24, 'noHeaderNoFooter' => 1)) . "';\" onmouseout=\"document.getElementById('calqueDescriptionSource').style.display='none';\">" . stripslashes($fetchSourceStatic['nomSource']) . "</a><br>";
                    }
                }
                // DESCRIPTION ---
                $bbCode = new bbCodeObject();
                $description = $bbCode->convertToDisplay(array('text' => $res->description));
                $description = empty($description) ? "" : "<div itemprop='description' class='desc'>" . $description . "</div>";
                // --
                // numeroArchive
                $numeroArchive = "";
                if ($res->numeroArchive != '') {
                    // modif fabien du 15/04/2011 suite mail directrice Archives de Strasbourg Mme Perry Laurence
                    $numeroArchive = "Cote Archives de Strasbourg : " . $res->numeroArchive . "<br>";
                }
                $adressesLieesHTML = $this->getAdressesLieesAEvenement(array('modeRetour' => 'affichageSurDetailEvenement', 'idEvenement' => $idEvenement));
                if ($adressesLieesHTML != '') {
                    $adressesLieesHTML = "<b>" . _("Liste des adresses liées :") . "</b> <br>" . $adressesLieesHTML;
                }
                // recherche s'il y a un historique sur l'evenement courant ( plusieurs mises à jour)
                $lienHistoriqueEvenementCourant = "";
                $labelHistorique = "";
                if ($estConnecte && $this->getNbEvenementsInHistorique(array('idEvenement' => $idEvenement)) > 1 && $modeAffichage != 'consultationHistoriqueEvenement' && (!isset($params['isLieFromOtherAdresse']) || $params['isLieFromOtherAdresse'] != true)) {
                    $labelHistorique = _("(Consulter l'historique)");
                    $lienHistoriqueEvenementCourant = $this->creerUrl('', 'consultationHistoriqueEvenement', array('archiIdEvenement' => $idEvenement));
                }
                $onClickEvenementDeplacerVersGA = "";
                if ($estConnecte && $u->isAuthorized('evenement_deplacer', $userId) && $modeAffichage != 'consultationHistoriqueEvenement' && isset($params['calquePopupDeplacerEvenement'])) {
                    $onClickEvenementDeplacerVersGA = "document.getElementById('" . $params['calquePopupDeplacerEvenement']->getJSIFrameId() . "').src='" . $this->creerUrl('', 'recherche', array('noHeaderNoFooter' => 1, 'modeAffichage' => "popupDeplacerEvenementVersGroupeAdresse", "idEvenementADeplacer" => $res->idEvenement)) . "';document.getElementById('" . $params['calquePopupDeplacerEvenement']->getJSDivId() . "').style.display='block';";
                }
                $dateEnvoi = "";
                $txtEnvoi = _("envoyé");
                if (!$this->isFirstIdHistoriqueEvenementFromHistorique($res->idEvenement)) {
                    $txtEnvoi = _("modifié");
                }
                $dateEnvoi = _("le") . " " . $res->dateCreationEvenement;
                $arrayIdAdresseToUrl = array();
                if (isset($this->variablesGet['archiIdAdresse']) && $this->variablesGet['archiIdAdresse'] != '') {
                    $arrayIdAdresseToUrl = array('archiIdAdresse' => $this->variablesGet['archiIdAdresse']);
                }
                $resTypeEvenement = $this->connexionBdd->requete("SELECT idTypeEvenement,nom FROM typeEvenement where groupe = '" . $this->getGroupeFromTypeEvenement($res->idTypeEvenement) . "'");
                $fetchTypeEvenement = mysql_fetch_assoc($resTypeEvenement);
                if (archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                    $typeEvenement = _("Biographie");
                    $urlTypeEvenement = "";
                } else {
                    $typeEvenement = $res->nomTypeEvenement;
                    $urlTypeEvenement = $this->creerUrl('', 'evenementListe', array('selection' => 'typeEvenement', 'id' => $res->idTypeEvenement));
                }
                $titre = empty($res->titre) ? "<meta itemprop='name' content='" . $fetchTypeEvenement['nom'] . "' />" : "<h3 itemprop='name'>" . htmlspecialchars(stripslashes($res->titre)) . "</h3>";
                $user = new archiUtilisateur();
                $user->setUserId($res->idEvenement);
                $urlProfilPic = $user->getImageAvatar(array('idUtilisateur' => $res->idUtilisateur));
                $utilisateur = "<a href='" . $this->creerUrl('', 'detailProfilPublique', array('archiIdUtilisateur' => $res->idUtilisateur, 'archiIdEvenementGroupeAdresseOrigine' => $idEvenementGroupeAdresse)) . "'>" . $res->nomUtilisateur . " " . $res->prenomUtilisateur . "</a>";
                $t->assign_vars(array('txtEnvoi' => $txtEnvoi, 'dateEnvoi' => $dateEnvoi, 'titre' => $titre, 'utilisateur' => "<a href='" . $this->creerUrl('', 'detailProfilPublique', array('archiIdUtilisateur' => $res->idUtilisateur, 'archiIdEvenementGroupeAdresseOrigine' => $idEvenementGroupeAdresse)) . "'>" . $res->nomUtilisateur . " " . $res->prenomUtilisateur . "</a>", 'dates' => $dateTxt, 'typeEvenement' => $typeEvenement, 'typeStructure' => $typeStructure, 'idSource' => $res->idSource, 'source' => $source, 'description' => $description, 'urlTypeEvenement' => $urlTypeEvenement, 'urlTypeStructure' => $this->creerUrl('', 'evenementListe', array('selection' => 'typeStructure', 'id' => $res->idTypeStructure)), 'ajouterEvenement' => '', 'supprimerEvenement' => $this->creerUrl('supprimerEvenement', '', array('archiIdEvenement' => $res->idEvenement)), 'supprimerHistoriqueEvenement' => $this->creerUrl('supprimerHistoriqueEvenement', '', array('archiIdHistoriqueEvenement' => $res->idHistoriqueEvenement)), 'ajouterImage' => $this->creerUrl('', 'ajoutImageEvenement', array('archiIdEvenement' => $res->idEvenement)), 'modifierImage' => $this->creerUrl('', 'modifierImageEvenement', array('archiIdEvenement' => $res->idEvenement)), 'modifierEvenement' => $this->creerUrl('', 'modifierEvenement', array_merge(array('archiIdEvenement' => $res->idEvenement, 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse), $arrayIdAdresseToUrl)), 'urlImporterImage' => "#", 'onClickImporterImage' => "document.getElementById('formulaireEvenement').action='" . $this->creerUrl('deplacerImagesSelectionnees', 'evenement', array('idEvenement' => $idEvenement)) . "&deplacerVersIdEvenement=" . $res->idEvenement . "';document.getElementById('actionFormulaireEvenement').value='deplacerImages';if(confirm('Voulez-vous vraiment déplacer ces images ?')){document.getElementById('formulaireEvenement').submit();}", 'urlSupprimerImage' => "#", 'onClickSupprimerImage' => "document.getElementById('formulaireEvenement').action='" . $this->creerUrl('supprimerImagesSelectionnees', 'evenement', array('idEvenement' => $idEvenement)) . "';document.getElementById('actionFormulaireEvenement').value='supprimerImages';if(confirm('Voulez-vous vraiment supprimer ces images ?')){document.getElementById('formulaireEvenement').submit();}", 'urlLierAdresses' => $this->creerUrl('', 'afficheFormulaireEvenementAdresseLiee', array('idEvenement' => $res->idEvenement)), 'listeAdressesLiees' => $adressesLieesHTML, 'lienHistoriqueEvenementCourant' => $lienHistoriqueEvenementCourant, 'urlDeplacerVersNouveauGroupeAdresse' => $this->creerUrl('deplacerEvenementVersNouveauGA', 'evenement', array('idEvenement' => $res->idEvenement)), 'onClickDeplacerVersAdresses' => $onClickEvenementDeplacerVersGA, 'numeroArchive' => $numeroArchive, 'idEvenement' => $res->idEvenement, 'urlProfilPic' => $urlProfilPic, 'infoTitre' => $utilisateur . " a " . $txtEnvoi . " un événement", 'txtEnvoi' => $txtEnvoi, 'labelLienHistorique' => $labelHistorique));
                $idEvenement = $res->idEvenement;
                // affichage des images de l'evenement
                if ($modeAffichage != 'consultationHistoriqueEvenement') {
                    $images = new archiImage();
                    $arrayImagesVuesSurByDate = array();
                    if (isset($params['imagesVuesSurLinkedByDate']) && count($params['imagesVuesSurLinkedByDate']) > 0) {
                        $arrayImagesVuesSurByDate = $params['imagesVuesSurLinkedByDate'];
                    }
                    $t->assign_vars(array('imagesLiees' => $images->afficherFromEvenement($idEvenement, array('withoutImagesVuesSurPrisesDepuis' => true, 'imagesVuesSurLinkedByDate' => $arrayImagesVuesSurByDate, 'idGroupeAdresseEvenementAffiche' => $idEvenementGroupeAdresse))));
                }
                if (($idPerson = archiPersonne::isPerson($idEvenementGroupeAdresse)) && isset($params["nextEvent"])) {
                    $req = "\n\t\t\t\t\t\t\tSELECT dateDebut\n\t\t\t\t\t\t\tFROM evenements\n\t\t\t\t\t\t\tWHERE idEvenement = '" . $params["nextEvent"] . "'\n\t\t\t\t\t\t\t\t\tORDER BY idEvenement DESC LIMIT 1\n\t\t\t\t\t\t\t\t\t";
                    $res = $this->connexionBdd->requete($req);
                    $date2 = mysql_fetch_object($res);
                    $linkedEventsHTML = archiPersonne::displayEvenementsLies($idPerson, $dateDebut, $date2->dateDebut);
                    $t->assign_vars(array("evenementsLiesPersonne" => $linkedEventsHTML));
                } elseif ($idPerson = archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                    $linkedEventsHTML = archiPersonne::displayEvenementsLies($idPerson, $dateDebut, 3000);
                    $t->assign_vars(array("evenementsLiesPersonne" => $linkedEventsHTML));
                }
                /*
                 * COURANTS ARCHI
                 */
                $rep = $this->connexionBdd->requete('
						SELECT  cA.idCourantArchitectural, cA.nom
						FROM _evenementCourantArchitectural _eA
						LEFT JOIN courantArchitectural cA  ON cA.idCourantArchitectural  = _eA.idCourantArchitectural
						WHERE _eA.idEvenement=' . $idEvenement . '
						ORDER BY cA.nom ASC');
                if (mysql_num_rows($rep) > 0) {
                    $t->assign_block_vars('simple.isCourantArchi', array());
                    while ($res = mysql_fetch_object($rep)) {
                        $t->assign_block_vars('simple.isCourantArchi.archi', array('url' => $this->creerUrl('', 'evenementListe', array('selection' => 'courant', 'id' => $res->idCourantArchitectural)), 'nom' => $res->nom));
                    }
                }
                /*
                 **  PERSONNES
                 */
                $rep = $this->connexionBdd->requete('
						SELECT  p.idPersonne, m.nom as metier, p.nom, p.prenom
						FROM _evenementPersonne _eP
						LEFT JOIN personne p ON p.idPersonne = _eP.idPersonne
						LEFT JOIN metier m ON m.idMetier = p.idMetier
						WHERE _eP.idEvenement=' . $idEvenement . '
						ORDER BY p.nom DESC');
                $metier = "";
                while ($res = mysql_fetch_object($rep)) {
                    if (isset($res->metier) && $res->metier != '') {
                        $metier = $res->metier . ' : ';
                    }
                    $t->assign_block_vars('simple.pers', array('urlDetail' => $this->creerUrl('', 'personne', array('idPersonne' => $res->idPersonne)), 'urlEvenement' => $this->creerUrl('', 'evenementListe', array('selection' => 'personne', 'id' => $res->idPersonne)), 'nom' => stripslashes($res->nom), 'prenom' => stripslashes($res->prenom), 'metier' => stripslashes($metier), 'idPerson' => $res->idPersonne, 'idEvent' => $idEvenement));
                    if ($estConnecte) {
                        $t->assign_block_vars('simple.pers.connected', array());
                    }
                }
                //*
                //**    Historique
                //*/
                $t->assign_vars(array('nbHistorique' => $nbHistorique));
                if ($nbHistorique > 0) {
                    $t->assign_block_vars('histo', array('url' => $this->creerUrl('', 'historiqueEvenement', array('idEvenement' => $idEvenement))));
                }
            }
            // *************************************************************************************************************************************
            // affichage des adresses et evenements lies dans la partie supérieur du detail
            // que l'événement soit un groupe d'adresse ou non, on affiche les enfants
            // *************************************************************************************************************************************
            if ($modeAffichage != 'simple' && $modeAffichage != 'consultationHistoriqueEvenement') {
                $tabIdEvenementsLies = $this->getEvenementsLies($idEvenement);
                // recherche des sous evenements (idEvenementAssocie) du groupe d'adresse
                if (count($tabIdEvenementsLies) > 0) {
                    $listeGroupeAdressesAffichees[] = $idEvenement;
                    $t->assign_block_vars('noSimple', array());
                    // vu que la fonction afficher est recursive , on affiche cette partie uniquement en affichant 'non simple'
                    //=> affichage simple = affichage de l'evenement => affichage non simple = affichage de la page ...
                    if ($modeAffichage == "personne") {
                    } else {
                        $retourAdresse = $adresse->afficherListe(array('archiIdEvenement' => $idEvenement, 'useTemplateFile' => 'listeAdressesDetailEvenement.tpl'), "listeDesAdressesDuGroupeAdressesSurDetailAdresse");
                        // modeAffichage => listeDesAdressesDuGroupeAdressesSurDetailAdresse
                    }
                    $idAdresseCourante = 0;
                    if (isset($this->variablesGet['archiIdAdresse']) && $this->variablesGet['archiIdAdresse'] != '') {
                        $idAdresseCourante = $this->variablesGet['archiIdAdresse'];
                    }
                    if ($modeAffichage != "personne") {
                        // ************************************************************************************************************************
                        // affichage carte googlemap dans une iframe
                        $coordonnees = $adresse->getCoordonneesFrom($idEvenement, 'idEvenementGroupeAdresse');
                        //$retourAdresse['arrayIdAdresses'][0]
                        // si pas de coordonnees , on va chercher les coordonnees de la ville courante
                        if ($coordonnees['longitude'] == 0 && $coordonnees['latitude'] == 0) {
                            $idVilleAdresseCourante = $adresse->getIdVilleFrom($idAdresseCourante, 'idAdresse');
                            $coordonnees = $adresse->getCoordonneesFrom($idVilleAdresseCourante, 'idVille');
                        }
                        $calqueGoogleMap = new calqueObject(array('idPopup' => 10));
                        $contenuIFramePopup = $this->getContenuIFramePopupGoogleMap(array('idAdresseCourante' => $idAdresseCourante, 'calqueObject' => $calqueGoogleMap, 'idEvenementGroupeAdresseCourant' => $idEvenement));
                        // ********************************************************************************************************************************
                        $t->assign_block_vars('noSimple.isCarteGoogle', array('src' => $this->creerUrl('', 'afficheGoogleMapIframe', array('noHeaderNoFooter' => 1, 'longitude' => $coordonnees['longitude'], 'latitude' => $coordonnees['latitude'], 'archiIdAdresse' => $idAdresseCourante, 'archiIdEvenementGroupeAdresse' => $idEvenement)), 'lienVoirCarteGrand' => "<a href='#' onclick=\"" . $calqueGoogleMap->getJsOpenPopupNoDraggableWithBackgroundOpacity() . "document.getElementById('iFrameDivPopupGM').src='" . $this->creerUrl('', 'afficheGoogleMapIframe', array('longitude' => $coordonnees['longitude'], 'latitude' => $coordonnees['latitude'], 'noHeaderNoFooter' => true, 'archiIdAdresse' => $idAdresseCourante, 'archiIdEvenementGroupeAdresse' => $idEvenement, 'modeAffichage' => 'popupDetailAdresse')) . "';\" class='bigger' style='font-size:11px;'>" . _("Voir la carte en + grand") . "</a>", 'popupGoogleMap' => $calqueGoogleMap->getDivNoDraggableWithBackgroundOpacity(array('top' => 20, 'lienSrcIFrame' => '', 'contenu' => $contenuIFramePopup))));
                        //'popupGoogleMap'=>$calqueGoogleMap->getDiv(array('width'=>550,'height'=>570,'lienSrcIFrame'=>''))."<script  >".$calqueGoogleMap->getJsToDragADiv()."</script>"
                        $t->assign_vars(array('largeurTableauResumeAdresse' => 415, 'hauteurRecapAdresse' => '270'));
                        // ************************************************************************************************************************
                        // affichage de l'encars des adresses avec les photos avant et apres l'adresse courante
                        $arrayEncartAdresses = $adresse->getArrayEncartAdressesImmeublesAvantApres(array('idEvenementGroupeAdresse' => $idEvenementGroupeAdresse));
                        $t->assign_block_vars('noSimple.adresses', array('adressesLiees' => $arrayEncartAdresses['html']));
                        $t->assign_vars(array('urlAutresBiensRue' => $retourAdresse['arrayRetourLiensVoirBatiments']['urlAutresBiensRue'], 'urlAutresBiensQuartier' => $retourAdresse['arrayRetourLiensVoirBatiments']['urlAutresBiensQuartier']));
                        if ($estConnecte) {
                            $t->assign_block_vars('noSimple.isConnected', array());
                            $t->assign_block_vars('noSimple.adresses.isConnected', array());
                        }
                        if ($retourAdresse['nbAdresses'] == 0) {
                            $t->assign_vars(array('intituleActionAdresses' => _("Ajouter une adresse")));
                        } else {
                            $t->assign_vars(array('intituleActionAdresses' => _("Modifier")));
                        }
                        if ($estConnecte && $estAdmin) {
                            // si l'utilisateur est connecté et est admin, on affiche le lien pour selectionner des images
                            $t->assign_block_vars('noSimple.isConnected.afficheLienSelectionImages', array());
                        }
                        if ($estConnecte && $u->isAuthorized('affiche_menu_evenement_choix_titre', $userId)) {
                            if ($u->getIdProfil($userId) == 4 || $u->isModerateurFromVille($userId, $idEvenementGroupeAdresse, 'idEvenementGroupeAdresse')) {
                                // tout utilisateur autorisé (admin+moderateur de la ville)  peut changer le titre par defaut du groupe d'adresse en selectionnant l'evenement de son choix ( le titre est récupéré de cet evenement),si l'autorisation est faite dans la gestion des droites de l'admin du site
                                $t->assign_block_vars('noSimple.isConnected.afficheLienSelectionTitre', array());
                            }
                        }
                        if ($estConnecte && $u->isAuthorized('affiche_menu_evenement_choix_image_principale', $userId)) {
                            if ($u->getIdProfil($userId) == 4 || $u->isModerateurFromVille($userId, $idEvenementGroupeAdresse, 'idEvenementGroupeAdresse')) {
                                // un utilisateur moderateur de la ville de l'adresse courant ou un admin peuvent selectionner ou changer l'image principale du groupe d'adresse,si l'autorisation est faite dans la gestion des droites de l'admin du site
                                $t->assign_block_vars('noSimple.isConnected.afficheLienSelectionImagePrincipale', array());
                            }
                        }
                        if ($estConnecte && $u->isAuthorized('affiche_menu_evenement_positionnement_evenements', $userId)) {
                            if ($u->getIdProfil($userId) == 4 || $u->isModerateurFromVille($userId, $idEvenementGroupeAdresse, 'idEvenementGroupeAdresse')) {
                                // un utilisateur moderateur de la ville courante ou admin peuvent changer la position des evenements, independemment de la date de debut de l'evenement ,si l'autorisation est faite dans la gestion des droites de l'admin du site
                                $t->assign_block_vars('noSimple.isConnected.afficheLienPositionnementEvenements', array());
                            }
                        }
                    }
                    //popup pour la recherche d'adresse dans le cas d'un deplacement d'evenement
                    if ($estConnecte && $u->isAuthorized('evenement_deplacer', $userId)) {
                        $c = new calqueObject(array('idPopup' => "divPopupDeplacerEvenementVersGA" . $idEvenementGroupeAdresse));
                        $t->assign_vars(array('divDeplacerEvenementVersGA' => $c->getDiv(array('lienSrcIFrame' => $this->creerUrl('', 'recherche', array('noHeaderNoFooter' => 1, 'modeAffichage' => 'popupDeplacerEvenementVersGroupeAdresse')), 'titrePopup' => _("Recherche d'adresses"), 'width' => 700))));
                        $params['calquePopupDeplacerEvenement'] = $c;
                    }
                    $images = new archiImage();
                    // **********************************************************************************************************************************************************
                    // recherche des images en rapport avec l'adresse courante
                    $resAdressesCourantes = $adresse->getAdressesFromEvenementGroupeAdresses($idEvenement);
                    $listeAdressesFromEvenement = array();
                    while ($fetchAdressesCourantes = mysql_fetch_assoc($resAdressesCourantes)) {
                        $listeAdressesFromEvenement[] = $fetchAdressesCourantes['idAdresse'];
                    }
                    if ($modeAffichage == "personne") {
                    } else {
                        $arrayCorrespondancesVuesSur = $this->getArrayCorrespondancesIdImageVuesSurAndEvenementByDateFromGA($idEvenementGroupeAdresse);
                        $arrayNoDiplayIdImageVueSur = array();
                        foreach ($arrayCorrespondancesVuesSur as $indice => $values) {
                            foreach ($values as $indice => $value) {
                                $arrayNoDiplayIdImageVueSur[] = $value['idImage'];
                            }
                        }
                    }
                    if (count($listeAdressesFromEvenement) > 0) {
                        $arrayAutresVuesSur = $images->getAutresPhotosVuesSurAdresse($listeAdressesFromEvenement, 'moyen', array('noDiplayIdImage' => $arrayNoDiplayIdImageVueSur, 'idEvenementGroupeAdresse' => $idEvenementGroupeAdresse, 'idGroupeAdresseEvenementAffiche' => $idEvenementGroupeAdresse, 'setZoomOnImageZone' => true));
                        $autresVuesSurHTML = $arrayAutresVuesSur['htmlVueSur'];
                        $codeARajouterALaFin = $arrayAutresVuesSur['htmlZonesDivMapJs'];
                        $autresPrisesDepuisHTML = $images->getAutresPhotosPrisesDepuisAdresse($listeAdressesFromEvenement, 'moyen', array('idEvenementGroupeAdresse' => $idEvenementGroupeAdresse, 'idGroupeAdresseEvenementAffiche' => $idEvenementGroupeAdresse));
                        if ($autresVuesSurHTML != '') {
                            $t->assign_block_vars('noSimple.autresVuesSur', array('value' => $autresVuesSurHTML));
                        }
                        if ($autresPrisesDepuisHTML != '') {
                            $t->assign_block_vars('noSimple.autresPrisesDepuis', array('value' => $autresPrisesDepuisHTML));
                        }
                        $arrayLiens = array();
                        if ($modeAffichage != "personne") {
                            $arrayListeAdressesCourantes = array_unique($retourAdresse['arrayIdAdresses']);
                        }
                        //foreach($arrayListeAdressesCourantes as $indice => $idAdresseCourante)
                        //{
                        $arrayLiens[] = "<a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdAdresse' => $idAdresseCourante, 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse)) . "'>" . $adresse->getIntituleAdresseFrom($idEvenementGroupeAdresse, 'idEvenementGroupeAdresse', array("noQuartier" => true, "noVille" => true, "noSousQuartier" => true, "ifTitreAfficheTitreSeulement" => true)) . "</a>";
                        //}
                        $t->assign_vars(array('listeAdressesCourantes' => implode(" / ", $arrayLiens)));
                    }
                    // **********************************************************************************************************************************************************
                    // **********************************************************************************************************************************************************
                    // **********************************************************************************************************************************************************
                    // affichage des evenements de l'evenement groupe d'adresses
                    // **********************************************************************************************************************************************************
                    $champsCacheTransmis = array();
                    //
                    $idEvenementWhereIsTitre = $this->getIdEvenementTitre(array("idEvenementGroupeAdresse" => $idEvenementGroupeAdresse));
                    $idAdresse = $adresse->getIdAdresseFromIdEvenementGroupeAdresse($idEvenementGroupeAdresse);
                    // initialisation des variables pour la creation du tableau de configuration de la liste triable par glisser deposer des evenements dans l'onglet historique des evenements
                    if (isset($this->variablesGet['affichePositionnementEvenements']) && $this->variablesGet['affichePositionnementEvenements'] == '1') {
                        $arrayConfigPositionnementEvenement = array();
                        $indicePositionnement = 0;
                    }
                    $i = 0;
                    // parcours des evenements
                    foreach ($tabIdEvenementsLies as $indice => $value) {
                        $params['isLieFromOtherAdresse'] = $value['isLieFromOtherAdresse'];
                        $params['imagesVuesSurLinkedByDate'] = array();
                        if (isset($tabIdEvenementsLies[$i + 1]["idEvenementAssocie"])) {
                            $params["nextEvent"] = $tabIdEvenementsLies[$i + 1]["idEvenementAssocie"];
                        } else {
                            $params["nextEvent"] = null;
                        }
                        if (isset($arrayCorrespondancesVuesSur[$value['idEvenementAssocie']])) {
                            $params['imagesVuesSurLinkedByDate'] = $arrayCorrespondancesVuesSur[$value['idEvenementAssocie']];
                        }
                        // le type de structure est le meme que l'evenement precedent , on ne l'affiche pas, c'est pour cela qu'on le transmet a la fonction d'affichage
                        $retourEvenement = $this->afficher($value['idEvenementAssocie'], 'simple', null, $champsCacheTransmis, $params);
                        $champsCacheTransmis = array('idTypeStructurePrecedent' => $retourEvenement['idTypeStructure']);
                        $titreAncre = $retourEvenement['titreAncre'];
                        if ($titreAncre == 'Sans titre' && ($retourEvenement['isMH'] || $retourEvenement['isISMH'])) {
                            if ($retourEvenement['isMH']) {
                                $titreAncre = "<b>" . _("Classement aux Monuments Historiques") . "</b>";
                            }
                            if ($retourEvenement['isISMH']) {
                                $titreAncre = "<b>" . _("Inscription à l'Inventaire Supplémentaire des Monuments Historiques") . "</b>";
                            }
                        } elseif ($titreAncre != _("Sans titre") && ($retourEvenement['isMH'] || $retourEvenement['isISMH'])) {
                            if ($retourEvenement['isMH']) {
                                $titreAncre .= " <b>(MH)</b>";
                            }
                            if ($retourEvenement['isISMH']) {
                                $titreAncre .= " <b>(ISMH)</b>";
                            }
                        }
                        if ($retourEvenement['nomTypeEvenement'] != '') {
                            $titreAncre .= " - " . $retourEvenement['nomTypeEvenement'];
                        }
                        if ($retourEvenement['date'] != '') {
                            $titreAncre .= " - " . $retourEvenement['date'];
                        }
                        if ($retourEvenement['dateFin'] != '') {
                            $titreAncre .= " " . $retourEvenement['dateFin'];
                        }
                        if (isset($this->variablesGet['affichePositionnementEvenements']) && $this->variablesGet['affichePositionnementEvenements'] == '1') {
                            // si on est en mode de positionnement des evenements manuellement
                            $arrayConfigPositionnementEvenement[$indicePositionnement]['idEvenement'] = array('value' => $value['idEvenementAssocie'], 'type' => 'identifiant');
                            $arrayConfigPositionnementEvenement[$indicePositionnement]['illustration'] = array('value' => "<img src='" . $this->urlImages . "doubleFlechesVerticales.jpg' border=0>", 'type' => 'free');
                            $arrayConfigPositionnementEvenement[$indicePositionnement]['titre'] = array('value' => $titreAncre, 'type' => 'free', 'styleColonneDonnees' => 'font-size:12px;');
                            $indicePositionnement++;
                            /*$t->assign_block_vars('noSimple.modePositionnementEvenements',array());
                            
                            							$t->assign_block_vars('noSimple.modePositionnementEvenements.titresEvenements',array(
                            									'imagesIllustrationGlisserDeposer'=>$this->urlImages."",
                            									'titre' => $titreAncre
                            
                            							));
                            							*/
                            //'url'=> $this->creerUrl('selectTitreAdresse','adresseDetail',array('archiIdAdresse'=>$idAdresse,'idEvenementTitreSelection'=>$value['idEvenementAssocie'],'archiIdEvenementGroupeAdresse'=>$idEvenementGroupeAdresse))
                        } elseif (isset($this->variablesGet['afficheSelectionTitre']) && $this->variablesGet['afficheSelectionTitre'] == '1') {
                            // si on est en mode de selection d'un titre le titre courant s'affiche en rouge
                            if ($idEvenementWhereIsTitre == $value['idEvenementAssocie']) {
                                $titreAncre = "<span style='color:red;'>" . $titreAncre . "</span>";
                            }
                            $t->assign_block_vars('noSimple.ancres', array('titre' => $titreAncre, 'url' => $this->creerUrl('selectTitreAdresse', 'adresseDetail', array('archiIdAdresse' => $idAdresse, 'idEvenementTitreSelection' => $value['idEvenementAssocie'], 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse))));
                        } else {
                            $t->assign_block_vars('noSimple.ancres', array('titre' => $titreAncre, 'url' => "#" . $indice));
                        }
                        if ($this->variablesGet['selection'] == 'personne') {
                            $formulaireCommentaire = $this->getFormComment($value['idEvenementAssocie'], $this->getCommentairesFields('personne', $this->variablesGet['id']), 'personne');
                            $listeCommentaires = $this->getListCommentairesEvenements($value['idEvenementAssocie']);
                        } else {
                            $formulaireCommentaire = $this->getFormComment($value['idEvenementAssocie'], $this->getCommentairesFields('evenement'), 'evenement');
                            $listeCommentaires = $this->getListCommentairesEvenements($value['idEvenementAssocie']);
                        }
                        $t->assign_block_vars('evenementLie', array('evenement' => $retourEvenement['html'], 'numeroAncre' => $indice, 'listeCommentaires' => $listeCommentaires, 'formulaireCommentaire' => $formulaireCommentaire));
                        $i++;
                    }
                    // affichage de la liste triable a la place de l'historique des evenements, quand on est en mode positionnement d'evenements
                    if (isset($this->variablesGet['affichePositionnementEvenements']) && $this->variablesGet['affichePositionnementEvenements'] == '1') {
                        $t->assign_block_vars('noSimple.modePositionnementEvenements', array());
                        // affiche le bloc
                        $t->assign_vars(array('sortableFormListe' => $imageObject->createSortableFormListeFromArray($arrayConfigPositionnementEvenement, array('noEntetesTableau' => true)) . $imageObject->getJSInitAfterListDragAndDrop('slideshow0', array('onlyHiddenFormField' => true)), 'onClickValidationPositionnementEvenement' => $imageObject->getJSSubmitDragAndDrop() . "document.getElementById('formPositionnementEvenements').submit();", 'formActionPositionnementEvenements' => $this->creerUrl('enregistrerPositionnementEvenements', 'adresseDetail', array('archiIdAdresse' => $idAdresseCourante, 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse))));
                        // ajout du code d'initialisation au niveau de la fin de la page (footer)
                        $this->addToJsFooter($imageObject->getJSInitAfterListDragAndDrop('slideshow0', array('onlyJavascriptInitCode' => true)));
                    }
                    // ajout de la possibilité de préciser que l'on ne veut pas de titre , l'adresse s'affichera donc pour l'evenement a la place d'un titre
                    if (isset($this->variablesGet['afficheSelectionTitre']) && $this->variablesGet['afficheSelectionTitre'] == '1') {
                        $titreAncre = "Pas de titre";
                        if ($idEvenementWhereIsTitre == -1) {
                            $titreAncre = "<span style='color:red;'>Pas de titre</span>";
                        }
                        $t->assign_block_vars('noSimple.choixEvenementSansTitre', array('titre' => $titreAncre, 'url' => $this->creerUrl('selectTitreAdresse', 'adresseDetail', array('archiIdAdresse' => $idAdresse, 'idEvenementTitreSelection' => -1, 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse))));
                    }
                    // affichage de la liste des historiques de nom de rue pour l'adresse si celle ci ne concerne qu'une rue , sans numero de rue.
                    $infosAdresseCourante = $adresse->getArrayAdresseFromIdAdresse($idAdresse);
                    if (($infosAdresseCourante['numero'] == '0' || $infosAdresseCourante['numero'] == '') && ($infosAdresseCourante['idRue'] != '' || $infosAdresseCourante['idRue'] != '0')) {
                        $d = new dateObject();
                        // dans ce cas on va chercher les infos de l'historique de la rue
                        $reqHistoriqueNomRue = "SELECT * FROM historiqueNomsRues WHERE idRue = '" . $infosAdresseCourante['idRue'] . "' ORDER BY annee";
                        $resHistoriqueNomRue = $this->connexionBdd->requete($reqHistoriqueNomRue);
                        if (mysql_num_rows($resHistoriqueNomRue) > 0) {
                            $t->assign_block_vars("noSimple.isHistoriqueNomsRue", array());
                            while ($fetchHistoriqueNomRue = mysql_fetch_assoc($resHistoriqueNomRue)) {
                                if ($fetchHistoriqueNomRue['prefixe'] != '') {
                                    $nomRue = stripslashes($fetchHistoriqueNomRue['prefixe']) . " " . stripslashes($fetchHistoriqueNomRue['nomRue']);
                                } else {
                                    $nomRue = stripslashes($fetchHistoriqueNomRue['nomRue']);
                                }
                                $t->assign_block_vars("noSimple.listeHistoriqueNomsRue", array("annee" => $d->toFrenchAffichage($fetchHistoriqueNomRue['annee']), "nomRue" => $nomRue, "commentaire" => stripslashes($fetchHistoriqueNomRue['commentaire'])));
                            }
                        }
                    }
                    $a = new archiAdresse();
                    $listeCommentaires = $a->getListeCommentaires($idEvenementGroupeAdresse);
                    $formulaireCommentaire = $this->getFormComment($idEvenementGroupeAdresse, $this->getCommentairesFields(), '');
                    if (!ArchiPersonne::isPerson($idEvenementGroupeAdresse)) {
                        $t->assign_block_vars('commentairesAdresse', array('formulaireCommentaire' => $formulaireCommentaire, 'listeCommentaires' => $listeCommentaires));
                    }
                    $t->assign_vars(array('nbEvenements' => count($tabIdEvenementsLies) + 1));
                } else {
                }
            }
            // *************************************************************************************************************************************
        } else {
            echo 'aucun résultat !';
        }
        ob_start();
        $t->pparse('ev');
        $html .= ob_get_contents();
        ob_end_clean();
        if (isset($codeARajouterALaFin)) {
            $html .= $codeARajouterALaFin;
            // a cause du JS executé a la fin sinon il ne trouve pas certains divs
        }
        // on ferme le formulaire s'il a ete ouvert
        if ($modeAffichage != 'simple' && $modeAffichage != 'consultationHistoriqueEvenement') {
            if ($estConnecte && (isset($this->variablesGet['afficheSelectionImage']) && $this->variablesGet['afficheSelectionImage'] == '1' || isset($this->variablesGet['afficheSelectionTitre']) && $this->variablesGet['afficheSelectionTitre'] == '1')) {
                $html .= "</form>";
            }
        }
        $s = new archiSource();
        $html .= $s->getPopupDescriptionSource();
        return array('html' => $html, 'idTypeStructure' => $retourIdTypeStructure, 'titreAncre' => $retourTitreAncre, 'nomTypeEvenement' => $retourNomTypeEvenement, 'date' => $retourDate, 'isMH' => $isMH, 'isISMH' => $isISMH, 'listeGroupeAdressesAffichees' => $listeGroupeAdressesAffichees, 'dateFin' => $retourDateFin);
    }
 /**
  * Afficher la gestion des étapes d'un parcours
  * 
  * @param array $params Paramètres
  * 
  * @return string HTML
  * */
 public function getHtmlGestionEtapesParcours($params = array())
 {
     $html = "<h1>Gestion des étapes du parcours</h1>";
     $idParcours = 0;
     if (isset($this->variablesGet['archiIdParcours']) && $this->variablesGet['archiIdParcours'] != '') {
         $f = new formGenerator();
         $a = new archiAdresse();
         $bbCode = new bbCodeObject();
         $s = new stringObject();
         $formName = 'formGestionEtapes';
         $popupChoixAdresses = new calqueObject(array('idPopup' => 'popupChoixAdresses'));
         $popupVisualisationGoogleMap = new calqueObject(array('idPopup' => 'popupVisualisationGoogleMap'));
         $idParcours = $this->variablesGet['archiIdParcours'];
         $reqNbEtapes = "SELECT idEtape FROM etapesParcoursArt WHERE idParcours = '" . $idParcours . "'";
         $resNbEtapes = $this->connexionBdd->requete($reqNbEtapes);
         $html .= "<br>nombre d'étapes : " . mysql_num_rows($resNbEtapes) . "<br>";
         $reqListeEtapes = "SELECT idEtape,idEvenementGroupeAdresse,position,commentaireEtape FROM etapesParcoursArt WHERE idParcours = '" . $idParcours . "' ORDER BY position ASC,idEtape ASC";
         $resListeEtapes = $this->connexionBdd->requete($reqListeEtapes);
         $listeTriableObject = new imageObject();
         // dans l'objet image , il y a une fonction qui permet de creer des listes triables par drag and drop
         $html .= "<script>" . $listeTriableObject->getJSFunctionsDragAndDrop() . "</script>";
         $i = 0;
         $arrayListeEtapes = array();
         while ($fetchListeEtapes = mysql_fetch_assoc($resListeEtapes)) {
             $arrayListeEtapes[$i]['idEtape'] = array('value' => $fetchListeEtapes['idEtape'], 'type' => 'identifiant');
             $arrayListeEtapes[$i]['#'] = array('value' => $i + 1, 'type' => 'free');
             $arrayListeEtapes[$i]['&nbsp;'] = array('value' => "<a href='" . $this->creerUrl('', 'etapesParcoursFormulaire', array('archiIdEtape' => $fetchListeEtapes['idEtape'], 'archiIdParcours' => $idParcours)) . "'>" . $fetchListeEtapes['idEtape'] . "</a>", 'type' => 'free', 'widthColonne' => 50);
             $arrayListeEtapes[$i]['adresse'] = array('value' => $a->getIntituleAdresseFrom($fetchListeEtapes['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse', array('setSeparatorAfterTitle' => '<br>', 'displayFirstTitreAdresse' => true, 'noVille' => true, 'noQuartier' => true, 'noSousQuartier' => true)), 'type' => 'free', 'widthColonne' => 250);
             $arrayListeEtapes[$i]['commentaire'] = array('type' => 'free', 'widthColonne' => 400, 'value' => $s->coupureTexte($s->sansBalisesHtml(stripslashes($fetchListeEtapes['commentaireEtape'])), 10));
             $coords = $a->getCoordonneesFrom($fetchListeEtapes['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse');
             $i++;
         }
         $boutonValidationOrdreEtapes = "<input type='button' name='validationOrdreAffichage' value='Validation ordre des étapes' onclick=\"document.getElementById('" . $formName . "').action='" . $this->creerUrl('enregistrerOrdreEtapesParcours', 'etapesParcoursFormulaire', array('archiIdParcours' => $idParcours)) . "';" . $listeTriableObject->getJSSubmitDragAndDrop() . "document.getElementById('" . $formName . "').submit();\">";
         $html .= $listeTriableObject->createSortableFormListeFromArray($arrayListeEtapes, array('styleEntete' => 'font-weight:bold;background-color:#007799;color:#FFFFFF;')) . $boutonValidationOrdreEtapes;
         $sousTitre = "Ajout d'une étape";
         $idEtape = 0;
         $libelleAdresse = '';
         $commentaireEtape = '';
         $idAdresse = '';
         $idEvenementGroupeAdresse = 0;
         $boutonNouveau = "";
         $boutonVisualisation = "<input type='button' name='visualisation' value='Visualiser' onclick=\"" . $popupVisualisationGoogleMap->getJSOpenPopup() . "document.getElementById('" . $popupVisualisationGoogleMap->getJSIFrameId() . "').src='" . $this->creerUrl('', 'carteGoogleMapParcoursArt', array('noHeaderNoFooter' => 1, 'archiIdParcours' => $idParcours)) . "'\">";
         $boutonRetour = "<input type='button' name='retour' value='Retour' onclick=\"location.href='" . $this->creerUrl('', 'adminListeParcours', array()) . "';\">";
         $boutonSupprimer = "";
         // ajout d'une nouvelle etape
         $formAction = $this->creerUrl('ajouterEtapeParcours', 'etapesParcoursFormulaire', array('archiIdParcours' => $idParcours));
         if (mysql_num_rows($resNbEtapes) == 0) {
             // si pas d'etapes encore , on peut definir un message
         } else {
             // il y a une ou plusieurs etapes dans le parcours
             if (isset($this->variablesGet['archiIdEtape']) && $this->variablesGet['archiIdEtape'] != '') {
                 $idEtape = $this->variablesGet['archiIdEtape'];
                 $reqEtape = "SELECT idEvenementGroupeAdresse,commentaireEtape FROM etapesParcoursArt WHERE idEtape='" . $idEtape . "'";
                 $resEtape = $this->connexionBdd->requete($reqEtape);
                 $fetchEtape = mysql_fetch_assoc($resEtape);
                 $sousTitre = _("Modification d'une étape");
                 $formAction = $this->creerUrl('modifierEtapeParcours', 'etapesParcoursFormulaire', array('archiIdParcours' => $idParcours, 'archiIdEtape' => $this->variablesGet['archiIdEtape']));
                 $commentaireEtape = $fetchEtape['commentaireEtape'];
                 $libelleAdresse = $a->getIntituleAdresseFrom($fetchEtape['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse');
                 $idAdresse = '';
                 $idEvenementGroupeAdresse = $fetchEtape['idEvenementGroupeAdresse'];
                 $boutonNouveau = "<input type='button' name='boutonNouveau' value='Nouveau' onclick=\"location.href='" . $this->creerUrl('', 'etapesParcoursFormulaire', array('archiIdParcours' => $idParcours)) . "';\">";
                 $boutonSupprimer = "<input type='button' name='boutonSupprimer' value='Supprimer' onclick=\"location.href='" . $this->creerUrl('supprimerEtapeParcours', 'etapesParcoursFormulaire', array('archiIdParcours' => $idParcours, 'archiIdEtapeSupprimer' => $idEtape)) . "';\">";
                 $coord = $a->getCoordonneesFrom($fetchEtape['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse');
             } else {
                 $coord = array("latitude" => "", "longitude" => "");
             }
         }
         $bbCodeElementsArray = $bbCode->getBoutonsMiseEnFormeTextArea(array('formName' => $formName, 'fieldName' => 'commentaireEtape'));
         $html .= "<hr/>";
         // formulaire ajout-modif etape
         $html .= "<h2>{$sousTitre}</h2>";
         $configFields = array('idParcours' => array('libelle' => 'idParcours', 'type' => 'hidden', 'error' => '', 'value' => '', 'forceValueTo' => $idParcours, 'htmlCode' => ''), 'idEtape' => array('libelle' => 'idEtape', 'type' => 'hidden', 'error' => '', 'value' => '', 'forceValueTo' => $idEtape, 'htmlCode' => ''), 'libelleEvenementGroupeAdresse' => array('libelle' => _('Adresse'), 'type' => 'text', 'error' => '', 'value' => '', 'forceValueTo' => $libelleAdresse, 'htmlCode' => "style='width:300px;' disabled", 'htmlCode2' => "<input type='button' name='choixAdresse' value='Choisir' onclick=\"document.getElementById('" . $popupChoixAdresses->getJSDivId() . "').style.top=(getScrollHeight()+70)+'px';" . $popupChoixAdresses->getJSOpenPopup() . "document.getElementById('" . $popupChoixAdresses->getJSIFrameId() . "').src='" . $this->creerUrl('', 'recherche', array('noHeaderNoFooter' => 1, 'modeAffichage' => 'popupRechercheAdresseAdminParcours')) . "';\">"), 'latitude' => array('libelle' => _('Latitude'), 'type' => 'text', 'error' => '', 'value' => '', 'forceValueTo' => $coord["latitude"], 'htmlCode' => "style='width:300px;' readonly onclick='this.select();'"), 'longitude' => array('libelle' => _('Longitude'), 'type' => 'text', 'error' => '', 'value' => '', 'forceValueTo' => $coord["longitude"], 'htmlCode' => "style='width:300px;' readonly onclick='this.select();'"), 'idEvenementGroupeAdresse' => array('libelle' => 'idEvenementGroupeAdresse', 'type' => 'hidden', 'error' => '', 'value' => '', 'forceValueTo' => $idEvenementGroupeAdresse, 'htmlCode' => "style='width:300px;'"), 'commentaireEtape' => array('libelle' => 'commentaire', 'type' => 'bigText', 'error' => '', 'value' => '', 'forceValueTo' => $commentaireEtape, 'default' => '', 'htmlCode' => "style='width:500px;height:200px;'", 'htmlCodeBeforeField' => $bbCodeElementsArray['boutonsHTML'], 'htmlCode2' => $bbCodeElementsArray['divAndJsAfterForm']));
         $configForm = array('fields' => $configFields, 'formAction' => $formAction, 'formName' => $formName, 'onClickSubmitButton' => $listeTriableObject->getJSSubmitDragAndDrop(), 'codeHtmlAfterSubmitButton' => $boutonSupprimer . $boutonNouveau . $boutonVisualisation . $boutonRetour, 'codeHtmlInFormAfterFields' => $listeTriableObject->getJSInitAfterListDragAndDrop());
         $html .= $f->afficherFromArray($configForm);
         $html .= $popupChoixAdresses->getDiv(array('lienSrcIFrame' => $this->creerUrl('', 'recherche', array('noHeaderNoFooter' => 1, 'modeAffichage' => 'popupRechercheAdresseAdminParcours')), 'width' => 750, 'height' => 500, 'left' => 10, 'top' => 70, 'titre' => 'archi-strasbourg.org : Parcours'));
         $html .= $popupVisualisationGoogleMap->getDiv(array('lienSrcIFrame' => ''));
         // on ne precharge pas la carte google map sinon il y a un bug au niveau de la carte , le centre se placerai en haut a gauche
         $html .= "<script  >" . $popupChoixAdresses->getJsToDragADiv() . "</script>";
         // on rend le div deplacable
         $html .= "<script  >" . $popupVisualisationGoogleMap->getJsToDragADiv() . "</script>";
         // on rend le div deplacable
     }
     return $html;
 }