diff --git a/ecrire/inc_presentation.php3 b/ecrire/inc_presentation.php3
index 8e4fc3a2ad3e34b7f3e494620ca41a12a5b16ea5..6ce4316072bc00994ef6f61d10347728f443f6ba 100644
--- a/ecrire/inc_presentation.php3
+++ b/ecrire/inc_presentation.php3
@@ -1891,50 +1891,14 @@ function lien_change_var($lien, $set, $couleur, $coords, $titre, $mouseOver="")
 // Debut du corps de la page
 //
 
-function bandeau_rubrique ($id_rubrique, $titre_rubrique, $z = 1) {
-	global $zdecal;
-	global $spip_ecran, $spip_display;
-	global $spip_lang, $spip_lang_rtl, $spip_lang_left, $spip_lang_right;
-
-	// Calcul du nombre max de sous-menus	
-	$zdecal = $zdecal + 1;
-	if ($spip_ecran == "large") $zmax = 8;
-	else $zmax= 6;
-	
-	// Limiter volontairement le nombre de sous-menus 
-	$zmax = 3;
-	
-	
-	if ($zindex < 1) $zindex = 1;
-	if ($zdecal == 1) $image = "secteur-12.gif";
-	else $image = "rubrique-12.gif";
-	
-	
-	
-	$result_rub = spip_query("SELECT * FROM spip_rubriques WHERE id_parent=$id_rubrique ORDER BY titre");
-
-	$i = spip_num_rows($result_rub);
-	if ($i > 0 AND $zdecal < $zmax) {
-//		echo "<div style='position: relative; z-index: $z;' onMouseOver=\"findObj('bandeau_rub$id_rubrique').style.visibility = 'visible';\" onMouseOut=\"findObj('bandeau_rub$id_rubrique').style.visibility = 'hidden';\">\n";
-		echo "<div style='position: relative; z-index: $z;' onMouseOver=\"setvisibility('bandeau_rub$id_rubrique', 'visible');\" onMouseOut=\"setvisibility('bandeau_rub$id_rubrique', 'hidden');\">\n";
-		echo "<div style='background: url(img_pack/triangle-droite$spip_lang_rtl.gif) $spip_lang_right center no-repeat;'><a href='naviguer.php3?coll=$id_rubrique' class='bandeau_rub' style='background-image: url(img_pack/$image);'>$titre_rubrique</a></div>\n";
-		echo "<div class='bandeau_rub' style='z-index: ".($z+1).";' id='bandeau_rub$id_rubrique'>";
-		while ($row_rub = spip_fetch_array($result_rub)) {
-			$id_rub = $row_rub["id_rubrique"];
-			$titre_rub = supprimer_numero(typo($row_rub["titre"]));
-			//echo "<a href='naviguer.php3?coll=$id_rub' class='bandeau_rub'>$titre_rub</a>";
-			bandeau_rubrique ($id_rub, $titre_rub, ($z+$i));
-			$i = $i - 1;
-		}
-		echo "</div>";
-		echo "</div></n>";
-	} else {
-		echo "<div><a href='naviguer.php3?coll=$id_rubrique' class='bandeau_rub' style='background-image: url(img_pack/$image); padding-$spip_lang_right: 2px;'>$titre_rubrique</a></div>";
-	}
-	$zdecal = $zdecal - 1;
+function afficher_menu_rubriques() {
+	global $spip_lang_rtl;
+	$date_maj = lire_meta("date_calcul_rubriques");
 
+	echo '<script type="text/javascript" src="js_menu_rubriques.php?'.$date_maj.'&dir='.$spip_lang_rtl.'"></script>';
 }
 
+
 function debut_page($titre = "", $rubrique = "asuivre", $sous_rubrique = "asuivre", $onLoad = "") {
 	global $couleurs_spip;
 	global $couleur_foncee;
@@ -2297,7 +2261,7 @@ else {
 		echo "<div id='bandeautoutsite' class='bandeau_couleur_sous' style='$spip_lang_left: 0px; width: 200px;'>";
 		echo "<a href='articles_tous.php3' class='lien_sous'>"._T('icone_site_entier')."</a>";
 		
-
+/*
 		$query = "SELECT id_rubrique FROM spip_rubriques LIMIT 0,1";
 		$result = spip_query($query);
 		
@@ -2327,9 +2291,13 @@ else {
 			}
 			
 		}
+		*/
 
 
 		// Mettre en attente l'affichage du menu de navigation (trop lourd)
+		
+		afficher_menu_rubriques();
+		
 		/*
 		$result_racine = spip_query("SELECT * FROM spip_rubriques WHERE id_parent=0 ORDER BY titre");
 		$i = spip_num_rows($result_racine);
@@ -2348,6 +2316,7 @@ else {
 		}
 		*/
 		
+		
 		echo "</div>";
 	
 	
diff --git a/ecrire/inc_rubriques.php3 b/ecrire/inc_rubriques.php3
index 5de962ea9fce1c29900f47a7c33ab6fde4e4eebe..a5889e87be1051f165e53a65ac1595c1416bba72 100644
--- a/ecrire/inc_rubriques.php3
+++ b/ecrire/inc_rubriques.php3
@@ -135,6 +135,9 @@ function calculer_rubriques() {
 	while ($row = spip_fetch_array($r))
 		spip_query("UPDATE spip_syndic SET id_secteur=".$row['secteur']."
 		WHERE id_rubrique=".$row['id']);
+	
+	// Sauver la date de la derniere mise a jour (pour menu_rubriques)
+	ecrire_meta("date_calcul_rubriques", date("U"));
 
 }
 
diff --git a/ecrire/js_menu_rubriques.php b/ecrire/js_menu_rubriques.php
new file mode 100644
index 0000000000000000000000000000000000000000..45ea28c3bc26f88d2be2fb8ef02769538207d693
--- /dev/null
+++ b/ecrire/js_menu_rubriques.php
@@ -0,0 +1,72 @@
+<?php
+
+include ("inc.php3");
+
+
+function bandeau_menu() {
+		$result_racine = spip_query("SELECT * FROM spip_rubriques WHERE id_parent=0 ORDER BY titre");
+		$i = spip_num_rows($result_racine);
+		if ($i > 0) {
+			$ret = "document.write(\"<div>&nbsp;</div>\");";
+			$ret .= "document.write(\"<div class='bandeau_rubriques' style='z-index: 1;'>\");";
+			while ($row = spip_fetch_array($result_racine)) {
+				$id_rubrique = $row["id_rubrique"];
+				$titre_rubrique = supprimer_numero(typo($row["titre"]));
+				
+				$ret .= bandeau_rubrique ($id_rubrique, $titre_rubrique, $i);
+				
+				$i = $i - 1;
+			}
+			$ret .= "document.write(\"</div>\");";
+		}
+		
+		//$ret = "<script>$ret</script>";
+		
+		return $ret;
+}
+
+
+function bandeau_rubrique ($id_rubrique, $titre_rubrique, $z = 1) {
+	global $zdecal;
+	global $spip_ecran, $spip_display;
+	global $spip_lang, $spip_lang_rtl, $spip_lang_left, $spip_lang_right;
+
+	// Calcul du nombre max de sous-menus	
+	$zdecal = $zdecal + 1;
+	if ($spip_ecran == "large") $zmax = 8;
+	else $zmax= 6;
+	
+	// Limiter volontairement le nombre de sous-menus 
+	$zmax = 6;
+
+	if ($zindex < 1) $zindex = 1;
+	if ($zdecal == 1) $image = "secteur-12.gif";
+	else $image = "rubrique-12.gif";
+	
+	
+	
+	$result_rub = spip_query("SELECT * FROM spip_rubriques WHERE id_parent=$id_rubrique ORDER BY titre");
+
+	$i = spip_num_rows($result_rub);
+	if ($i > 0 AND $zdecal < $zmax) {
+		$ret .= 'document.write("<div style=\"position: relative; z-index: '.$z.';\" onMouseOver=\"setvisibility(\'bandeau_rub'.$id_rubrique.'\', \'visible\');\" onMouseOut=\"setvisibility(\'bandeau_rub'.$id_rubrique.'\', \'hidden\');\">");';
+		$ret .= 'document.write("<div style=\"background: url(img_pack/triangle-droite'.$spip_lang_rtl.'.gif) '.$spip_lang_right.' center no-repeat;\"><a href=\"naviguer.php3?coll='.$id_rubrique.'\" class=\"bandeau_rub\" style=\"background-image: url(img_pack/'.$image.');\">'.addslashes($titre_rubrique).'</a></div>");';
+		$ret .= 'document.write("<div class=\"bandeau_rub\" style=\"z-index: '.($z+1).';\" id=\"bandeau_rub'.$id_rubrique.'\">");';
+		while ($row_rub = spip_fetch_array($result_rub)) {
+			$id_rub = $row_rub["id_rubrique"];
+			$titre_rub = supprimer_numero(typo($row_rub["titre"]));
+			//echo "<a href='naviguer.php3?coll=$id_rub' class='bandeau_rub'>$titre_rub</a>";
+			$ret .= bandeau_rubrique ($id_rub, $titre_rub, ($z+$i));
+			$i = $i - 1;
+		}
+		$ret .= "document.write(\"</div></div>\");";
+	} else {
+		$ret .= 'document.write("<div><a href=\"naviguer.php3?coll='.$id_rubrique.'\" class=\"bandeau_rub\" style=\"background-image: url(img_pack/'.$image.'); padding-$spip_lang_right: 2px;\">'.addslashes($titre_rubrique).'</a></div>");';
+	}
+	$zdecal = $zdecal - 1;
+	return $ret;
+}
+
+echo bandeau_menu();
+
+?>
\ No newline at end of file
diff --git a/spip_image.php3 b/spip_image.php3
index aaf54c05085dd136f15c2661b04ab05d6e497732..757e34f949c65562f1f7faaed3193152a575189a 100644
--- a/spip_image.php3
+++ b/spip_image.php3
@@ -9,6 +9,7 @@ include_ecrire("inc_admin.php3");
 include_local("inc-cache.php3");
 
 
+
 $taille_preview = lire_meta("taille_preview");
 if ($taille_preview < 10) $taille_preview = 120;
 
@@ -280,7 +281,6 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document, $doc_vignette='',
 }
 
 
-
 // image_name n'est valide que par POST http, mais pas par la methode ftp/upload
 // par ailleurs, pour un fichier ftp/upload, il faut effacer l'original nous-memes
 if (!$image_name AND $image2) {
@@ -295,15 +295,15 @@ else {
 //
 // ajouter un document
 //
-if ($ajout_doc == 'oui') {
 
+if ($ajout_doc == 'oui') {
 	if (eregi(".zip$",$image_name) AND !$action_zip){
 		// Pretraitement des fichiers ZIP
 		// Recopier le fichier
 
 		creer_repertoire('IMG', "tmp");
 		creer_repertoire('IMG', "tmp_zip");
-
+		
 		$dest = 'IMG/tmp_zip/';
 		$dest .= ereg_replace("[^.a-zA-Z0-9_=-]+", "_", translitteration(ereg_replace("\.([^.]+)$", "", supprimer_tags(basename($image_name)))));
 		$dest .= ".zip";