/**
  * Affiche les adresses par regroupements
  * Quand on clique sur un regroupement , on affiche la liste des elements contenant ce regroupement
  *
  * @return string
  * */
 public function afficheListeRegroupee()
 {
     $html = "";
     $t = new Template($this->getCheminPhysique() . $this->cheminTemplates);
     $t->set_filenames(array('listeRegroupee' => 'listeRegroupee.tpl'));
     $r = new archiRecherche();
     if (isset($this->variablesGet['modeAffichageListe'])) {
         $modeAffichageListe = $this->variablesGet['modeAffichageListe'];
     } else {
         $modeAffichageListe = 'default';
     }
     $idVilleGeneral = 1;
     // strasbourg par defaut
     $s = new objetSession();
     if ($s->isInSession('archiIdVilleGeneral') && $s->getFromSession('archiIdVilleGeneral') != '') {
         $idVilleGeneral = $s->getFromSession('archiIdVilleGeneral');
     } elseif (isset($this->variablesGet['archiIdVilleGeneral'])) {
         $idVilleGeneral = $this->variablesGet['archiIdVilleGeneral'];
         $s->addToSession('archiIdVilleGeneral', $idVilleGeneral);
     }
     $fetchInfosVille = $this->getInfosVille($idVilleGeneral, array('fieldList' => 'v.nom as nomVille'));
     $nomVilleGeneral = $fetchInfosVille['nomVille'];
     $t->assign_vars(array('liens' => "<a href='" . $this->creerUrl('', 'listeDossiers', array('modeAffichageListe' => 'parRues', 'archiIdVilleGeneral' => $idVilleGeneral)) . "'>" . _("Par rues de") . " " . $nomVilleGeneral . "</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;<a href='" . $this->creerUrl('', 'listeDossiers', array('modeAffichageListe' => 'parQuartiers', 'archiIdVilleGeneral' => $idVilleGeneral)) . "'>" . _("Par quartiers de") . " " . $nomVilleGeneral . "</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;<a href='" . $this->creerUrl('', 'listeDossiers', array('modeAffichageListe' => 'parVilles')) . "'>" . _("Par villes") . "</a>"));
     switch ($modeAffichageListe) {
         case 'parQuartiers':
             $pagination = new paginationObject();
             $arrayQuartiers = $this->getIdQuartiersFrom($idVilleGeneral, 'ville');
             $arrayQuartiersNotEmpty = $r->getIdQuartiersNotEmpty();
             $arrayListeQuartiersNotEmpty = array();
             $arrayListeAlphabetique = array();
             foreach ($arrayQuartiers as $indice => $idQuartier) {
                 if (in_array($idQuartier, $arrayQuartiersNotEmpty['arrayListeQuartiersNonVides'])) {
                     $arrayListeQuartiersNotEmpty[] = $idQuartier;
                 }
             }
             // pagination
             $nbEnregistrementTotaux = count($arrayListeQuartiersNotEmpty);
             // nombre d'images affichées sur une page
             $nbEnregistrementsParPage = 12;
             $arrayPagination = $pagination->pagination(array('nomParamPageCourante' => 'archiPageCouranteVille', 'nbEnregistrementsParPage' => $nbEnregistrementsParPage, 'nbEnregistrementsTotaux' => $nbEnregistrementTotaux, 'typeLiens' => 'noformulaire'));
             $t->assign_vars(array('pagination' => $arrayPagination['html']));
             $req = "SELECT idQuartier, nom\n\t\t\t\t\t\tFROM quartier\n\t\t\t\t\t\tWHERE idQuartier in ('" . implode("','", $arrayListeQuartiersNotEmpty) . "')\n\t\t\t\t\t\t\t\tand nom<>'autre'\n\t\t\t\t\t\t\t\tORDER BY nom ASC\n\t\t\t\t\t\t\t\tLIMIT " . $arrayPagination['limitSqlDebut'] . "," . $nbEnregistrementsParPage . "\n\t\t\t\t\t\t\t\t\t\t";
             $tableau = new tableau();
             $res = $this->connexionBdd->requete($req);
             while ($fetch = mysql_fetch_assoc($res)) {
                 // pour chaque ville on va regarder s'il y a des adresses qui correspondent et on les compte
                 /*$reqCount = "
                 		 SELECT distinct ha.idAdresse
                 		FROM historiqueAdresse ha2, historiqueAdresse ha
                 		LEFT JOIN sousQuartier sq ON sq.idQuartier = '".$fetch['idQuartier']."'
                 		LEFT JOIN rue r ON r.idSousQuartier = sq.idSousQuartier
                 		WHERE
                 		(ha.idRue = IFNULL(r.idRue , 0)
                 				OR  ha.idQuartier = '".$fetch['idQuartier']."'
                 				OR  ha.idSousQuartier = IFNULL(sq.idSousQuartier,0))
                 		AND ha2.idHistoriqueAdresse = ha.idHistoriqueAdresse
                 		GROUP BY ha.idAdresse, ha.idHistoriqueAdresse
                 		HAVING ha.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)
                 		";*/
                 $reqRuesQuartier = "SELECT idRue FROM rue WHERE idSousQuartier IN (SELECT idSousQuartier FROM sousQuartier WHERE idQuartier=" . $fetch['idQuartier'] . ")";
                 $reqSousQuartier = "SELECT idSousQuartier FROM sousQuartier WHERE idQuartier = " . $fetch['idQuartier'];
                 $nbAdressesTotales = 0;
                 $nbAdressesRues = 0;
                 $nbAdressesSousQuartiers = 0;
                 $nbAdressesQuartiers = 0;
                 $resRuesQuartier = $this->connexionBdd->requete($reqRuesQuartier);
                 while ($fetchRuesQuartier = mysql_fetch_assoc($resRuesQuartier)) {
                     $reqCountRuesQuartier = "SELECT count(distinct idAdresse) as nbAdressesRues from historiqueAdresse WHERE idRue='" . $fetchRuesQuartier['idRue'] . "'";
                     $resCountRuesQuartier = $this->connexionBdd->requete($reqCountRuesQuartier);
                     $fetchAdressesRues = mysql_fetch_assoc($resCountRuesQuartier);
                     $nbAdressesRues += $fetchAdressesRues['nbAdressesRues'];
                 }
                 $resSousQuartier = $this->connexionBdd->requete($reqSousQuartier);
                 while ($fetchSousQuartier = mysql_fetch_assoc($resSousQuartier)) {
                     $reqCountSousQuartierQuartier = "SELECT count(distinct idAdresse) as nbAdressesSousQuartiers FROM historiqueAdresse WHERE idSousQuartier='" . $fetchSousQuartier['idSousQuartier'] . "'";
                     $resCountSousQuartierQuartier = $this->connexionBdd->requete($reqCountSousQuartierQuartier);
                     $fetchAdressesSousQuartiers = mysql_fetch_assoc($resCountSousQuartierQuartier);
                     $nbAdressesSousQuartiers += $fetchAdressesSousQuartiers['nbAdressesSousQuartiers'];
                 }
                 $reqCountQuartiers = "SELECT count(distinct idAdresse) as nbAdressesQuartier FROM historiqueAdresse WHERE idQuartier = '" . $fetch['idQuartier'] . "'";
                 $resCountQuartiers = $this->connexionBdd->requete($reqCountQuartiers);
                 $fetchCountQuartiers = mysql_fetch_assoc($resCountQuartiers);
                 $nbAdressesQuartiers += $fetchCountQuartiers['nbAdressesQuartier'];
                 $nbAdressesTotales = $nbAdressesRues + $nbAdressesSousQuartiers + $nbAdressesQuartiers;
                 $nbResultats = "(" . $nbAdressesTotales . ")";
                 $htmlPhoto = '';
                 $urlPhoto = $this->getUrlImageFromQuartier($fetch['idQuartier'], 'moyen');
                 if (!pia_ereg("transparent.gif", $urlPhoto)) {
                     // la fonction renvoi le lien vers une photo transparente si elle ne trouve pas de photo de du quartier
                     $htmlPhoto = "<a href='" . $this->creerUrl('', 'adresseListe', array('recherche_quartier' => $fetch['idQuartier'])) . "'><img src='" . $urlPhoto . "' border=0></a>";
                 } else {
                     // pas de photo
                     $htmlPhoto = "<span style='float:right;margin:0px;padding:0px;'><a href='" . $this->creerUrl('', 'adresseListe', array('recherche_quartier' => $fetch['idQuartier'])) . "'><table border='' style='margin:0px;padding:0px;border:1px solid #000000;font-size:11px;background-image:url(" . $this->getUrlImage() . "imageDefautArchiv2.jpg);' width=200 height=150><tr><td align=center valign=center style='padding-top:100px;'>Pas de photo</td></tr></table></a></span>";
                 }
                 $lien = "<a href='" . $this->creerUrl('', 'adresseListe', array('recherche_quartier' => $fetch['idQuartier'])) . "'>" . stripslashes($fetch['nom']) . "</a>" . $nbResultats;
                 if ($nbAdressesTotales > 0) {
                     $tableau->addValue($htmlPhoto . "<br>" . $lien);
                 }
             }
             $t->assign_vars(array('elements' => $tableau->createHtmlTableFromArray(3)));
             break;
         case "parVilles":
             $arrayVillesNotEmpty = $r->getIdVillesNotEmpty();
             $arrayListeVillesAvecAdresses = $arrayVillesNotEmpty["arrayIdVilles"];
             $listeVilleAvecAdresses = implode(",", $arrayListeVillesAvecAdresses);
             //pagination
             $reqNbVilles = "\n\t\t\t\t\t\tSELECT 0\n\t\t\t\t\t\tFROM ville\n\t\t\t\t\t\twhere (idPays = '1' or idPays='2')\n\t\t\t\t\t\tAND idVille in (" . $listeVilleAvecAdresses . ")\n\t\t\t\t\t\t\t\tand nom <>'autre'\n\t\t\t\t\t\t\t\t";
             $resNbVilles = $this->connexionBdd->requete($reqNbVilles);
             $nbEnregistrementTotaux = mysql_num_rows($resNbVilles);
             // nombre d'images affichées sur une page
             $nbEnregistrementsParPage = 12;
             $arrayPagination = $this->pagination(array('nomParamPageCourante' => 'archiPageCouranteVille', 'nbEnregistrementsParPage' => $nbEnregistrementsParPage, 'nbEnregistrementsTotaux' => $nbEnregistrementTotaux, 'typeLiens' => 'noformulaire'));
             $t->assign_vars(array('pagination' => $arrayPagination['html']));
             $req = "\n\t\t\t\t\t\tSELECT v.nom,v.idVille, lower(substr(v.nom,1,1)) as lettre\n\t\t\t\t\t\tFROM ville v\n\n\t\t\t\t\t\tWHERE (v.idPays = '1' or v.idPays='2')\n\t\t\t\t\t\tAND v.nom<>'autre'\n\t\t\t\t\t\tAND idVille in (" . $listeVilleAvecAdresses . ")\n\t\t\t\t\t\t\t\tORDER BY v.nom\n\t\t\t\t\t\t\t\tLIMIT " . $arrayPagination['limitSqlDebut'] . "," . $nbEnregistrementsParPage;
             $tableau = new tableau();
             $res = $this->connexionBdd->requete($req);
             while ($fetch = mysql_fetch_assoc($res)) {
                 $listeRuesVille = "SELECT idRue FROM rue WHERE idSousQuartier IN (SELECT idSousQuartier FROM sousQuartier WHERE idQuartier IN (SELECT idQuartier FROM quartier WHERE idVille='" . $fetch['idVille'] . "'))";
                 $listeSousQuartiersVille = "SELECT idSousQuartier FROM sousQuartier WHERE idQuartier IN (SELECT idQuartier FROM quartier WHERE idVille='" . $fetch['idVille'] . "')";
                 $listeQuartiersVille = "SELECT idQuartier FROM quartier WHERE idVille='" . $fetch['idVille'] . "'";
                 // comptage du nombre d'adresse liés a ces elements d'adresses
                 $resRuesVille = $this->connexionBdd->requete($listeRuesVille);
                 $nbRues = 0;
                 while ($fetchRuesVilles = mysql_fetch_assoc($resRuesVille)) {
                     $reqNbAdressesRue = "SELECT count(distinct idAdresse) as nbAdressesRue FROM historiqueAdresse WHERE idRue='" . $fetchRuesVilles['idRue'] . "'";
                     $resNbAdressesRue = $this->connexionBdd->requete($reqNbAdressesRue);
                     $fetchNbAdressesRue = mysql_fetch_assoc($resNbAdressesRue);
                     $nbRues += $fetchNbAdressesRue['nbAdressesRue'];
                 }
                 $resSousQuartiersVille = $this->connexionBdd->requete($listeSousQuartiersVille);
                 $nbSousQuartiers = 0;
                 while ($fetchSousQuartiersVille = mysql_fetch_assoc($resSousQuartiersVille)) {
                     $reqNbAdressesSousQuartier = "SELECT count(distinct idAdresse) as nbAdressesSousQuartiers FROM historiqueAdresse WHERE idSousQuartier='" . $fetchSousQuartiersVille['idSousQuartier'] . "'";
                     $resNbAdressesSousQuartier = $this->connexionBdd->requete($reqNbAdressesSousQuartier);
                     $fetchNbAdressesSousQuartier = mysql_fetch_assoc($resNbAdressesSousQuartier);
                     $nbSousQuartiers += $fetchNbAdressesSousQuartier['nbAdressesSousQuartiers'];
                 }
                 $resQuartiersVille = $this->connexionBdd->requete($listeQuartiersVille);
                 $nbQuartiers = 0;
                 while ($fetchQuartiersVille = mysql_fetch_assoc($resQuartiersVille)) {
                     $reqNbAdressesQuartier = "SELECT count(distinct idAdresse) as nbAdressesQuartiers FROM historiqueAdresse WHERE idQuartier='" . $fetchQuartiersVille['idQuartier'] . "'";
                     $resNbAdressesQuartier = $this->connexionBdd->requete($reqNbAdressesQuartier);
                     $fetchNbAdressesQuartier = mysql_fetch_assoc($resNbAdressesQuartier);
                     $nbQuartiers += $fetchNbAdressesQuartier['nbAdressesQuartiers'];
                 }
                 $nbVilles = 0;
                 $reqNbAdressesVilles = "SELECT count(distinct idAdresse) as nbAdressesVilles FROM historiqueAdresse WHERE idVille='" . $fetch['idVille'] . "'";
                 $resNbAdressesVilles = $this->connexionBdd->requete($reqNbAdressesVilles);
                 $fetchNbAdressesVilles = mysql_fetch_assoc($resNbAdressesVilles);
                 $nbVilles = $fetchNbAdressesVilles['nbAdressesVilles'];
                 $totalAdresses = $nbRues + $nbQuartiers + $nbVilles;
                 $recherche = new archiRecherche();
                 $nbResult = $recherche->getNumberOfAdresse(array('ville' => $fetch['idVille']));
                 $nbResultats = " (" . $nbResult . ")";
                 $htmlPhoto = "";
                 $urlPhoto = $this->getUrlImageFromVille($fetch['idVille'], 'moyen');
                 if ($urlPhoto != '') {
                     $htmlPhoto = "<a href='" . $this->creerUrl('', 'adresseListe', array('recherche_ville' => $fetch['idVille'])) . "'><img src='" . $urlPhoto . "' border=0></a>";
                 }
                 $lien = "<a href='" . $this->creerUrl('', 'adresseListe', array('recherche_ville' => $fetch['idVille'])) . "'>" . stripslashes($fetch['nom']) . "</a>" . $nbResultats . "<br>";
                 if ($totalAdresses > 0) {
                     $tableau->addValue($htmlPhoto . "<br>" . $lien);
                 }
             }
             $t->assign_vars(array('elements' => $tableau->createHtmlTableFromArray(3)));
             break;
         case "parRuesDeQuartier":
         default:
             // DEFAULT : affichage parRues
             // s'il n'y a pas de criteres on affiche les dossiers des rues de strasbourg
             $r = new archiRecherche();
             $s = new stringObject();
             if (isset($this->variablesGet['archiIdQuartier']) && $this->variablesGet['archiIdQuartier'] != '') {
                 $arrayRues = $this->getIdRuesFrom($this->variablesGet['archiIdQuartier'], 'quartier');
             } else {
                 $arrayRues = $this->getIdRuesFrom($idVilleGeneral, 'ville');
             }
             $arrayRuesNotEmpty = $r->getIdRuesNotEmpty();
             $arrayIdRuesNotEmpty = array();
             $arrayListeAlphabetique = array();
             foreach ($arrayRues as $indice => $idRue) {
                 if (in_array($idRue, $arrayRuesNotEmpty['arrayIdRues'])) {
                     $arrayIdRuesNotEmpty[] = $idRue;
                     $reqInitiales = "SELECT lower(substring(nom,1,1)) as initiale FROM rue WHERE idRue='" . $idRue . "'";
                     $resInitiales = $this->connexionBdd->requete($reqInitiales);
                     $fetchInitiales = mysql_fetch_assoc($resInitiales);
                     $initiale = $fetchInitiales['initiale'];
                     $arrayListeAlphabetique[] = $s->sansAccents($initiale);
                     // enleve les accents
                     if (!isset($this->variablesGet['lettreCourante']) || isset($this->variablesGet['lettreCourante']) && $s->sansAccents($initiale) == $this->variablesGet['lettreCourante']) {
                         $arrayIdRuesNotEmptyWithSelection[] = $idRue;
                         // prend en compte le nombre de rue selectionnée ou non par leur initiales
                     }
                 }
             }
             $sqlCritere = "";
             if (isset($this->variablesGet['lettreCourante']) && $this->variablesGet['lettreCourante'] != '') {
                 $sqlCritere = " AND lower(SUBSTRING(nom,1,1))=lower('" . $this->variablesGet['lettreCourante'] . "') ";
             }
             $nbEnregistrementTotaux = count($arrayIdRuesNotEmptyWithSelection);
             // nombre d'images affichées sur une page
             $nbEnregistrementsParPage = 40;
             $pagination = new paginationObject();
             if (isset($this->variablesGet['archiIdQuartier'])) {
                 $arrayPagination = $pagination->pagination(array('nomParamPageCourante' => 'archiPageRuesQuartier', 'nbEnregistrementsParPage' => $nbEnregistrementsParPage, 'nbEnregistrementsTotaux' => $nbEnregistrementTotaux, 'typeLiens' => 'freeLink', 'urlFreeLink' => $this->creerUrl('', 'listeDossiers', array('archiIdQuartier' => $this->variablesGet['archiIdQuartier'], 'modeAffichageListe' => 'parRuesDeQuartier', 'archiPageRuesQuartier' => '##numPage##'))));
             } else {
                 $arrayPagination = $pagination->pagination(array('nomParamPageCourante' => 'archiPageCouranteVille', 'nbEnregistrementsParPage' => $nbEnregistrementsParPage, 'nbEnregistrementsTotaux' => $nbEnregistrementTotaux, 'typeLiens' => 'noformulaire', 'arrayListeAlphabetique' => $arrayListeAlphabetique));
             }
             $t->assign_vars(array('pagination' => $arrayPagination['html']));
             $req = "\n\t\t\t\t\t\tSELECT nom,idRue,prefixe, lower(substr(nom,1,1)) as lettre\n\t\t\t\t\t\tFROM rue\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\tidRue in ('" . implode("','", $arrayIdRuesNotEmpty) . "')\n\t\t\t\t\t\t{$sqlCritere}\n\t\t\t\t\t\tORDER BY lettre\n\t\t\t\t\t\tLIMIT " . $arrayPagination['limitSqlDebut'] . "," . $nbEnregistrementsParPage;
             $res = $this->connexionBdd->requete($req);
             $tableau = new tableau();
             while ($fetch = mysql_fetch_assoc($res)) {
                 // pour chaque rue on va regarder s'il y a des adresses qui correspondent et on les compte (affichage du nombre de resultats)
                 $reqCount = "SELECT count(distinct idAdresse) as nbAdresses FROM historiqueAdresse WHERE idRue='" . $fetch['idRue'] . "'";
                 $resCount = $this->connexionBdd->requete($reqCount);
                 $fetchCount = mysql_fetch_assoc($resCount);
                 $valCount = $fetchCount['nbAdresses'];
                 $nbResultats = " (" . $valCount . ")";
                 $htmlPhoto = '';
                 //$urlPhoto = $this->getUrlImageFromRue($fetch['idRue'],'moyen');
                 $urlPhoto = "resizeImage.php?id=" . $this->getIdImageFromRue($fetch['idRue']);
                 if (!pia_ereg("transparent.gif", $urlPhoto)) {
                     // la fonction renvoi le lien vers une photo transparente si elle ne trouve pas de photo de la rue
                     $htmlPhoto = "<a href='" . $this->creerUrl('', 'adresseListe', array('recherche_rue' => $fetch['idRue'])) . "'><img src='" . $urlPhoto . "' border=0></a><br>";
                 } else {
                     // pas de photo
                     $htmlPhoto = "<a style='margin:0px;padding:0px;' href='" . $this->creerUrl('', 'adresseListe', array('recherche_rue' => $fetch['idRue'])) . "'><table border='' style='margin:0px;padding:0px;border:1px solid #000000;font-size:11px;background-image:url(" . $this->getUrlImage() . "imageDefautArchiv2.jpg);' width=200 height=150><tr><td align=center valign=center style='padding-top:100px;'>Pas de photo</td></tr></table></a>";
                 }
                 $lien = "<a href='" . $this->creerUrl('', 'adresseListe', array('recherche_rue' => $fetch['idRue'])) . "'>" . stripslashes($fetch['prefixe'] . " " . $fetch['nom']) . "</a>" . $nbResultats;
                 if ($valCount > 0) {
                     $tableau->addValue($htmlPhoto . $lien);
                 }
             }
             $t->assign_vars(array('elements' => $tableau->createHtmlTableFromArray(5)));
             break;
     }
     ob_start();
     $t->pparse('listeRegroupee');
     $html = ob_get_contents();
     ob_end_clean();
     return $html;
 }