diff --git a/ecrire/action/documenter.php b/ecrire/action/documenter.php
index f4d9bda638de8f328d818d68773b73d324f60460..3d2d81c07d7a024dd3a0da5b6c814e03c4ee5adf 100644
--- a/ecrire/action/documenter.php
+++ b/ecrire/action/documenter.php
@@ -14,9 +14,12 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/filtres');
 
+// Utiliser $_REQUEST car en Ajax on utilise GET et sinon POST.
+
 function action_documenter_dist() {
 	
 	global $action, $arg, $hash, $id_auteur, $redirect;
+
 	include_spip('inc/actions');
 	if (!verifier_action_auteur("$action-$arg", $hash, $id_auteur)) {
 		include_spip('inc/minipres');
@@ -29,30 +32,30 @@ function action_documenter_dist() {
 
 		$id_document = $r[1];
 
-		$titre_document = (corriger_caracteres($_POST['titre_document']));
-		$descriptif_document = (corriger_caracteres($_POST['descriptif_document']));
+		$titre_document = (corriger_caracteres($_REQUEST['titre_document']));
+		$descriptif_document = (corriger_caracteres($_REQUEST['descriptif_document']));
 
 			// taille du document (cas des embed)
-		if ($largeur_document = intval($_POST['largeur_document'])
-		AND $hauteur_document = intval($_POST['hauteur_document']))
+		if ($largeur_document = intval($_REQUEST['largeur_document'])
+		AND $hauteur_document = intval($_REQUEST['hauteur_document']))
 				$wh = ", largeur='$largeur_document',
 					hauteur='$hauteur_document'";
 		else $wh = "";
 
 			// Date du document (uniquement dans les rubriques)
-		if (!$_POST['jour_doc'])
-		  $date = '';
+		if (!$_REQUEST['jour_doc'])
+		  $d = '';
 		else {
-			if ($_POST['annee_doc'] == "0000")
-					$_POST['mois_doc'] = "00";
-			if ($_POST['mois_doc'] == "00")
-					$_POST['jour_doc'] = "00";
-			$d = $_POST['annee_doc'].'-'	.$_POST['mois_doc'].'-'.$_POST['jour_doc'];
+			if ($_REQUEST['annee_doc'] == "0000")
+					$_REQUEST['mois_doc'] = "00";
+			if ($_REQUEST['mois_doc'] == "00")
+					$_REQUEST['jour_doc'] = "00";
+			$date = $_REQUEST['annee_doc'].'-'	.$_REQUEST['mois_doc'].'-'.$_REQUEST['jour_doc'];
 
-			if (preg_match('/^[0-9-]+$/', $d)) $date=" date='$d',";
+			if (preg_match('/^[0-9-]+$/', $date)) $d=" date='$date',";
 		}
 				  
-		spip_query("UPDATE spip_documents SET$date titre=" . spip_abstract_quote($titre_document) . ", descriptif=" . spip_abstract_quote($descriptif_document) . " $wh WHERE id_document=".$id_document);
+		spip_query("UPDATE spip_documents SET$d titre=" . spip_abstract_quote($titre_document) . ", descriptif=" . spip_abstract_quote($descriptif_document) . " $wh WHERE id_document=".$id_document);
 
 
 		if ($date) {
@@ -66,3 +69,4 @@ function action_documenter_dist() {
 		marquer_indexer('document', $id_document);
 	}
 }
+?>
diff --git a/ecrire/exec/ajax_page.php b/ecrire/exec/ajax_page.php
index b3a184a8754333a55e29270fa77218ada87083a3..e1f248a41f16a92f3a0c7756367101458a78ec41 100644
--- a/ecrire/exec/ajax_page.php
+++ b/ecrire/exec/ajax_page.php
@@ -259,4 +259,12 @@ function ajax_page_aff_info($id, $exclus, $col, $id_ajax_fonc, $type, $rac)
 		echo "</div>";
 
 }
+
+function ajax_page_document($id, $bof, $id_document, $script, $type, $ancre)
+{
+	include_spip('inc/documents');
+	include_spip('inc/presentation');
+
+	echo formulaire_document($id_document, array(), $script, $type, $id, $ancre);
+}
 ?>
diff --git a/ecrire/img_pack/layer.js b/ecrire/img_pack/layer.js
index ef3318c26bb0afabbc154cf4f76a589d65747216..12796ff93c439e77ec95846672dcc6437409c8af 100644
--- a/ecrire/img_pack/layer.js
+++ b/ecrire/img_pack/layer.js
@@ -139,13 +139,12 @@ function aff_selection (type, rac, id) {
 
 //
 // Cette fonction charge du contenu - dynamiquement - dans un 
-
+// Ajax
 
 var url_chargee = new Array();
 var xmlhttp = new Array();
 var image_search = new Array();
 
-// Ajax
 function createXmlHttp() {
 	if(window.XMLHttpRequest)
 		return new XMLHttpRequest(); 
@@ -153,6 +152,49 @@ function createXmlHttp() {
 		return new ActiveXObject("Microsoft.XMLHTTP");
 }
 
+
+function ajah(method, url, flux, rappel)
+{
+	var xhr = createXmlHttp();
+
+	if (!xhr) return false;
+        xhr.onreadystatechange = function () {ajahReady(xhr, rappel);}
+        xhr.open(method, url, true);
+        xhr.send(flux);
+}
+
+function ajahReady(xhr, f) {
+	if (xhr.readyState == 4) {
+		if (xhr.status > 200) // Opera dit toujours 0 !
+                      {f('Erreur HTTP :  ' +  xhr.status);}
+                else  { f(xhr.responseText); }
+        }
+}
+
+function AjaxSqueeze(form, div)
+{
+	var i;
+	var u = '';
+	var noeud = document.getElementById(div); // pere du formulaire
+	if (!noeud) return true; // forcer l'envoi en mode non Ajax
+
+	for (i=0;i < form.elements.length;i++) {
+	  n = form.elements[i].name;
+	  if (n)  u += n+"="+escape(form.elements[i].value) + '&'  ;
+	}
+
+	u = form.getAttribute('action') +'?' + u;
+
+	// ce serait plus propre d'envoyer en Post mais FireFox coince
+	ajah('GET',
+	     u,
+	     null,
+	     function(r) { noeud.innerHTML = r;});
+ 
+	return false; // empecher l'envoi en mode non Ajax
+}
+
+
 function charger_id_url(myUrl, myField, jjscript) 
 {
 	var Field = findObj_forcer(myField); // selects the given element
diff --git a/ecrire/inc/actions.php b/ecrire/inc/actions.php
index 6451991232cffaae9723c5a9df631310809e8066..2376eb8eb3f3e3b2049b86bd5538e50782d658b9 100644
--- a/ecrire/inc/actions.php
+++ b/ecrire/inc/actions.php
@@ -56,8 +56,9 @@ function generer_action_auteur($action, $arg, $redirect="", $mode=false, $att=''
 	  return generer_url_action($action, "arg=$arg&id_auteur=$id_auteur&hash=$hash" . (!$redirect ? '' : ("&redirect=" . rawurlencode($redirect))), $mode);
 	if ($redirect)
 		$redirect = "\n\t\t<input name='redirect' type='hidden' value='$redirect' />";
+	// Attention, JS n'aime pas le melange de param GET/POST
 	return "\n<form action='" .
-		generer_url_action($action,'') .
+		generer_url_public('') .
 		"'$att>\n\t<div>
 		<input name='id_auteur' type='hidden' value='$id_auteur' />
 		<input name='hash' type='hidden' value='$hash' />
diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php
index d8257bc246cbe7d7b813018939c1d7cbe2846cd4..bb8e8250c994f5cc9d40263d82e5e05451e23d28 100644
--- a/ecrire/inc/documents.php
+++ b/ecrire/inc/documents.php
@@ -115,13 +115,13 @@ function document_et_vignette($document, $url, $portfolio=false) {
 
 	if (!$image) {
 		list($fichier, $largeur, $hauteur) = vignette_par_defaut($extension);
-		$image = "<img src='$fichier' height='$hauteur' width='$largeur' />";
+		$image = "<img src='$fichier'\n\theight='$hauteur' width='$largeur' />";
 	}
 
 	if (!$url)
 		return $image;
 	else
-		return "<a href='$url' type='$mime'>$image</a>";
+		return "<a href='$url'\n\ttype='$mime'>$image</a>";
 }
 
 //
@@ -223,7 +223,7 @@ function parametrer_embed_document($fichier, $id_document, $hauteur, $largeur, $
 	 {
 		$param = "|type=audio/x-pn-realaudio-plugin|console=Console$id_document|nojava=true|$les_parametres";
 
-		return "<div>" .
+		return "\n<div>" .
 		  embed_document($id_document, "controls=ImageWindow$param", false) . 
 		  "</div>" .
 		  embed_document($id_document, "controls=PlayButton$param", false) .
@@ -531,7 +531,7 @@ function texte_upload_manuel($dir, $inclus = '') {
 
 
 // Bloc d'edition de la taille du doc (pour embed)
-function afficher_formulaire_taille($document) {
+function formulaire_taille($document) {
 
 	// (on ne le propose pas pour les images qu'on sait
 	// lire, id_type<=3), sauf bug, ou document distant
@@ -566,17 +566,17 @@ function afficher_formulaire_taille($document) {
 }
 
 //
-// Afficher un formulaire d'upload
+// Construire un formulaire pour telecharger un fichier
 //
 
-function afficher_upload($id, $intitule='', $inclus = '', $mode='', $type="", $ancre='', $id_document=0) {
+function formulaire_upload($id, $intitule='', $inclus = '', $mode='', $type="", $ancre='', $id_document=0) {
 	global $spip_lang_right;
 	static $num_form = 0; $num_form ++;
 
 	if (!_DIR_RESTREINT) {
 		$dir_ftp = determine_upload();
 		$debut = "\n" . bouton_block_invisible("ftp$num_form");
-		$milieu = "<div>" . debut_block_invisible("ftp$num_form");
+		$milieu = "\n<div>" . debut_block_invisible("ftp$num_form");
 		$fin = "\n" . fin_block();
 	} else $dir_ftp = $debut = $fin = '';
 
@@ -595,8 +595,12 @@ function afficher_upload($id, $intitule='', $inclus = '', $mode='', $type="", $a
 	if ($dir_ftp OR $test_distant)
 		$res .= $milieu;
 
-	if ($dir_ftp)
-		$res .= afficher_transferer_upload($type, texte_upload_manuel($dir_ftp,$inclus));
+	if ($dir_ftp) {
+	  	$l = texte_upload_manuel($dir_ftp,$inclus);
+		// pour ne pas repeter l'aide en ligne dans le portolio
+		if ($l OR ($mode != 'vignette'))
+			$res .= afficher_transferer_upload($type, $l);
+	}
 
 	// Lien document distant, jamais en mode image
 	if ($test_distant) {
@@ -623,11 +627,11 @@ function afficher_upload($id, $intitule='', $inclus = '', $mode='', $type="", $a
 		"\n\t\t<input type='hidden' name='ancre' value='$ancre' />" .
 		"\n\t$fin";
 
-	return generer_action_auteur('joindre', 
+	return generer_action_auteur('joindre',
 		$mode,
 		generer_url_ecrire($GLOBALS['exec'], "id_$type=$id"),
 		$res,
-		" method='POST' enctype='multipart/form-data' style='border: 0px; margin: 0px;'");
+		" method='post' enctype='multipart/form-data' style='border: 0px; margin: 0px;'");
 }
 
 function construire_upload($corps, $args, $enctype='')
@@ -689,9 +693,6 @@ function afficher_portfolio(
 	global $options,  $couleur_foncee;
 	global $spip_lang_left, $spip_lang_right;
 
-
-	$modifiable = ($options == "avancees" OR $connect_statut == '0minirezo');
-
 	// la derniere case d'une rangee
 	$bord_droit = ($album == 'portfolio' ? 2 : 1);
 	$case = 0;
@@ -706,9 +707,6 @@ function afficher_portfolio(
 			$url = generer_url_document($id_document);
 		else
 			$url = $document['url'];
-		$script = ""; # script pour l'action des formulaires
-		if (isset($document['script']))
-			$script = $document['script']; # script pour l'action des formulaires
 		$fichier = $document['fichier'];
 		$largeur = $document['largeur'];
 		$hauteur = $document['hauteur'];
@@ -716,7 +714,15 @@ function afficher_portfolio(
 		$date = $document['date'];
 		$mode = $document['mode'];
 
-		$flag_deplie = teste_doc_deplie($id_document);
+		# script pour l'action des formulaires
+		if (isset($document['script']))
+			$script = $document['script']; 
+		else if ($type == "rubrique") {
+		  $script = 'naviguer';
+		  $script = 'articles';
+		}
+
+
 
 		if ($case == 0) {
 			echo "<tr style='border-top: 1px solid black;'>";
@@ -724,97 +730,60 @@ function afficher_portfolio(
 		
 		$style = "border-$spip_lang_left: 1px solid $couleur; border-bottom: 1px solid $couleur;";
 		if ($case == $bord_droit) $style .= " border-$spip_lang_right: 1px solid $couleur;";
-		echo "<td width='33%' style='text-align: $spip_lang_left; $style' valign='top'>";
+		echo "\n<td  style='width:33%; text-align: $spip_lang_left; $style' valign='top'>";
 
-			// Signaler les documents distants par une icone de trombone
-			if ($document['distant'] == 'oui') {
-				echo "<img src='"._DIR_IMG_PACK.'attachment.gif'."' style='float: $spip_lang_right;' alt=\"".entites_html($document['fichier'])."\" title=\"" .
+		$res = '';
+		// Signaler les documents distants par une icone de trombone
+		if ($document['distant'] == 'oui') {
+			$res .= "\n<img src='"._DIR_IMG_PACK.'attachment.gif'."'\n\t style='float: $spip_lang_right;'\n\talt=\"".entites_html($document['fichier'])."\"\n\ttitle=\"" .
 entites_html($document['fichier'])."\" />\n";
-			}
-
-			// bloc vignette + rotation
-			echo "<div style='text-align:center;'>";
-			
-			if ($flag_modif)
-				afficher_rotateurs($album, $document, $type, $id_article, $id_document, $id_vignette);
-
-			//
-			// Recuperer la vignette et afficher le doc
-			//
-
-			// Indiquer les documents manquants avec un panneau de warning
-			if ($document['distant'] != 'oui'
-			AND !@file_exists(_DIR_RACINE.$document['fichier'])) {
-				$c = _T('fichier_introuvable',
-					array('fichier'=>basename($document['fichier'])));
-				echo "<img src='" . _DIR_IMG_PACK . "warning-24.gif'"
-				." style='float: right;' alt=\"$c\" title=\"$c\" />";
-			}
-
-			echo document_et_vignette($document, $url, true);
+		}
 
-			echo "</div>"; // fin du bloc vignette + rotation
+		// bloc vignette + rotation
+		$res .= "<div style='text-align:center;'><b>" . 
+		  typo($titre ? $titre : _T('info_sans_titre_2')) .
+		  '</b><br />';
 
+		if ($flag_modif)
+			$res .= afficher_rotateurs($album, $document, $type, $id_article, $id_document, $id_vignette);
 
-			// bloc titre et descriptif
-			if ($flag_modif) {
-				if ($flag_deplie)
-					$triangle = bouton_block_visible("port$id_document");
-				else
-					$triangle = bouton_block_invisible("port$id_document");
-			}
-			if (strlen($titre) > 0) {
-				echo "<div class='verdana2'>$triangle <b>".typo($titre)."</b></div>";
-			} else {
-				$nom_fichier = basename($fichier);
-				
-				if (strlen($nom_fichier) > 20) {
-					$nom_fichier = substr($nom_fichier, 0, 10)."...".substr($nom_fichier, strlen($nom_fichier)-10, strlen($nom_fichier));
-				}
-				echo "<div class='verdana1'>$triangle$nom_fichier</div>";
-			}
-
-
-			if (strlen($descriptif) > 0) {
-				echo "<div class='verdana1'>".propre($descriptif)."</div>";
-			}
+		//
+		// Recuperer la vignette et afficher le doc
+		//
 
-			// Taille de l'image ou poids du document
-			echo "<div class='verdana1' style='text-align: center;'>";
-			if ($largeur * $hauteur)
-				echo _T('info_largeur_vignette',
-					array('largeur_vignette' => $largeur,
-					'hauteur_vignette' => $hauteur));
-			else
-				echo taille_en_octets($taille) . ' - ';
+		// Indiquer les documents manquants avec un panneau de warning
 
-			echo " <font size='1' face='arial,helvetica,sans-serif'><font color='333333'>&lt;doc$id_document&gt;</font></font>";
+		if ($document['distant'] != 'oui'
+		AND !@file_exists(_DIR_RACINE.$document['fichier'])) {
+			$c = _T('fichier_introuvable',
+					array('fichier'=>basename($document['fichier'])));
+			$res .= "<img src='" . _DIR_IMG_PACK . "warning-24.gif'"
+				."\n\tstyle='float: right;'\n\talt=\"$c\"\n\ttitle=\"$c\" />";
+		}
 
-			echo "</div>";
-			if (isset($document['info']))
-				echo "<div class='verdana1'>".$document['info']."</div>";
+		$res .= document_et_vignette($document, $url, true);
 
+		$res .= "<div class='verdana1' style='text-align: center;'>";
+		$res .= " <font size='1' face='arial,helvetica,sans-serif' color='333333'>&lt;doc$id_document&gt;</font>";
+		$res .= "</div>";
+		$res .= "</div>"; // fin du bloc vignette + rotation
 
-			if ($flag_modif) {
-				if ($flag_deplie)
-					echo debut_block_visible("port$id_document");
-				else
-					echo debut_block_invisible("port$id_document");
+		echo $res;
 
-				block_document($id_article, $id_document, $type, $titre, $descriptif, $document, $album, $script, ($modifiable ? $date : 'non'));
-			// fin bloc titre + descriptif
-				echo fin_block();
+		if ($flag_modif) 
+		      echo formulaire_document($id_document, $document, $script, $type, $id_article, $album);
 
-				echo "</td>\n";
-				$case ++;
+		if (isset($document['info']))
+			echo "<div class='verdana1'>".$document['info']."</div>";
+		echo "</td>\n";
+		$case++;
 				
-				if ($case > $bord_droit) {
-				  $case = 0;
-				  echo "</tr>\n";
-				}
+		if ($case > $bord_droit) {
+			  $case = 0;
+			  echo "</tr>\n";
+		}
 			
-			}
-			document_vu($id_document);
+		document_vu($id_document);
 	}
 	// fermer la derniere ligne
 	if ($case > 0) {
@@ -823,30 +792,6 @@ entites_html($document['fichier'])."\" />\n";
 	}
 }
 
-function block_document($id, $id_document, $type, $titre, $descriptif, $document, $album, $script="", $date)
-{
-	global  $couleur_foncee;
-
-	if ($type == "rubrique") {
-	  if ($script=="")
-	  	$script = 'naviguer';
-	} else {
-	  if ($script=="")
-	  	$script = 'articles';
-	}
-
-	echo "<div class='verdana1' style='color: $couleur_foncee; border: 1px solid $couleur_foncee; padding: 5px; margin-top: 3px;'>";
-	echo formulaire_modif_document($id_document, $titre, $descriptif, $document, $script, "id_$type=$id#$album", $date);
-
-	// bloc mettre a jour la vignette
-	echo "<hr style='margin-left: -5px; margin-right: -5px; height: 1px; border: 0px; color: ".$GLOBALS['couleur_foncee']."; background-color: ".$GLOBALS['couleur_foncee'].";' />";
-	bloc_gerer_vignette($document, $id, $type, $album);
-
-	echo "</div>";
-				
-	// bouton "supprimer le doc"
-	icone_horizontale(_T('icone_supprimer_document'), bouton_supprime_document_et_vignette($id, $type, $id_document, $album), "image-24.gif",  "supprimer.gif");
-} 
 
 function  afficher_rotateurs($album, $document, $type, $id_article, $id_document, $id_vignette) {
 	global $spip_lang_right;
@@ -867,25 +812,18 @@ function  afficher_rotateurs($album, $document, $type, $id_article, $id_document
 	AND @file_exists(_DIR_RACINE.$document['fichier'])
 	) {
 
-		echo "\n<div class='verdana1' style='float: $spip_lang_right; text-align: $spip_lang_right;'>";
+	  return "\n<div class='verdana1' style='float: $spip_lang_right; text-align: $spip_lang_right;'>" .
 
 		  // tourner a gauche
-		echo http_href_img(bouton_tourner_document($id_article, $id_document, $album, -90, $type), 'tourner-gauche.gif', "", _T('image_tourner_gauche'), '', 'bouton_rotation');
-		echo "<br />";
+		http_href_img(bouton_tourner_document($id_article, $id_document, $album, -90, $type), 'tourner-gauche.gif', "", _T('image_tourner_gauche'), '', 'bouton_rotation') . "<br />" .
 
 		// tourner a droite
-		echo http_href_img(bouton_tourner_document($id_article, $id_document, $album, 90, $type),
-					   'tourner-droite.gif', "",
-					   _T('image_tourner_droite'), '', 'bouton_rotation');
-		echo "<br />";
+	 	http_href_img(bouton_tourner_document($id_article, $id_document, $album, 90, $type), 'tourner-droite.gif', "",  _T('image_tourner_droite'), '', 'bouton_rotation') . "<br />" .
 
 		// tourner 180
-		echo http_href_img(bouton_tourner_document($id_article, $id_document, $album, 180, $type),
-				   'tourner-180.gif', "",
-				   _T('image_tourner_180'), '', 'bouton_rotation');
-		
-		echo "</div>\n";
+		http_href_img(bouton_tourner_document($id_article, $id_document, $album, 180, $type), 'tourner-180.gif', "", _T('image_tourner_180'), '', 'bouton_rotation') . "</div>\n";
 	}
+	return '';
 }
 
 
@@ -902,24 +840,6 @@ function bouton_supprime_document_et_vignette($id_article, $type, $id_v, $album,
 
 }
 
-function bloc_gerer_vignette($document, $id_article, $type, $album) {
-	global $connect_id_auteur;
-
-	$id_document = $document['id_document'];
-	$id_vignette = $document['id_vignette'];
-
-//	echo bouton_block_invisible("gerer_vignette$id_document");
-//	echo "<b>"._T('info_vignette_personnalisee')."</b>\n";
-//	echo debut_block_invisible("gerer_vignette$id_document");
-	if ($id_vignette) {
-	  icone_horizontale (_T('info_supprimer_vignette'), bouton_supprime_document_et_vignette($id_article,	$type, $id_vignette, $album, $id_document), "vignette-24.png", "supprimer.gif");
-	} else {
-
-	  echo afficher_upload($id_article,_T('info_vignette_personnalisee'), false, 'vignette', $type, $album, $id_document);
-	}
-//	echo fin_block();
-}
-
 function afficher_documents_non_inclus($id_article, $type = "article", $flag_modif) {
 	global $couleur_claire, $connect_id_auteur, $connect_statut;
 	global $options, $spip_lang_left, $spip_lang_right;
@@ -942,13 +862,13 @@ function afficher_documents_non_inclus($id_article, $type = "article", $flag_mod
 
 	if (count($documents)) {
 		echo "<a name='portfolio'></a>";
-		echo "<div>&nbsp;</div>";
-		echo "<div style='background-color: $couleur_claire; padding: 4px; color: black; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px;' class='verdana2'><b>".majuscules(_T('info_portfolio'))."</b></div>";
-		echo "<table width='100%' cellspacing='0' cellpadding='3'>";
+		echo "\n<div>&nbsp;</div>";
+		echo "\n<div style='background-color: $couleur_claire; padding: 4px; color: black; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px;' class='verdana2'>\n<b>".majuscules(_T('info_portfolio'))."</b></div>";
+		echo "\n<table width='100%' cellspacing='0' cellpadding='3'>";
 
 		afficher_portfolio ($documents, $type, 'portfolio', $flag_modif, $couleur_claire);
 
-		echo "</table>\n";
+		echo "\n</table>\n";
 	}
 
 	$doublons = document_vu();
@@ -962,12 +882,12 @@ function afficher_documents_non_inclus($id_article, $type = "article", $flag_mod
 
 	if (count($documents)) {
 		echo "<a id='documents'></a>";
-		echo "<div>&nbsp;</div>";
-		echo "<div style='background-color: #aaaaaa; padding: 4px; color: black; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px;' class='verdana2'><b>". majuscules(_T('info_documents')) ."</b></div>";
-		echo "<table width='100%' cellspacing='0' cellpadding='5'>";
+		echo "\n<div>&nbsp;</div>";
+		echo "\n<div style='background-color: #aaaaaa; padding: 4px; color: black; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px;' class='verdana2'><b>". majuscules(_T('info_documents')) ."</b></div>";
+		echo "\n<table width='100%' cellspacing='0' cellpadding='5'>";
 
 		afficher_portfolio ($documents, $type, 'documents', $flag_modif, '#aaaaaa');
-		echo "</table>";
+		echo "\n</table>";
 	}
 
 	if ($GLOBALS['meta']["documents_$type"] != 'non' AND $flag_modif) {
@@ -976,13 +896,13 @@ function afficher_documents_non_inclus($id_article, $type = "article", $flag_mod
 		global $browser_name;
 		echo "<p>&nbsp;</p>";
 		if ($browser_name=="MSIE") // eviter le formulaire upload qui se promene sur la page a cause des position:relative
-			echo "<div >";
+			echo "<div>";
 		else 	 {
-			echo "<div align='right'>";
+			echo "\n<div align='right'>";
 			echo "<table width='50%' cellpadding='0' cellspacing='0' border='0'><tr><td style='text-align: $spip_lang_left;'>";
 		}
 		echo debut_cadre_relief("image-24.gif", false, "", _T('titre_joindre_document'));
-		echo afficher_upload($id_article, _T('info_telecharger_ordinateur'), '', 'document', $type);
+		echo formulaire_upload($id_article, _T('info_telecharger_ordinateur'), '', 'document', $type);
 		echo fin_cadre_relief();
 		if ($browser_name!=="MSIE") // eviter le formulaire upload qui se promene sur la page a cause des position:relative
 			echo "</td></tr></table>";
@@ -1002,7 +922,7 @@ function afficher_documents_colonne($id, $type="article", $flag_modif = true) {
 	echo "<a name='images'></a>\n";
 	$titre_cadre = _T('bouton_ajouter_image').aide("ins_img");
 	debut_cadre_relief("image-24.gif", false, "creer.gif", $titre_cadre);
-	echo afficher_upload($id, _T('info_telecharger'),'','vignette',$type);
+	echo formulaire_upload($id, _T('info_telecharger'),'','vignette',$type);
 
 	fin_cadre_relief();
 
@@ -1036,7 +956,7 @@ function afficher_documents_colonne($id, $type="article", $flag_modif = true) {
 	if ($type == "article" AND $GLOBALS['meta']["documents_$type"] != 'non') {
 		$titre_cadre = _T('bouton_ajouter_document').aide("ins_doc");
 		debut_cadre_enfonce("doc-24.gif", false, "creer.gif", $titre_cadre);
-		echo afficher_upload($id,_T('info_telecharger_ordinateur'), '','document',$type);
+		echo formulaire_upload($id,_T('info_telecharger_ordinateur'), '','document',$type);
 		fin_cadre_enfonce();
 	}
 
@@ -1095,7 +1015,7 @@ function afficher_case_document($id_document, $id, $type, $deplier = false) {
 	$mode = $document['mode'];
 	if (!$titre) {
 		$titre_fichier = _T('info_sans_titre_2');
-		$titre_fichier .= " <small>(".ereg_replace("^[^\/]*\/[^\/]*\/","",$fichier).")</small>";
+		//		$titre_fichier .= " <small>(".ereg_replace("^[^\/]*\/[^\/]*\/","",$fichier).")</small>";
 	}
 
 	$result = spip_query("SELECT * FROM spip_types_documents WHERE id_type=$id_type");
@@ -1110,23 +1030,34 @@ function afficher_case_document($id_document, $id, $type, $deplier = false) {
 	//
 
 	if ($mode == 'document') {
+		if ($options == "avancees") {
+			# 'extension', a ajouter dans la base quand on supprimera spip_types_documents
+			switch ($id_type) {
+				case 1:
+					$document['extension'] = "jpg";
+					break;
+				case 2:
+					$document['extension'] = "png";
+					break;
+				case 3:
+					$document['extension'] = "gif";
+					break;
+			}
+
 		echo "<a id='document$id_document' name='document$id_document'></a>\n";
 		$titre_cadre = lignes_longues(typo($titre).typo($titre_fichier), 30);
 		debut_cadre_enfonce("doc-24.gif", false, "", $titre_cadre);
 
-		echo "<div style='float: $spip_lang_left;'>";
-		$block = "document $id_document";
-		if ($flag_deplie) echo bouton_block_visible($block);
-		else echo bouton_block_invisible($block);
-		echo "</div>";
-
-
 		//
 		// Affichage de la vignette
 		//
-		echo "<div align='center'>\n";
+		echo "\n<div align='center'>";
 		echo document_et_vignette($document, $url, true); 
-		echo "</div>\n";
+		echo '</div>';
+		echo "\n<div class='verdana1' style='text-align: center; color: black;'>\n";
+		echo ($type_titre ? $type_titre : 
+		      ( _T('info_document').' '.majuscules($type_extension)));
+		echo "</div>";
 
 
 		// Affichage du raccourci <doc...> correspondant
@@ -1152,93 +1083,26 @@ function afficher_case_document($id_document, $id, $type, $deplier = false) {
 				. "</font>\n";
 				echo "</font></div>";
 			}
+		} else {
+			echo "<div style='padding:2px;'><font size='1' face='arial,helvetica,sans-serif'>",
+			  affiche_raccourci_doc('doc', $id_document, ''),
+			  "</font></div>";
 		}
 
-		//
-		// Edition des champs
-		//
-
-		if ($flag_deplie)
-			echo debut_block_visible($block);
-		else
-			echo debut_block_invisible($block);
-
-		if (ereg(",$id_document,", $doublons)) {
-			echo "<div style='padding:2px;'><font size='1' face='arial,helvetica,sans-serif'>";
-			echo affiche_raccourci_doc('doc', $id_document, '');
-			echo "</font></div>";
-		}
-
-		echo "<div class='verdana1' style='color: $couleur_foncee; border: 1px solid $couleur_foncee; padding: 5px; margin-top: 3px; text-align: left; background-color: white;'>";
-		if (strlen($descriptif) > 0) echo propre($descriptif)."<br />";
-
-
-		if ($options == "avancees") {
-			echo "<div style='color: black;'>";
-			if ($type_titre){
-			  echo $type_titre;
-			} else {
-				echo _T('info_document').' '.majuscules($type_extension);
-			}
-
-			if ($largeur * $hauteur)
-				echo ", "._T('info_largeur_vignette',
-					array('largeur_vignette' => $largeur,
-					'hauteur_vignette' => $hauteur));
-
-			echo ', '.taille_en_octets($taille);
-			echo "</div>";
-		}
-
-		echo formulaire_modif_document($id_document, $titre, $descriptif, $document, '', "id_$type=$id#document$id_document");
-
-		// Bloc edition de la vignette
-		if ($options == 'avancees') {
-			echo "<hr style='margin-left: -5px; margin-right: -5px; height: 1px; border: 0px; color: ".$GLOBALS['couleur_foncee']."; background-color: ".$GLOBALS['couleur_foncee'].";' />";
-			# 'extension', a ajouter dans la base quand on supprimera spip_types_documents
-			switch ($id_type) {
-				case 1:
-					$document['extension'] = "jpg";
-					break;
-				case 2:
-					$document['extension'] = "png";
-					break;
-				case 3:
-					$document['extension'] = "gif";
-					break;
-			}
-			bloc_gerer_vignette($document, $id, $type, 'documents');
-		}
-
-
-		echo "</div>";
-		echo fin_block();
-		// Fin edition des champs
-
-		echo "<p /><div align='center'>";
-		icone_horizontale(_T('icone_supprimer_document'), bouton_supprime_document_et_vignette($id, $type, $id_document, 'documents'), "doc-24.gif", "supprimer.gif");
-		echo "</div>";
-
-
+		echo formulaire_document($id_document, $document, '', $type, $id, "document$id_document");
 
 		fin_cadre_enfonce();
+		}
 	}
 
 	//
 	// Afficher une image inserable dans l'article
 	//
 	else if ($mode == 'vignette') {
-		$block = "image $id_document";
 		$titre_cadre = lignes_longues(typo($titre).typo($titre_fichier), 30);
 	
 		debut_cadre_relief("image-24.gif", false, "", $titre_cadre);
 
-		echo "<div style='float: $spip_lang_left;'>";
-		if ($flag_deplie) echo bouton_block_visible($block);
-		else echo bouton_block_invisible($block);
-		echo "</div>";
-
-
 		//
 		// Preparer le raccourci a afficher sous la vignette ou sous l'apercu
 		//
@@ -1265,36 +1129,15 @@ function afficher_case_document($id_document, $id, $type, $deplier = false) {
 			echo "<div style='text-align: center; padding: 2px;'>\n";
 			echo document_et_vignette($document, $url, true);
 			echo "</div>\n";
-			if (strlen($descriptif)>0)
-				echo "<font face='Verdana,Arial,Sans,sans-serif' size='2'>"
-				. propre($descriptif)
-				. "</font>";
-
 			if (!ereg(",$id_document,", $doublons))
 				echo $raccourci_doc;
 		}
 
-		if ($flag_deplie) echo debut_block_visible($block);
-		else  echo debut_block_invisible($block);
-
 		if (ereg(",$id_document,", $doublons))
 			echo $raccourci_doc;
 
-		echo "\n<div class='verdana1' align='center'>",
-		  _T('info_largeur_vignette', array('largeur_vignette' => $largeur, 'hauteur_vignette' => $hauteur)),
-		  "</div>\n";
-		
-		echo "<div class='verdana1' style='color: #999999; border: 1px solid #999999; padding: 5px; margin-top: 3px; text-align: left; background-color: #eeeeee;'>";
-		echo formulaire_modif_document($id_document, $titre, $descriptif, $document, '', "id_$type=$id#document$id_document");
+		echo formulaire_document($id_document, $document,'', $type, $id, "document$id_document");
 		
-		echo "</div>\n<center>";
-
-		icone_horizontale (_T('icone_supprimer_image'), bouton_supprime_document_et_vignette($id, $type, $id_document, 'images'), "image-24.gif", "supprimer.gif");
-		echo "</center>\n";
-
-
-		echo fin_block();
-
 		fin_cadre_relief();
 	}
 }
@@ -1309,63 +1152,127 @@ function teste_doc_deplie($id_document) {
 	return in_array($id_document, $deplies);
 }
 
+
+function date_formulaire_document($date, $id_document) {
+
+	if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})", $date, $regs)){
+		$mois = $regs[2];
+		$jour = $regs[3];
+		$annee = $regs[1];
+	}
+	return  "<b>"._T('info_mise_en_ligne')."</b><br />\n" .
+		afficher_jour($jour, "NAME='jour_doc' SIZE='1' CLASS='fondl' style='font-size:9px;'\n\tonChange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\"") .
+		afficher_mois($mois, "NAME='mois_doc' SIZE='1' CLASS='fondl' style='font-size:9px;'\n\tonChange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\"") .
+		afficher_annee($annee, "NAME='annee_doc' SIZE='1' CLASS='fondl' style='font-size:9px;'\n\tonChange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block')\"") .
+		"<br />\n";
+}
+
+
 // Formulaire de description d'un document (titre, date etc)
-// Il faudrait l'utiliser en mode Ajax pour eviter de recharger
-// toute la page ou il se trouve (surtout si c'est un portfolio)
+// En mode Ajax pour eviter de recharger toute la page ou il se trouve
+// (surtout si c'est un portfolio)
 
-function formulaire_modif_document($id_document, $titre, $descriptif, $document, $script='', $args='', $date='non')
+ function formulaire_document($id_document, $document, $script='', $type, $id, $ancre)
 {
-	global $options;
-
-	if (!$script) $script = $GLOBALS['exec'];
+	if ($document) {
+		// premier appel
+		$flag_deplie = teste_doc_deplie($id_document);
+		if (!$script) $script = $GLOBALS['exec'];
+	} else {
+	  	// retour d'Ajax
+		$document = spip_fetch_array(spip_query("SELECT * FROM spip_documents WHERE id_document = " . intval($id_document)));
+		$flag_deplie = 'ajax';
+	}
 
+	$descriptif = $document['descriptif'];
+	$titre = $document['titre'];
+	$date = $document['date'];
+ 
 	if ($document['mode'] == 'vignette') {
 
 	  $label = _T('entree_titre_image');
 	  $taille ='';
+	  $vignette = '';
+	  $supp = 'image-24.gif';
 	} else {
 	  $label = _T('entree_titre_document');
-	  $taille = (($options != "avancees") ? '' : afficher_formulaire_taille($document));
+	  $taille = formulaire_taille($document);
+	  $supp = 'doc-24.gif';
+	  $id_vignette = $document['id_vignette'];
+	  $vignette = "<hr style='margin-left: -5px; margin-right: -5px; height: 1px; border: 0px; color: #eeeeee; background-color: white;' />" .
+	    ($id_vignette ?
+	     icone_horizontale (_T('info_supprimer_vignette'), redirige_action_auteur('supprimer', "document-$id_vignette", $script, "id_$type=$id#$ancre"), "vignette-24.png", "supprimer.gif", false) :
+	     formulaire_upload($id,_T('info_vignette_personnalisee'), false, 'vignette', $type, $ancre, $id_document));
 	}
 
-	if ($date == 'non')
-	  $date = '';
-	else  {
-		if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})", $date, $regs)){
-						$mois = $regs[2];
-						$jour = $regs[3];
-						$annee = $regs[1];
-		}
-		$date = "<b>"._T('info_mise_en_ligne')."</b><br />\n" .
-			afficher_jour($jour, "NAME='jour_doc' SIZE='1' CLASS='fondl' style='font-size:9px;'\n\tonChange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\"") .
-			afficher_mois($mois, "NAME='mois_doc' SIZE='1' CLASS='fondl' style='font-size:9px;'\n\tonChange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\"") .
-			afficher_annee($annee, "NAME='annee_doc' SIZE='1' CLASS='fondl' style='font-size:9px;'\n\tonChange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block')\"") .
-		       "<br />\n";
-	}
+	$entete = basename($document['fichier']);
+	if (($n=strlen($entete)) > 20) 
+		$entete = substr($entete, 0, 10)."...".substr($entete, $n-10, $n);
+
+	$contenu = "<b>".typo($titre).'</b><br />';
+	if ($descriptif)
+	  $contenu .=  propre($descriptif)  . '<br />' ;
+	if ($document['largeur'] OR $document['hauteur'])
+	  $contenu .= _T('info_largeur_vignette',
+		     array('largeur_vignette' => $document['largeur'],
+			   'hauteur_vignette' => $document['hauteur']));
+	else
+	  $contenu .= taille_en_octets($document['taille']) . ' - ';
+
+	if ($date) $contenu .= "<br />" . affdate($date);
 
 	$corps =
+	  (!$contenu ? '' :
+	   "<div class='verdana1' style='text-align: center;'>$contenu</div>") .
 	  "<b>$label</b><br />\n" .
+
 	  "<input type='text' name='titre_document' class='formo' value=\"".entites_html($titre).
 	  "\" size='40'	onFocus=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\"><br />\n" .
-	  $date .
-	  (!($descriptif OR $options == "avancees") ? '' :
-	   ("<b>"._T('info_description_2')."</b><br />\n" .
-	    "<textarea name='descriptif_document' rows='4' class='formo' cols='*' wrap='soft'	onFocus=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\">" .
+	  '<br />' . 
+	  date_formulaire_document($date, $id_document) .
+	  "<br /><b>".
+	  _T('info_description_2').
+	  "</b><br />\n" .
+	  "<textarea name='descriptif_document' rows='4' class='formo' cols='*' wrap='soft'	onFocus=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\">" .
 	    entites_html($descriptif) .
-	    "</textarea>\n")) .
+	  "</textarea>\n" .
 	  $taille .
-	  "\n<div class='display_au_chargement' id='valider_doc$id_document' align='".$GLOBALS['spip_lang_right']."'>" .
-	   "<input type='submit' class='fondo' style='font-size:9px;' value='"._T('bouton_enregistrer')."'>" .
+	  "\n<div " .
+	  ($flag_deplie == 'ajax' ? '' : "class='display_au_chargement'") .
+	  "id='valider_doc$id_document' align='".
+	  $GLOBALS['spip_lang_right'].
+	  "'>\n<input class='fondo' style='font-size:9px;' value='".
+	  _T('bouton_enregistrer') .
+	  "' type='submit' />" .
 	  "</div>\n";
 
-	return redirige_action_auteur("documenter", 
-		$id_document,
-		$script,
-		// id_document= est superflu pour articles, rubriques, breves
-		// mais les scripts introdruit par [5752] sont opaques
-		"id_document=$id_document&show_docs=$id_document&$args",
-		$corps,
-		" method='post'");
-}
+	$bloc = "document_$id_document";
 
+	if ($_COOKIE['spip_accepte_ajax'] == 1 )
+		$corps = redirige_action_auteur("documenter", 
+				$id_document,
+				'ajax_page',
+				"fonction=document&col=$id_document&id=$id&type=$type&id_ajax_fonc=$script&rac=$ancre",
+				$corps,
+				"\nmethod='post' onsubmit='return AjaxSqueeze(this, \"$bloc\")'");
+	else
+		$corps = redirige_action_auteur("documenter", 
+				$id_document,
+				$script,
+				"show_docs=$id_document&id_$type=$id#$ancre",
+				$corps,
+				"\nmethod='post'");
+	$corps .= 
+	  $vignette .
+	  icone_horizontale(_T('icone_supprimer_document'), redirige_action_auteur('supprimer', "document-$id_document", $script, "id_$type=$id#$ancre"), $supp,  "supprimer.gif", false);
+
+	return ($flag_deplie === 'ajax') ? $corps :
+	  ((!$flag_deplie ?
+	    (bouton_block_invisible($bloc) . $entete . debut_block_invisible($bloc)) :
+	    (bouton_block_visible($bloc) . $entete . debut_block_visible($bloc))) .
+	   "<div id='$bloc' class='verdana1' style='color: " . $GLOBALS['couleur_foncee'] . "; border: 1px solid ". $GLOBALS['couleur_foncee'] ."; padding: 5px; margin-top: 3px; background-color: white'>" .
+	   $corps .
+	  '</div>' .
+	   fin_block());
+}
 ?>