diff --git a/ecrire/action/changer_mode_document.php b/ecrire/action/changer_mode_document.php
index 459b5dce3aa9e86cc8164955e4c8c003a9f0e18d..d5a7ffd4eac029411cde986addccb748d4a4c94f 100644
--- a/ecrire/action/changer_mode_document.php
+++ b/ecrire/action/changer_mode_document.php
@@ -36,5 +36,17 @@ function action_changer_mode_document_post($r)
 	AND in_array($mode, array('vignette', 'image', 'document'))) {
 		sql_updateq('spip_documents', array('mode'=>$mode), 'id_document='.$id_document);
 	}
+	if ($case = _request('afficher_case')){
+		$case = explode('-',$case);
+		list($id,$type,$script) = $case;
+		include_spip('inc/presentation');
+		include_spip('inc/documents');
+		include_spip('inc/actions');
+		// vilain hack pour ne pas recharger un script js
+		affiche_raccourci_doc('doc', $id_document, 'left');
+		// voila
+		ajax_retour(afficher_case_document($id_document, $id, $script, $type, true));
+		exit();
+	}
 }
 ?>
diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php
index a76ef40d171611cb0f271167ef1bdb3a5a010f4b..834e0d333f676a5c05e21495337f215b6fa5d3ec 100644
--- a/ecrire/inc/documents.php
+++ b/ecrire/inc/documents.php
@@ -493,7 +493,7 @@ function afficher_case_document($id_document, $id, $script, $type, $deplier=fals
 		
 		$ret .= fin_cadre_relief(true);
 	}
-	return $ret;
+	return "<div>$ret</div>"; // on encapsule chaque document dans un container pour permettre son remplacement en ajax
 }
 
 // Etablit la liste des documents orphelins, c'est-a-dire qui ne sont lies
diff --git a/ecrire/inc/legender.php b/ecrire/inc/legender.php
index a93e16ce5cfba221b19634cd840d0a6ad7850b2f..f4703854ee876c106c5edbb8fbf5dc466f4b56d1 100644
--- a/ecrire/inc/legender.php
+++ b/ecrire/inc/legender.php
@@ -201,7 +201,7 @@ function legender_image_doc($document, $id_document, $id, $type, $s, $script, $a
 				: "new=oui"
 			) . "&type=$type&s=$s#$ancre");
 
-	return icone_horizontale($texte, $action, $logo, '', false);
+	return icone_horizontale($texte, $action, $logo, '', false," onclick=\"jQuery('#document$id_document').parent().animeajax().load(this.href+'&afficher_case=$id-$type-$script&var_noajax=1');return false;\"");
 }
 
 
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index 3d0378b3df2a8c3a3414a4d7102b6c511b1a7f22..c8627f1588667d47bdd2222de69eaceb87474069 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -1264,9 +1264,11 @@ function spip_initialisation_suite() {
 
 	// La requete est-elle en ajax ?
 	define('_AJAX',
-		isset($_SERVER['HTTP_X_REQUESTED_WITH']) # ajax jQuery
+		(isset($_SERVER['HTTP_X_REQUESTED_WITH']) # ajax jQuery
 		OR @$_REQUEST['var_ajax_redir'] # redirection 302 apres ajax jQuery
 		OR @$_REQUEST['var_ajaxcharset'] # compat ascendante pour plugins
+		)
+		AND !@$_REQUEST['var_noajax'] # horrible exception, car c'est pas parce que la requete est ajax jquery qu'il faut tuer tous les formulaires ajax qu'elle contient
 	);
 
 	# nombre de pixels maxi pour calcul de la vignette avec gd