diff --git a/ecrire/inc_calendrier.php b/ecrire/inc_calendrier.php
index 674bc0b856e34a5aa4a49be32d18579dd05061a0..81a9697b0da009e1f4a8985c8a75f10f921a8f0a 100644
--- a/ecrire/inc_calendrier.php
+++ b/ecrire/inc_calendrier.php
@@ -58,16 +58,17 @@ function calendrier_retire_args_ancre($script)
 // tous les liens de navigations sont issus de cette fonction
 // on peut definir generer_url_date et un htacces pour simplifier les URL
 
-function calendrier_args_date($script, $annee, $mois, $jour, $type) 
+function calendrier_args_date($script, $annee, $mois, $jour, $type, $finurl) 
 {
   if (function_exists('generer_url_date'))
-    return generer_url_date($script, $annee, $mois, $jour, $type);
+    return generer_url_date($script, $annee, $mois, $jour, $type, $finurl);
   else return	$script .		   
 	(ereg('[?&]$', $script) ?  "" : (strpos($script,'?') ? '&' : '?')) .
 		'annee=' . sprintf("%04d", $annee) . '&' .
 		'mois='  . sprintf("%02d", $mois) . '&' .
 		'jour='  . sprintf("%02d", $jour) . '&' .
-		'type='  . $type;
+		'type='  . $type .
+    		$finurl;
 }
 
 # prend une heure de debut et de fin, ainsi qu'une echelle (seconde/pixel)
@@ -240,8 +241,8 @@ function http_calendrier_mois_navigation($annee, $mois, $premier_jour, $dernier_
 	  $annee_prec=$annee-1;
 	}
 	else if ($mois==12){$mois_suiv=1;	$annee_suiv=$annee+1;}
-	$prec = calendrier_args_date($script, $annee_prec, $mois_prec, 1, "mois");
-	$suiv = calendrier_args_date($script, $annee_suiv, $mois_suiv, 1, "mois");
+	$prec = array($annee_prec, $mois_prec, 1, "mois");
+	$suiv = array($annee_suiv, $mois_suiv, 1, "mois");
 	$periode = affdate_mois_annee("$annee-$mois-1");
 	}
 	return
