diff --git a/ecrire/inc/boutons.php b/ecrire/inc/boutons.php
index 0c572c26132f0ce1e58a5117f4d6d996298c2fd2..8603971936b84ed7d2550b3b56ffbab302d4e368 100644
--- a/ecrire/inc/boutons.php
+++ b/ecrire/inc/boutons.php
@@ -566,14 +566,14 @@ function bandeau_double_rangee($rubrique, $sous_rubrique, $largeur)
 	. "</ul></div>\n"
   . "</div>"
   //script to show the submenus in IE6, not supporting :hover on li elements
-  . "<script type='text/javascript'>\n"
-  . "var boutons_admin = jQuery('#bandeau-principal li.boutons_admin');\n"
+  . '<script type="text/javascript"><!--'
+  . "\nvar boutons_admin = jQuery('#bandeau-principal li.boutons_admin');\n"
   . "if(jQuery.browser.msie) boutons_admin.hover(\n"
   . "function(){jQuery(this).addClass('sfhover')},\n"
   . "function(){jQuery(this).removeClass('sfhover')}\n"
   . ");\n"
   . "boutons_admin.one('mouseover',decaleSousMenu);\n"
-  . "</script>\n"; 
+  . "// --></script>\n"; 
 }
 
 
diff --git a/ecrire/inc/couleurs.php b/ecrire/inc/couleurs.php
index e9dbee142e9944541bddd919c94c5edf3db8a34e..307473366a4df832e1e89412488e4559f989058c 100644
--- a/ecrire/inc/couleurs.php
+++ b/ecrire/inc/couleurs.php
@@ -108,7 +108,7 @@ onblur="changestyle(\'bandeauinterface\');"';
 		return  '<span id="selecteur_couleur">'
 		.  $bloc
 		. "</span>\n"
-		. "<script type='text/javascript'><!--
+		. '<script type="text/javascript"><!--' . "
 			$('#selecteur_couleur a')
 			.click(function(){
 				$('head>link#cssprivee')
diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index a0e5fd5368640c3d54084a33c4bfc905947da305..0e537599579eebb6095b689349dd1a10781eee23 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -53,6 +53,30 @@ function filtre_text_csv_dist($t)
 		"|\n");
 }
 
+// Incrustation de HTML, si on est capable de le securiser
+// sinon, afficher le source
+function filtre_text_html_dist($t)
+{
+	if (!preg_match(',<head>(.*?)</head>.*<body[^>]*>(.*)</body>,is', $t, $r))
+		return filtre_text_txt_dist($t);
+
+	list(,$h,$t) = $r;
+	$style = '';
+	// recuperer les styles internes
+	if (preg_match_all(',<style>([^>]*)</style>,is', $h, $r, PREG_PATTERN_ORDER))
+		$style =  join("\n",$r[1]);
+	// ... et externes
+	if (preg_match_all(',<link[^>]*text/css[^>]*>,is', $h, $r, PREG_PATTERN_ORDER))
+		foreach($r[0] as $l) {
+			preg_match("/href='([^']*)'/", str_replace('"',"'",$l), $m);
+			$style .= "\n/* $l */\n"
+			. str_replace('<','',recuperer_page($m[1]));
+		}
+	// Pourquoi SafeHtml transforme-t-il en texte les scripts dans Body ?
+	$t = safehtml(preg_replace(',<script.*?</script>,is','',$t));
+	return (!$style ? '' : "\n<style>$style</style>") . $t;
+}
+
 // http://doc.spip.org/@filtre_audio_x_pn_realaudio
 function filtre_audio_x_pn_realaudio($id)
 {
diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php
index 61592df71162b23e51f92e7ae89f44b2682f3c5b..d73dd0cab0a59ec83897a3d62ef6f2fc74d24010 100644
--- a/ecrire/inc/presentation.php
+++ b/ecrire/inc/presentation.php
@@ -787,12 +787,12 @@ function envoi_link($nom_site_spip, $minipres=false) {
 
 	// CSS de secours en cas de non fonct de la suivante
 	$res = '<link rel="stylesheet" type="text/css" href="'
-	. find_in_path('style_prive_defaut.css')
+	  . url_absolue(find_in_path('style_prive_defaut.css'))
 	. '" />'  . "\n"
 	
 	// CSS calendrier
 	. '<link rel="stylesheet" type="text/css" href="'
-	. find_in_path('agenda.css') .'" />' . "\n"
+	  . url_absolue(find_in_path('agenda.css')) .'" />' . "\n"
 	
 	// CSS espace prive : la vraie
 	. '<link rel="stylesheet" type="text/css" href="'
@@ -804,25 +804,25 @@ function envoi_link($nom_site_spip, $minipres=false) {
   
 	// CSS imprimante (masque des trucs, a completer)
 	. '<link rel="stylesheet" type="text/css" href="'
-	. find_in_path('spip_style.css')
+	  . url_absolue(find_in_path('spip_style.css'))
 	. '" media="all" />' . "\n"
   
 	// CSS imprimante (masque des trucs, a completer)
 	. '<link rel="stylesheet" type="text/css" href="'
-	. find_in_path('spip_style_print.css')
+	  . url_absolue(find_in_path('spip_style_print.css'))
 	. '" media="print" />' . "\n"
 
 	// CSS "visible au chargement" differente selon js actif ou non
 
 	. '<link rel="stylesheet" type="text/css" href="'
-	. find_in_path('spip_style_'
-		. (_SPIP_AJAX ? 'invisible' : 'visible')
-		. '.css')
+	  . url_absolue(find_in_path('spip_style_'
+				     . (_SPIP_AJAX ? 'invisible' : 'visible')
+				     . '.css'))
 	.'" />' . "\n"
 	
 	// CSS optionelle minipres
 	. ($minipres?'<link rel="stylesheet" type="text/css" href="'
-	. find_in_path('minipres.css').'" />' . "\n":"")
+	   . url_absolue(find_in_path('minipres.css')).'" />' . "\n":"")
 
 	// favicon.ico
 	. '<link rel="shortcut icon" href="'