@@ -333,7 +334,7 @@ function http_calendrier_mois_sept($annee, $mois, $premier_jour, $dernier_jour,$
 		   " border-$spip_lang_left: 1px solid $couleur_claire;") .
 		  "'>" .
 		  (!_DIR_RESTREINT ? 
-		   (http_href(calendrier_args_date($script,$annee_en_cours, $mois_en_cours, $jour, "jour") . $ancre, 
+		   (http_href(calendrier_args_date($script,$annee_en_cours, $mois_en_cours, $jour, "jour", $ancre), 
 			      $jour,
 			      '', "color: $couleur_lien",'calendrier-helvetica16') . 
 		    http_calendrier_ics_message($annee_en_cours, $mois_en_cours, $jour, false)):
@@ -352,14 +353,14 @@ function http_calendrier_mois_clics($annee, $mois, $jour, $script, $ancre)
       $semaine = date("W", $d);
       return 
 	"<table width='100%'>\n<tr><td style='text-align: left'>". 
-	http_href(calendrier_args_date($script,$annee, $mois, $jour, "jour") . $ancre, 
+	http_href(calendrier_args_date($script,$annee, $mois, $jour, "jour", $ancre), 
 		  "$jour/$mois",
 		  _T('date_jour_'. (1+date('w',$d))) .
 		  " $jour " .
 		  _T('date_mois_'.(0+$mois)),
 		  '','calendrier-helvetica16') .
 	"</td><td style='text-align: right'>" .
-	http_href(calendrier_args_date($script,$annee, $mois, $jour, "semaine") . $ancre,
+	http_href(calendrier_args_date($script,$annee, $mois, $jour, "semaine", $ancre),
 		  $semaine,
 		  _T('date_semaines') . " $semaine",
 		  '',
@@ -423,8 +424,8 @@ function http_calendrier_semaine_navigation($annee, $mois, $jour, $echelle, $par
 			       $partie_cal, 
 			       $periode,
 			       $script,
-			       calendrier_args_date($script, $dannee, $dmois, ($djour-7), "semaine"),
-			       calendrier_args_date($script, $fannee, $fmois, ($fjour+1), "semaine"),
+			       array($dannee, $dmois, ($djour-7), "semaine"),
+			       array($fannee, $fmois, ($fjour+1), "semaine"),
 			       'semaine',
 			       $ancre) .
     "</td></tr>\n";
@@ -442,7 +443,7 @@ function http_calendrier_semaine_noms($annee, $mois, $jour, $script, $ancre){
 		$nomjour = _T('date_jour_'. (1+date('w',$nom)));
 		$bandeau .= 
 		  "\n\t<th class='calendrier-th'>" .
-		  http_href((calendrier_args_date($script, date("Y",$nom), $numois, $num, 'jour') . $ancre),
+		  http_href((calendrier_args_date($script, date("Y",$nom), $numois, $num, 'jour', $ancre)),
 			    ($nomjour .
 			     " " .
 			     $num .
@@ -490,8 +491,8 @@ function http_calendrier_jour($annee, $mois, $jour, $echelle, $partie_cal, $scri
 				     (nom_jour("$annee-$mois-$jour") . " " .
 				      affdate_jourcourt("$annee-$mois-$jour")),
 				     $script,
-				     calendrier_args_date($script, $annee, $mois, ($jour-1), "jour"),
-				     calendrier_args_date($script, $annee, $mois, ($jour+1), "jour"),
+				     array($annee, $mois, ($jour-1), "jour"),
+				     array($annee, $mois, ($jour+1), "jour"),
 				     'jour',
 				     $ancre) .
 	  "</td>" .
@@ -763,7 +764,7 @@ function http_calendrier_ics_titre($annee, $mois, $jour,$script, $finurl='')
 	$annee = date("Y",$date);
 
 	return "<div class='calendrier-arial10 calendrier-titre'>" .
-	  http_href(calendrier_args_date($script, $annee, $mois, $jour, 'jour') . $finurl,
+	  http_href(calendrier_args_date($script, $annee, $mois, $jour, 'jour', $finurl),
 		    affdate_jourcourt("$annee-$mois-$jour"),
 		    '', '', 'calendrier-noir') .
 	  "</div>";
@@ -895,9 +896,18 @@ function http_calendrier_navigation($annee, $mois, $jour, $echelle, $partie_cal,
 
 	if (!$echelle) $echelle = DEFAUT_D_ECHELLE;
 
-	$args = calendrier_args_date($script, $annee, $mois, $jour, $type);
-	$args_e = "$args&echelle=$echelle";
-	$args_p = "$args&partie_cal=$partie_cal";
+	if ($args_pred) {
+	  list($a, $m, $j, $t) = $args_pred;
+	  $args_pred = calendrier_args_date($script, $a, $m, $j, $t, "&echelle=$echelle&partie_cal=$partie_cal$ancre");
+	}
+
+	if ($args_suiv) {
+	  list($a, $m, $j, $t) = $args_suiv;
+	  $args_suiv = calendrier_args_date($script, $a, $m, $j, $t, "&echelle=$echelle&partie_cal=$partie_cal$ancre");
+	}
+
+	$args_e = calendrier_args_date($script, $annee, $mois, $jour, $type, "&echelle=$echelle");
+	$args_p = calendrier_args_date($script, $annee, $mois, $jour, $type, "&partie_cal=$partie_cal");
 	$today=getdate(time());
 	$jour_today = $today["mday"];
 	$mois_today = $today["mon"];
@@ -939,20 +949,20 @@ function http_calendrier_navigation($annee, $mois, $jour, $echelle, $partie_cal,
 					 '', 
 					 _T('info_zoom'). '+')
 		  ))
-	  . http_href_img(calendrier_args_date($script,$annee, $mois, $jour, "jour") . "&echelle=$echelle&partie_cal=$partie_cal$ancre","cal-jour.gif",
+	  . http_href_img(calendrier_args_date($script,$annee, $mois, $jour, "jour", "&echelle=$echelle&partie_cal=$partie_cal$ancre"),"cal-jour.gif",
 			  (($type == 'jour') ? " class='calendrier-opacity'" : ''),
 			  _T('cal_par_jour'))
 
-	  . http_href_img(calendrier_args_date($script,$annee, $mois, $jour, "semaine") . "&echelle=$echelle&partie_cal=$partie_cal$ancre", "cal-semaine.gif", 
+	  . http_href_img(calendrier_args_date($script,$annee, $mois, $jour, "semaine", "&echelle=$echelle&partie_cal=$partie_cal$ancre"), "cal-semaine.gif", 
 			  (($type == 'semaine') ?  " class='calendrier-opacity'" : "" ),
 			  _T('cal_par_semaine'))
 
-	  . http_href_img(calendrier_args_date($script,$annee, $mois, $jour, "mois") . "&echelle=$echelle&partie_cal=$partie_cal$ancre","cal-mois.gif",
+	  . http_href_img(calendrier_args_date($script,$annee, $mois, $jour, "mois", "&echelle=$echelle&partie_cal=$partie_cal$ancre"),"cal-mois.gif",
 			  (($type == 'mois') ? " class='calendrier-opacity'" : "" ),
 			  _T('cal_par_mois'))
 	  . "</div>"
 	  . "&nbsp;&nbsp;"
-	  . http_href_img(calendrier_args_date($script,$annee_today, $mois_today, $jour_today, $type) . "&echelle=$echelle&partie_cal=$partie_cal$ancre",
+	  . http_href_img(calendrier_args_date($script,$annee_today, $mois_today, $jour_today, $type, "&echelle=$echelle&partie_cal=$partie_cal$ancre"),
 			  "cal-today.gif",
 			  (" onmouseover=\"montrer('$id');\"" .
 			   (($annee == $annee_today && $mois == $mois_today && (($type == 'mois')  || ($jour == $jour_today)))
@@ -960,11 +970,11 @@ function http_calendrier_navigation($annee, $mois, $jour, $echelle, $partie_cal,
 			  _T("ecrire:info_aujourdhui"))
 	  . "&nbsp;"
 	  . (!$args_pred ? '' :
-	     http_href("$args_pred&echelle=$echelle&partie_cal=$partie_cal$ancre",
+	     http_href($args_pred,
 		       http_img_pack("fleche-$spip_lang_left.png", '&lt;&lt;&lt;', "class='calendrier-png'"),
 		       _T('precedent')))
 	  . (!$args_suiv ? '' :
-	     http_href("$args_suiv&echelle=$echelle&partie_cal=$partie_cal$ancre",
+	     http_href($args_suiv,
 		       http_img_pack("fleche-$spip_lang_right.png",  '&gt;&gt;&gt;', "class='calendrier-png'"),
 		       _T('suivant')))
 	  . "&nbsp;&nbsp;"
@@ -991,11 +1001,11 @@ function http_calendrier_invisible($annee, $mois, $jour, $script, $ancre, $id)
 	$annee_apres = $annee + 1;
 
 	for ($i=$mois; $i < 13; $i++) {
-	  $gadget .= http_href(calendrier_args_date($script,$annee_avant, $i, 1, "mois") . $ancre,
+	  $gadget .= http_href(calendrier_args_date($script,$annee_avant, $i, 1, "mois", $ancre),
 				     nom_mois("$annee_avant-$i-1"),'','', 'calendrier-annee') ;
 			}
 	for ($i=1; $i < $mois - 1; $i++) {
-	  $gadget .= http_href(calendrier_args_date($script,$annee, $i, 1, "mois") . $ancre,
+	  $gadget .= http_href(calendrier_args_date($script,$annee, $i, 1, "mois", $ancre),
 					nom_mois("$annee-$i-1"),'','', 'calendrier-annee');
 			}
 	$gadget .= "</td></tr>"
@@ -1009,11 +1019,11 @@ function http_calendrier_invisible($annee, $mois, $jour, $script, $ancre, $id)
 		. "</tr>"
 		. "\n<tr><td colspan='3' style='text-align:$spip_lang_right;'>";
 	for ($i=$mois+2; $i <= 12; $i++) {
-	  $gadget .= http_href(calendrier_args_date($script,$annee, $i, 1, "mois") . $ancre,
+	  $gadget .= http_href(calendrier_args_date($script,$annee, $i, 1, "mois", $ancre),
 					nom_mois("$annee-$i-1"),'','', 'calendrier-annee');
 			}
 	for ($i=1; $i < $mois+1; $i++) {
-	  $gadget .= http_href(calendrier_args_date($script, $annee_apres, $i, 1, "mois") . $ancre,
+	  $gadget .= http_href(calendrier_args_date($script, $annee_apres, $i, 1, "mois", $ancre),
 					nom_mois("$annee_apres-$i-1"),'','', 'calendrier-annee');
 			}
 	return $gadget . "</td></tr></table></div>";
@@ -1030,7 +1040,7 @@ function http_calendrier_agenda ($annee, $mois, $jour_ved, $mois_ved, $annee_ved
   if (!$evt) $evt = sql_calendrier_agenda($annee, $mois);
   return 
     "<div class='calendrier-titre calendrier-arial10'>" .
-    http_href(calendrier_args_date($script, $annee, $mois, 1, 'mois') . $ancre,
+    http_href(calendrier_args_date($script, $annee, $mois, 1, 'mois', $ancre),
 	      affdate_mois_annee("$annee-$mois-1"),
 	      '',
 	      'color: black;') .
@@ -1048,7 +1058,7 @@ function http_calendrier_clic($annee, $mois, $jour, $type, $couleur, $perso)
 
   list($script, $ancre) = $perso;
 
-  return http_href(calendrier_args_date($script, $annee, $mois, $jour,$type) . $ancre, 
+  return http_href(calendrier_args_date($script, $annee, $mois, $jour,$type, $ancre), 
 		   $jour,
 		   '',
 		   "color: $couleur; font-weight: bold");