Index: .hgtags
===================================================================
--- .hgtags	(revision 1468)
+++ .hgtags	(revision 1351)
@@ -12,2 +12,4 @@
 6fce226121140735a51a8f447c80f1dacd2974ea 2.4.4
 514d5121a12586b7ff320924d44028b677a01020 2.4.4
+baf879af43beea9764d920c2facd7226e90c5cf3 2.5.1
+cfad9f2a9f6ec03206ff5db91985208e833a7528 2.5.2
Index: admin/auth.php
===================================================================
--- admin/auth.php	(revision 1484)
+++ admin/auth.php	(revision 1179)
@@ -265,5 +265,4 @@
   <meta name="ROBOTS" content="NOARCHIVE,NOINDEX,NOFOLLOW" />
   <meta name="GOOGLEBOT" content="NOSNIPPET" />
-  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   <title><?php echo html::escapeHTML(DC_VENDOR_NAME); ?></title>
   
@@ -334,5 +333,5 @@
 {
 	echo
-	'<div class="fieldset"><h2>'.__('Request a new password').'</h2>'.
+	'<fieldset><legend>'.__('Request a new password').'</legend>'.
 	'<p><label for="user_id">'.__('Username:').'</label> '.
 	form::field(array('user_id','user_id'),20,32,html::escapeHTML($user_id)).'</p>'.
@@ -343,14 +342,13 @@
 	'<p><input type="submit" value="'.__('recover').'" />'.
 	form::hidden(array('recover'),1).'</p>'.
-	'</div>'.
+	'</fieldset>'.
 	
 	'<div id="issue">'.
-	'<p><a href="auth.php">'.__('Back to login screen').'</a></p>'.
-	'</div>';
+	'<p><a href="auth.php">'.__('Back to login screen').'</a></p></div>';
 }
 elseif ($change_pwd)
 {
 	echo
-	'<div class="fieldset"><h2>'.__('Change your password').'</h2>'.
+	'<fieldset><legend>'.__('Change your password').'</legend>'.
 	'<p><label for="new_pwd">'.__('New password:').'</label> '.
 	form::password(array('new_pwd','new_pwd'),20,255).'</p>'.
@@ -358,5 +356,5 @@
 	'<p><label for="new_pwd_c">'.__('Confirm password:').'</label> '.
 	form::password(array('new_pwd_c','new_pwd_c'),20,255).'</p>'.
-	'</div>'.
+	'</fielset>'.
 	
 	'<p><input type="submit" value="'.__('change').'" />'.
@@ -372,10 +370,10 @@
 	{
 		if ($safe_mode) {
-			echo '<div class="fieldset">';
-			echo '<h2>'.__('Safe mode login').'</h2>';
+			echo '<fieldset>';
+			echo '<legend>'.__('Safe mode login').'</legend>';
 			echo 
-				'<p class="form-note">'.
-				__('This mode allows you to login without activating any of your plugins. This may be useful to solve compatibility problems').'&nbsp;</p>'.
-				'<p class="form-note">'.__('Disable or delete any plugin suspected to cause trouble, then log out and log back in normally.').
+				'<p class="form-note info">'.
+				__('This mode allows you to login without activating any of your plugins. This may be useful to solve compatibility problems').'&nbsp;<br />'.
+				__('Disable or delete any plugin suspected to cause trouble, then log out and log back in normally.').
 				'</p>';
 		}
@@ -396,5 +394,5 @@
 		__('Remember my ID on this computer').'</label></p>'.
 		
-		'<p><input class="add button" type="submit" value="'.__('log in').'" /></p>';
+		'<p><input type="submit" value="'.__('log in').'" /></p>';
 		
 		if (!empty($_REQUEST['blog'])) {
@@ -404,5 +402,5 @@
 			echo 
 			form::hidden('safe_mode',1).
-			'</div>';
+			'</fieldset>';
 		}
 		else {
Index: admin/blog.php
===================================================================
--- admin/blog.php	(revision 1482)
+++ admin/blog.php	(revision 1277)
@@ -67,32 +67,28 @@
 else
 {
-	dcPage::open(__('New blog'),dcPage::jsConfirmClose('blog-form'),
-		dcPage::breadcrumb(
-			array(
-				__('System') => '',
-				__('Blogs') => 'blogs.php',
-				'<span class="page-title">'.__('New blog').'</span>' => ''
-			))
-	);
+	dcPage::open(__('New blog'),dcPage::jsConfirmClose('blog-form'));
 	
 	echo
-	'<form action="blog.php" method="post" id="blog-form">'.
+	'<h2><a href="blogs.php">'.__('Blogs').'</a> &rsaquo; <span class="page-title">'.__('New blog').'</span></h2>'.
 	
-	'<div>'.$core->formNonce().'</div>'.
-	'<p><label class="required" for="blog_id"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog ID:').'</label> '.
-	form::field('blog_id',30,32,html::escapeHTML($blog_id)).'</p>'.
+	'<form action="blog.php" method="post" id="blog-form" class="fieldset">'.
+	
+	'<p><label class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog ID:').' '.
+	form::field('blog_id',30,32,html::escapeHTML($blog_id)).'</label></p>'.
 	'<p class="form-note">'.__('At least 2 characters using letters, numbers or symbols.').'</p> '.
 	'<p class="form-note warn">'.__('Please note that changing your blog ID may require changes in your public index.php file.').'</p>'.
 	
-	'<p><label class="required" for="blog_name"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog name:').'</label> '.
-	form::field('blog_name',30,255,html::escapeHTML($blog_name)).'</p>'.
+	'<p><label class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog name:').' '.
+	form::field('blog_name',30,255,html::escapeHTML($blog_name)).'</label></p>'.
 	
-	'<p><label class="required" for="blog_url"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog URL:').'</label> '.
-	form::field('blog_url',30,255,html::escapeHTML($blog_url)).'</p>'.
+	'<p><label class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog URL:').' '.
+	form::field('blog_url',30,255,html::escapeHTML($blog_url)).'</label></p>'.
 	
 	'<p class="area"><label for="blog_desc">'.__('Blog description:').'</label> '.
 	form::textarea('blog_desc',60,5,html::escapeHTML($blog_desc)).'</p>'.
 	
-	'<p><input type="submit" accesskey="s" value="'.__('Create').'" /></p>'.
+	'<p><input type="submit" accesskey="s" value="'.__('Create').'" />'.
+	$core->formNonce().
+	'</p>'.
 	'</form>';
 
Index: admin/blog_del.php
===================================================================
--- admin/blog_del.php	(revision 1399)
+++ admin/blog_del.php	(revision 1288)
@@ -49,16 +49,10 @@
 }
 
-dcPage::open(__('Delete a blog'),'',
-	dcPage::breadcrumb(
-		array(
-			__('System') => '',
-			__('Blogs') => 'blogs.php',
-			'<span class="page-title">'.__('Delete a blog').'</span>' => ''
-		))
-);
+dcPage::open(__('Delete a blog'));
 
 if (!$core->error->flag())
 {
 	echo
+	'<h2 class="page-title">'.__('Delete a blog').'</h2>'.
 	'<p class="message">'.__('Warning').'</p>'.
 	'<p>'.sprintf(__('You are about to delete the blog %s. Every entry, comment and category will be deleted.'),
@@ -69,6 +63,6 @@
 	'<form action="blog_del.php" method="post">'.
 	'<div>'.$core->formNonce().'</div>'.
-	'<p><label for="pwd">'.__('Your password:').'</label> '.
-	form::password('pwd',20,255).'</p>'.
+	'<p><label for="pwd">'.__('Your password:').' '.
+	form::password('pwd',20,255).'</label></p>'.
 	'<p><input type="submit" class="delete" name="del" value="'.__('Delete this blog').'" />'.
 	form::hidden('blog_id',$blog_id).'</p>'.
Index: admin/blog_pref.php
===================================================================
--- admin/blog_pref.php	(revision 1499)
+++ admin/blog_pref.php	(revision 1179)
@@ -252,19 +252,4 @@
 }
 
-if ($standalone) {
-	$breadcrumb = dcPage::breadcrumb(
-		array(
-			html::escapeHTML($blog_name) => '',
-			'<span class="page-title">'.__('Blog settings').'</span>' => ''
-		));
-} else {
-	$breadcrumb = dcPage::breadcrumb(
-		array(
-			__('System') => '',
-			__('Blogs') => 'blogs.php',
-			'<span class="page-title">'.__('Blog settings').' : '.html::escapeHTML($blog_name).'</span>' => ''
-		));
-}
-
 dcPage::open(__('Blog settings'),
 	'<script type="text/javascript">'."\n".
@@ -283,10 +268,13 @@
 	$core->callBehavior('adminBlogPreferencesHeaders').
 	
-	dcPage::jsPageTabs(),
-	$breadcrumb
+	dcPage::jsPageTabs()
 );
 
 if ($blog_id)
 {
+	echo '<h2>'.(!$standalone ? '<a href="blogs.php">'.__('Blogs').'</a> &rsaquo; ' : '').
+	html::escapeHTML($blog_name).' &rsaquo; <span class="page-title">'.
+	__('Blog settings').'</span></h2>';
+	
 	if (!empty($_GET['add'])) {
 		dcPage::message(__('Blog has been successfully created.'));
@@ -303,5 +291,5 @@
 	
 	echo
-	'<div class="fieldset"><h4>'.__('Blog details').'</h4>'.
+	'<fieldset><legend>'.__('Blog details').'</legend>'.
 	$core->formNonce();
 	
@@ -309,6 +297,6 @@
 	{
 		echo
-		'<p><label for="blog_id" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog ID:').'</label>'.
-		form::field('blog_id',30,32,html::escapeHTML($blog_id)).'</p>'.
+		'<p><label for="blog_id" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog ID:').
+		form::field('blog_id',30,32,html::escapeHTML($blog_id)).'</label></p>'.
 		'<p class="form-note">'.__('At least 2 characters using letters, numbers or symbols.').'</p> '.
 		'<p class="form-note warn">'.__('Please note that changing your blog ID may require changes in your public index.php file.').'</p>';
@@ -316,18 +304,18 @@
 	
 	echo
-	'<p><label for="blog_name" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog name:').'</label>'.
-	form::field('blog_name',30,255,html::escapeHTML($blog_name)).'</p>';
+	'<p><label for="blog_name" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog name:').
+	form::field('blog_name',30,255,html::escapeHTML($blog_name)).'</label></p>';
 	
 	if ($core->auth->isSuperAdmin())
 	{
 		echo
-		'<p><label for="blog_url" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog URL:').'</label>'.
-		form::field('blog_url',30,255,html::escapeHTML($blog_url)).'</p>'.
-		
-		'<p><label for="url_scan">'.__('URL scan method:').'</label>'.
-		form::combo('url_scan',$url_scan_combo,$blog_settings->system->url_scan).'</p>'.
-		
-		'<p><label for="blog_status">'.__('Blog status:').'</label>'.
-		form::combo('blog_status',$status_combo,$blog_status).'</p>';
+		'<p><label for="blog_url" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog URL:').
+		form::field('blog_url',30,255,html::escapeHTML($blog_url)).'</label></p>'.
+		
+		'<p><label for="url_scan">'.__('URL scan method:').
+		form::combo('url_scan',$url_scan_combo,$blog_settings->system->url_scan).'</label></p>'.
+		
+		'<p><label for="blog_status">'.__('Blog status:').
+		form::combo('blog_status',$status_combo,$blog_status).'</label></p>';
 	}
 	
@@ -335,40 +323,40 @@
 	'<p class="area"><label for="blog_desc">'.__('Blog description:').'</label>'.
 	form::textarea('blog_desc',60,5,html::escapeHTML($blog_desc)).'</p>'.
-	'</div>';
-	
-	
-	echo
-	'<div class="fieldset"><h4>'.__('Blog configuration').'</h4>'.
+	'</fieldset>';
+	
+	
+	echo
+	'<fieldset><legend>'.__('Blog configuration').'</legend>'.
 	'<div class="two-cols">'.
 	'<div class="col">'.
-	'<p><label for="editor">'.__('Blog editor name:').'</label>'.
+	'<p><label for="editor">'.__('Blog editor name:').
 	form::field('editor',30,255,html::escapeHTML($blog_settings->system->editor)).
-	'</p>'.
-	
-	'<p><label for="lang">'.__('Default language:').'</label>'.
+	'</label></p>'.
+	
+	'<p><label for="lang">'.__('Default language:').
 	form::combo('lang',$lang_combo,$blog_settings->system->lang,'l10n').
-	'</p>'.
-	
-	'<p><label for="blog_timezone">'.__('Blog timezone:').'</label>'.
+	'</label></p>'.
+	
+	'<p><label for="blog_timezone">'.__('Blog timezone:').
 	form::combo('blog_timezone',dt::getZones(true,true),html::escapeHTML($blog_settings->system->blog_timezone)).
-	'</p>'.
-
-	'<p><label for="copyright_notice">'.__('Copyright notice:').'</label>'.
+	'</label></p>'.
+
+	'<p><label for="copyright_notice">'.__('Copyright notice:').
 	form::field('copyright_notice',30,255,html::escapeHTML($blog_settings->system->copyright_notice)).
-	'</p>'.
-	'</div>'.
-	
-	'<div class="col">'.
-	'<p><label for="post_url_format">'.__('New post URL format:').'</label>'.
+	'</label></p>'.
+	'</div>'.
+	
+	'<div class="col">'.
+	'<p><label for="post_url_format">'.__('New post URL format:').
 	form::combo('post_url_format',$post_url_combo,html::escapeHTML($blog_settings->system->post_url_format)).
-	'</p>'.
-
-	'<p><label for="note_title_tag">'.__('Note title HTML tag:').'</label>'.
+	'</label></p>'.
+
+	'<p><label for="note_title_tag">'.__('Note title HTML tag:').
 	form::combo('note_title_tag',$note_title_tag_combo,$blog_settings->system->note_title_tag).
-	'</p>'.
-		
-	'<p><label for="enable_xmlrpc" class="classic">'.'</label>'.
+	'</label></p>'.
+		
+	'<p><label for="enable_xmlrpc" class="classic">'.
 	form::checkbox('enable_xmlrpc','1',$blog_settings->system->enable_xmlrpc).
-	__('Enable XML/RPC interface').'</p>';
+	__('Enable XML/RPC interface').'</label></p>';
 
 	echo
@@ -393,22 +381,23 @@
 	'</div>'.
 	'<br class="clear" />'. //Opera sucks
-	'</div>';
-	
-	echo
-	'<div class="fieldset"><h4>'.__('Comments and trackbacks').'</h4>'.
-
+	'</fieldset>';
+	
+	echo
+	'<fieldset><legend>'.__('Comments and trackbacks').'</legend>'.
 	'<div class="two-cols">'.
-
 	'<div class="col">'.
 	'<p><label for="allow_comments" class="classic">'.
 	form::checkbox('allow_comments','1',$blog_settings->system->allow_comments).
-	__('Accept comments').'</label></p>'.	
+	__('Accept comments').'</label></p>'.
+	
 	'<p><label for="comments_pub" class="classic">'.
 	form::checkbox('comments_pub','1',!$blog_settings->system->comments_pub).
-	__('Moderate comments').'</label></p>'.	
+	__('Moderate comments').'</label></p>'.
+	
 	'<p><label for="comments_ttl" class="classic">'.sprintf(__('Leave comments open for %s days'),
 	form::field('comments_ttl',2,3,$blog_settings->system->comments_ttl)).
 	'</label></p>'.
-	'<p class="form-note">'.__('Leave blank to disable this feature.').'</p>'.	
+	'<p class="form-note">'.__('Leave blank to disable this feature.').'</p>'.
+	
 	'<p><label for="wiki_comments" class="classic">'.
 	form::checkbox('wiki_comments','1',$blog_settings->system->wiki_comments).
@@ -419,32 +408,33 @@
 	'<p><label for="allow_trackbacks" class="classic">'.
 	form::checkbox('allow_trackbacks','1',$blog_settings->system->allow_trackbacks).
-	__('Accept trackbacks').'</label></p>'.	
+	__('Accept trackbacks').'</label></p>'.
+	
 	'<p><label for="trackbacks_pub" class="classic">'.
 	form::checkbox('trackbacks_pub','1',!$blog_settings->system->trackbacks_pub).
-	__('Moderate trackbacks').'</label></p>'.	
+	__('Moderate trackbacks').'</label></p>'.
+	
 	'<p><label for="trackbacks_ttl" class="classic">'.sprintf(__('Leave trackbacks open for %s days'),
 	form::field('trackbacks_ttl',2,3,$blog_settings->system->trackbacks_ttl)).'</label></p>'.
-	'<p class="form-note">'.__('Leave blank to disable this feature.').'</p>'.	
+	'<p class="form-note">'.__('Leave blank to disable this feature.').'</p>'.
+	
 	'<p><label for="comments_nofollow" class="classic">'.
 	form::checkbox('comments_nofollow','1',$blog_settings->system->comments_nofollow).
 	__('Add "nofollow" relation on comments and trackbacks links').'</label></p>'.
 	'</div>'.
+	'</div>'.
 	'<br class="clear" />'. //Opera sucks
-
-	'</div>'.
-	'<br class="clear" />'. //Opera sucks
-	'</div>';
-	
-	echo
-	'<div class="fieldset"><h4>'.__('Blog presentation').'</h4>'.
+	'</fieldset>';
+	
+	echo
+	'<fieldset><legend>'.__('Blog presentation').'</legend>'.
 	'<div class="two-cols">'.
 	'<div class="col">'.
-	'<p><label for="date_format">'.__('Date format:').'</label>'.
+	'<p><label for="date_format">'.__('Date format:').
 	form::field('date_format',30,255,html::escapeHTML($blog_settings->system->date_format)).
-	'</p>'.
-	
-	'<p><label for="time_format">'.__('Time format:').'</label>'.
+	'</label></p>'.
+	
+	'<p><label for="time_format">'.__('Time format:').
 	form::field('time_format',30,255,html::escapeHTML($blog_settings->system->time_format)).
-	'</p>'.
+	'</label></p>'.
 	
 	'<p><label for="use_smilies" class="classic">'.
@@ -472,11 +462,11 @@
     '</div>'.
 	'<br class="clear" />'. //Opera sucks
-	'</div>';
-	
-	echo
-	'<div class="fieldset"><h4>'.__('Media and images').'</h4>'.
+	'</fieldset>';
+	
+	echo
+	'<fieldset><legend>'.__('Media and images').'</legend>'.
 	'<div class="two-cols">'.
 	'<div class="col">'.
-	'<h5>'.__('Generated image sizes (in pixels)').'</h5>'.
+	'<h4>'.__('Generated image sizes (in pixels)').'</h4>'.
 	'<p class="field"><label for="media_img_t_size">'.__('Thumbnails:').' '.
 	form::field('media_img_t_size',3,3,$blog_settings->system->media_img_t_size).'</label></p>'.
@@ -490,5 +480,5 @@
 	
 	'<div class="col">'.
-	'<h5><label for="media_img_title_pattern">'.__('Inserted image title').'</label></h5>'.
+	'<h4><label for="media_img_title_pattern">'.__('Inserted image title').'</label></h4>'.
 	'<p>'.__('This defines image tag title when you insert it in a post from the media manager. It is retrieved from the picture\'s metadata.').'</p>'.
 	'<p>'.form::combo('media_img_title_pattern',$img_title_combo,html::escapeHTML($blog_settings->system->media_img_title_pattern)).'</p>'.
@@ -497,12 +487,12 @@
 	__('Use original media date if possible').'</label></p>'.
 
-	'<h5>'.__('Default image insertion attributes').'</h5>'.
-	'<p><label for="media_img_default_size">'.__('Image size:').'</label>'.
+	'<h4>'.__('Default image insertion attributes').'</h4>'.
+	'<p><label for="media_img_default_size">'.__('Image size:').
 	form::combo('media_img_default_size',$img_default_size_combo,
 		(html::escapeHTML($blog_settings->system->media_img_default_size) != '' ? html::escapeHTML($blog_settings->system->media_img_default_size) : 'm')).
-	'</p>'.
-	'<p><label for="media_img_default_alignment">'.__('Image alignment:').'</label>'.
+	'</label></p>'.
+	'<p><label for="media_img_default_alignment">'.__('Image alignment').
 	form::combo('media_img_default_alignment',$img_default_alignment_combo,html::escapeHTML($blog_settings->system->media_img_default_alignment)).
-	'</p>'.
+	'</label></p>'.
 	'<p><label for="media_img_default_link" class="classic">'.
 	form::checkbox('media_img_default_link','1',$blog_settings->system->media_img_default_link).
@@ -510,10 +500,9 @@
 	'</div>'.
 	'</div>'.
-	'<br class="clear" />'. //Opera sucks
-
-	'</div>';
-	
-	echo
-	'<div class="fieldset"><h4>'.__('Search engines robots policy').'</h4>';
+
+	'</fieldset>';
+	
+	echo
+	'<fieldset><legend>'.__('Search engines robots policy').'</legend>';
 	
 	$i = 0;
@@ -525,5 +514,5 @@
 	}
 	
-	echo '</div>';
+	echo '</fieldset>';
 	
 	
@@ -547,7 +536,7 @@
 	} else {
 		if ($blog_id == $core->blog->id) {
-			echo '<p class="message">'.__('The current blog cannot be deleted.').'</p>';
+			echo '<p class="message">'.__('The current blog cannot be deleted').'</p>';
 		} else {
-			echo '<p class="message">'.__('Only superadmin can delete a blog.').'</p>';
+			echo '<p class="message">'.__('Only superadmin can delete a blog').'</p>';
 		}
 	}
Index: admin/blog_theme.php
===================================================================
--- admin/blog_theme.php	(revision 1499)
+++ admin/blog_theme.php	(revision 1263)
@@ -173,7 +173,7 @@
 	'<div class="theme-shot"><img src="'.$screenshot.'" alt="" /></div>'.
 	'<div class="theme-info">'.
-		'<h4>'.form::radio(array('theme',$radio_id),html::escapeHTML($id),$current,'','',($has_parent && !$is_parent_present)).' '.
+		'<h3>'.form::radio(array('theme',$radio_id),html::escapeHTML($id),$current,'','',($has_parent && !$is_parent_present)).' '.
 		'<label class="classic" for="'.$radio_id.'">'.
-		html::escapeHTML($details['name']).'</label></h4>'.
+		html::escapeHTML($details['name']).'</label></h3>'.
 		'<p><span class="theme-desc">'.html::escapeHTML($details['desc']).'</span> '.
 		'<span class="theme-author">'.sprintf(__('by %s'),html::escapeHTML($details['author'])).'</span> '.
@@ -187,5 +187,5 @@
 		}
 		if ($has_css) {
-			$res .= '<span class="theme-css"><a href="'.$theme_url.'/style.css">'.__('Stylesheet').'</a></span>';
+			$res .= '<a class="theme-css" href="'.$theme_url.'/style.css">'.__('Stylesheet').'</a>';
 		}
 		$res .= '</p>';
@@ -207,29 +207,15 @@
 }
 
-if (!$theme_conf_mode)
-{
-	$breadcrumb = dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			'<span class="page-title">'.__('Blog appearance').'</span>' => ''
-		));
-} else {
-	$breadcrumb = dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			__('Blog appearance') => 'blog_theme.php',
-			'<span class="page-title">'.__('Theme configuration').'</span>' => ''
-		));
-}
-
 dcPage::open(__('Blog appearance'),
 	(!$theme_conf_mode ? dcPage::jsLoad('js/_blog_theme.js') : '').
 	dcPage::jsPageTabs($default_tab).
-	dcPage::jsColorPicker(),
-	$breadcrumb
+	dcPage::jsColorPicker()
 );
 
 if (!$theme_conf_mode)
 {
+	echo
+	'<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Blog appearance').'</span></h2>';
+	
 	if (!empty($_GET['upd'])) {
 		dcPage::message(__('Theme has been successfully changed.'));
@@ -244,11 +230,18 @@
 	}
 	
+	if ($can_install) {
+		echo
+		'<p><strong>'.sprintf(__('You can find additional themes for your blog on %s.'),
+		'<a href="http://themes.dotaddict.org/galerie-dc2/">Dotaddict</a>').'</strong> '.
+		__('To install or upgrade a theme you generally just need to upload it '.
+		'in "Install or upgrade a theme" section.').'</p>';
+	}
+	
 	# Themes list
-	echo '<div class="multi-part" id="themes-list" title="'.__('Themes').'">'.
-	'<h3>'.__('Available themes in your installation').'</h3>';
+	echo '<div class="multi-part" id="themes-list" title="'.__('Themes').'">';
 	
 	$themes = $core->themes->getModules();
 	if (isset($themes[$core->blog->settings->system->theme])) {
-		echo '<p>'.sprintf(__('You are currently using <strong>%s</strong>'),$themes[$core->blog->settings->system->theme]['name']).'.</p>';
+		echo '<h3>'.sprintf(__('You are currently using "%s"'),$themes[$core->blog->settings->system->theme]['name']).'</h3>';
 	}
 	
@@ -272,12 +265,13 @@
 	
 	echo
-	'<div id="themes-actions">'.
-	
-	'<p>'.$core->formNonce().'<input type="submit" name="select" value="'.__('Use selected theme').'" /> ';	
+	'<div class="two-cols clear" id="themes-actions">'.
+	$core->formNonce().
+	'<p class="col"><input type="submit" name="select" value="'.__('Use selected theme').'" /></p>';
+	
 	if ($can_install) {
-		echo ' <input type="submit" class="delete" name="remove" value="'.__('Delete selected theme').'" />';
-	}
-	echo '</p>'.
-	
+		echo '<p class="col right"><input type="submit" class="delete" name="remove" value="'.__('Delete selected theme').'" /></p>';
+	}
+	
+	echo
 	'</div>'.
 	'</form>'.
@@ -288,35 +282,36 @@
 	{
 		echo
-		'<div class="multi-part clear" id="add-theme" title="'.__('Install or upgrade a theme').'">'.
-		'<h3>'.__('Add themes to your installation').'</h3>'.
-		'<p>'.sprintf(__('You can find additional themes for your blog on %s.'),
-		'<a href="http://themes.dotaddict.org/galerie-dc2/">Dotaddict</a>').'</p>';
+		'<div class="multi-part clear" id="add-theme" title="'.__('Install or upgrade a theme').'">';
 		
 		if ($is_writable)
 		{
-			echo '<p>'.__('You can also install themes by uploading or downloading zip files.').'</p>';
+			echo '<p>'.__('You can install themes by uploading or downloading zip files.').'</p>';
 			
 			# 'Upload theme' form
 			echo
-			'<form method="post" action="blog_theme.php" id="uploadpkg" enctype="multipart/form-data" class="fieldset">'.
-			'<h4>'.__('Upload a zip file').'</h4>'.
-			'<p class="field"><label for="pkg_file" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Theme zip file:').'</label> '.
-			'<input type="file" name="pkg_file" id="pkg_file" /></p>'.
-			'<p class="field"><label for="your_pwd1" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label> '.
-			form::password(array('your_pwd','your_pwd1'),20,255).'</p>'.
-			'<p><input type="submit" name="upload_pkg" value="'.__('Upload theme').'" />'.
-			$core->formNonce().'</p>'.
+			'<form method="post" action="blog_theme.php" id="uploadpkg" enctype="multipart/form-data">'.
+			'<fieldset>'.
+			'<legend>'.__('Upload a zip file').'</legend>'.
+			'<p class="field"><label for="pkg_file" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Theme zip file:').' '.
+			'<input type="file" name="pkg_file" id="pkg_file" /></label></p>'.
+			'<p class="field"><label for="your_pwd1" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').' '.
+			form::password(array('your_pwd','your_pwd1'),20,255).'</label></p>'.
+			'<input type="submit" name="upload_pkg" value="'.__('Upload theme').'" />'.
+			$core->formNonce().
+			'</fieldset>'.
 			'</form>';
 			
 			# 'Fetch theme' form
 			echo
-			'<form method="post" action="blog_theme.php" id="fetchpkg" class="fieldset">'.
-			'<h4>'.__('Download a zip file').'</h4>'.
-			'<p class="field"><label for="pkg_url" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Theme zip file URL:').'</label> '.
-			form::field(array('pkg_url','pkg_url'),40,255).'</p>'.
-			'<p class="field"><label for="your_pwd2" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label> '.
-			form::password(array('your_pwd','your_pwd2'),20,255).'</p>'.
-			'<p><input type="submit" name="fetch_pkg" value="'.__('Download theme').'" />'.
-			$core->formNonce().'</p>'.
+			'<form method="post" action="blog_theme.php" id="fetchpkg">'.
+			'<fieldset>'.
+			'<legend>'.__('Download a zip file').'</legend>'.
+			'<p class="field"><label for="pkg_url" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Theme zip file URL:').' '.
+			form::field(array('pkg_url','pkg_url'),40,255).'</label></p>'.
+			'<p class="field"><label for="your_pwd2" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').' '.
+			form::password(array('your_pwd','your_pwd2'),20,255).'</label></p>'.
+			'<input type="submit" name="fetch_pkg" value="'.__('Download theme').'" />'.
+			$core->formNonce().
+			'</fieldset>'.
 			'</form>';
 		}
@@ -335,6 +330,7 @@
 	$theme_name = $core->themes->moduleInfo($core->blog->settings->system->theme,'name');
 	$core->themes->loadModuleL10Nresources($core->blog->settings->system->theme,$_lang);
-
-	echo
+	echo
+	'<h2>'.html::escapeHTML($core->blog->name).
+	' &rsaquo; <a href="blog_theme.php">'.__('Blog appearance').'</a> &rsaquo; <span class="page-title">'.__('Theme configuration').'</span></h2>'.
 	'<p><a class="back" href="blog_theme.php">'.__('back').'</a></p>';
 	
Index: admin/blogs.php
===================================================================
--- admin/blogs.php	(revision 1426)
+++ admin/blogs.php	(revision 1179)
@@ -73,15 +73,11 @@
 	$starting_script .= dcPage::jsLoad('js/filter-controls.js');
 }
-dcPage::open(__('List of blogs'),$starting_script,
-	dcPage::breadcrumb(
-		array(
-			__('System') => '',
-			'<span class="page-title">'.__('List of blogs').'</span>' => ''
-		))
-);
+dcPage::open(__('List of blogs'),$starting_script);
 
 if (!empty($_GET['del'])) {
 	dcPage::message(__('Blog has been successfully deleted.'));
 }
+
+echo '<h2 class="page-title">'.__('List of blogs').'</h2>';
 
 if (!$core->error->flag())
@@ -92,29 +88,31 @@
 	
 	if (!$show_filters) {
-		echo '<p><a id="filter-control" class="form-control" href="#">'.__('Filter blogs list').'</a></p>';
+		echo '<p><a id="filter-control" class="form-control" href="#">'.__('Filters').'</a></p>';
 	}
 	
 	echo
 	'<form action="blogs.php" method="get" id="filters-form">'.
-	'<h3>'.__('Filter blogs list').'</h3>'.
+	'<fieldset class="two-cols"><legend>'.__('Filters').'</legend>'.
 	
-	'<div class="table">'.
-	'<div class="cell">'.
-	'<p><label for="q" class="ib">'.__('Search:').'</label> '.
-	form::field('q',20,255,html::escapeHTML($q)).'</p>'.
+	'<div class="col">'.
+	'<p><label for="sortby">'.__('Order by:').' '.
+	form::combo('sortby',$sortby_combo,html::escapeHTML($sortby)).
+	'</label> '.
+	'<label for="order">'.__('Sort:').' '.
+	form::combo('order',$order_combo,html::escapeHTML($order)).
+	'</label></p>'.
 	'</div>'.
 	
-	'<div class="cell filters-options">'.
-	'<p><label for="sortby" class="ib">'.__('Order by:').'</label> '.
-	form::combo('sortby',$sortby_combo,html::escapeHTML($sortby)).'</p>'.
-	'<p><label for="order" class="ib">'.__('Sort:').'</label> '.
-	form::combo('order',$order_combo,html::escapeHTML($order)).'</p>'.
-	'<p><span class="label ib">'.__('Show').'</span> <label for="nb" class="classic">'.	
-	form::field('nb',3,3,$nb_per_page).' '.__('blogs per page').'</label></p>'.
+	'<div class="col">'.
+	'<p><label for="q">'.__('Search:').' '.
+	form::field('q',20,255,html::escapeHTML($q)).
+	'</label></p>'.
+	'<p><label for="nb" class="classic">'.	form::field('nb',3,3,$nb_per_page).' '.
+	__('Blogs per page').'</label> '.
+	'<input type="submit" value="'.__('Apply filters').'" /></p>'.
 	'</div>'.
-	'</div>'.
-
-	'<p><input type="submit" value="'.__('Apply filters').'" />'.
-	'<br class="clear" /></p>'. //Opera sucks
+	
+	'<br class="clear" />'. //Opera sucks
+	'</fieldset>'.
 	'</form>';
 	
@@ -129,5 +127,5 @@
 		$pager->var_page = 'page';
 		
-		echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+		echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 		
 		echo
@@ -147,5 +145,5 @@
 		echo '</table>';
 		
-		echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+		echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 	}
 }
Index: admin/categories.php
===================================================================
--- admin/categories.php	(revision 1468)
+++ admin/categories.php	(revision 1421)
@@ -73,10 +73,5 @@
 dcPage::open(__('Categories'),
 	dcPage::jsToolMan()."\n".
-	dcPage::jsLoad('js/_categories.js'),
-	dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			'<span class="page-title">'.__('Categories').'</span>' => ''
-		))
+	dcPage::jsLoad('js/_categories.js')
 );
 
@@ -93,4 +88,6 @@
 	dcPage::message(__('The category has been successfully moved.'));
 }
+
+echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Categories').'</span></h2>';
 
 $rs = $core->blog->getCategories(array('post_type'=>'post'));
@@ -158,13 +155,13 @@
 
 '<form action="category.php" method="post">'.
-'<h3>'.__('Add a new category').'</h3>'.
-'<p><label class="required" for="cat_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label> '.
-form::field('cat_title',30,255,'','maximal').'</p>'.
-'<p><label for="new_cat_parent">'.__('Parent:').'</label> '.
+'<fieldset><legend>'.__('Add a new category').'</legend>'.
+'<p><label class="required" for="cat_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').' '.
+form::field('cat_title',30,255,'','maximal').'</label></p>'.
+'<p><label for="new_cat_parent">'.__('Parent:').' '.
 form::combo('new_cat_parent',array_merge(array(__('(No cat)') => 0),$categories_combo),'','maximal').
-'</p>'.
-'<p><input type="submit" value="'.__('Create').'" />'.
-$core->formNonce().'</p>'.
-
+'</label></p>'.
+'<p><input type="submit" value="'.__('Create').'" /></p>'.
+$core->formNonce().
+'</fieldset>'.
 '</form>';
 
@@ -173,21 +170,22 @@
 	echo
 	'<form action="categories.php" method="post" id="delete-category">'.
-	'<h3>'.__('Remove a category').'</h3>'.
-	'<p><label for="del_cat">'.__('Choose a category to remove:').'</label> '.
-	form::combo('del_cat',$categories_combo,'','maximal').'</p> '.
-	'<p><label for="mov_cat">'.__('And choose the category which will receive its entries:').'</label> '.
-	form::combo('mov_cat',array_merge(array(__('(No cat)') => ''),$categories_combo),'','maximal').'</p> '.
-	'<p><input type="submit" value="'.__('Delete').'" class="delete" />'.
-	$core->formNonce().'</p>'.
-
+	'<fieldset><legend>'.__('Remove a category').'</legend>'.
+	'<p><label for="del_cat">'.__('Choose a category to remove:').' '.
+	form::combo('del_cat',$categories_combo,'','maximal').'</label></p> '.
+	'<p><label for="mov_cat">'.__('And choose the category which will receive its entries:').' '.
+	form::combo('mov_cat',array_merge(array(__('(No cat)') => ''),$categories_combo),'','maximal').'</label></p> '.
+	'<p><input type="submit" value="'.__('Delete').'" class="delete" /></p>'.
+	$core->formNonce().
+	'</fieldset>'.
 	'</form>';
 	
 	echo
-	'<form action="categories.php" method="post" id="reset-order" class="border-top">'.
-	'<h3>'.__('Reorder categories').'</h3>'.
+	'<form action="categories.php" method="post" id="reset-order">'.
+	'<fieldset><legend>'.__('Reorder categories').'</legend>'.
 	'<p>'.__('This will relocate all categories on the top level').'</p> '.
-	'<p><input type="submit" value="'.__('Reorder').'" />'.
+	'<p><input type="submit" value="'.__('Reorder').'" /></p>'.
 	form::hidden(array('reset'),1).
-	$core->formNonce().'</p>'.
+	$core->formNonce().
+	'</fieldset>'.
 	'</form>';
 }
Index: admin/category.php
===================================================================
--- admin/category.php	(revision 1499)
+++ admin/category.php	(revision 1179)
@@ -157,20 +157,8 @@
 $title = $cat_id ? html::escapeHTML($cat_title) : __('New category');
 
-$elements = array(
-	html::escapeHTML($core->blog->name) => '',
-	__('Categories') => 'categories.php'
-	);
-if ($cat_id) {
-	while($parents->fetch()) {
-		$elements[html::escapeHTML($parents->cat_title)] = 'category.php?id='.$parents->cat_id;
-	}
-}
-$elements['<span class="page-title">'.$title.'</span>'] = '';
-
 dcPage::open($title,
 	dcPage::jsConfirmClose('category-form').
 	dcPage::jsToolBar().
-	dcPage::jsLoad('js/_category.js'),
-	dcPage::breadcrumb($elements)
+	dcPage::jsLoad('js/_category.js')
 );
 
@@ -180,9 +168,23 @@
 
 echo
+'<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <a href="categories.php">'.
+__('Categories').'</a> &rsaquo; ';
+
+if ($cat_id)
+{
+	while($parents->fetch()) {
+		echo '<a href="category.php?id='.$parents->cat_id.'">'.html::escapeHTML($parents->cat_title).'</a>';
+		echo " &rsaquo; ";
+	}
+}
+
+echo '<span class="page-title">'.$title.'</span></h2>';
+
+echo
 '<form action="category.php" method="post" id="category-form">'.
-'<h3>'.__('Category information').'</h3>'.
-'<p><label class="required" for="cat_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label> '.
+'<fieldset><legend>'.__('Category information').'</legend>'.
+'<p><label class="required" for="cat_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').' '.
 form::field('cat_title',40,255,html::escapeHTML($cat_title)).
-'</p>';
+'</label></p>';
 if (!$cat_id)
 {
@@ -202,7 +204,6 @@
 echo
 '<div class="lockable">'.
-'<p><label for="cat_url">'.__('URL:').'</label> '
-.form::field('cat_url',40,255,html::escapeHTML($cat_url)).
-'</p>'.
+'<p><label for="cat_url">'.__('URL:').' '.form::field('cat_url',40,255,html::escapeHTML($cat_url)).
+'</label></p>'.
 '<p class="form-note warn" id="note-cat-url">'.
 __('Warning: If you set the URL manually, it may conflict with another category.').'</p>'.
@@ -217,4 +218,5 @@
 $core->formNonce().
 '</p>'.
+'</fieldset>'.
 '</form>';
 
@@ -222,14 +224,15 @@
 {
 	echo
-	'<h3 class="border-top">'.__('Move this category').'</h3>'.
+	'<h3>'.__('Move this category').'</h3>'.
 	'<div class="two-cols">'.
 	'<div class="col">'.
 	
-	'<form action="category.php" method="post" class="fieldset">'.
-	'<h4>'.__('Category parent').'</h4>'.
-	'<p><label for="cat_parent" class="classic">'.__('Parent:').'</label> '.
-	form::combo('cat_parent',$allowed_parents,$cat_parent).'</p>'.
+	'<form action="category.php" method="post">'.
+	'<fieldset><legend>'.__('Category parent').'</legend>'.
+	'<p><label for="cat_parent" class="classic">'.__('Parent:').' '.
+	form::combo('cat_parent',$allowed_parents,$cat_parent).'</label></p>'.
 	'<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
 	form::hidden(array('id'),$cat_id).$core->formNonce().'</p>'.
+	'</fieldset>'.
 	'</form>'.
 	'</div>';
@@ -238,6 +241,6 @@
 		echo
 		'<div class="col">'.
-		'<form action="category.php" method="post" class="fieldset">'.
-		'<h4>'.__('Category sibling').'</h4>'.
+		'<form action="category.php" method="post">'.
+		'<fieldset><legend>'.__('Category sibling').'</legend>'.
 		'<p><label class="classic" for="cat_sibling">'.__('Move current category').'</label> '.
 		form::combo('cat_move',array(__('before')=>'before',__('after')=>'after'),'','','',false,'title="'.__('position: ').'"').' '.
@@ -245,4 +248,5 @@
 		'<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
 		form::hidden(array('id'),$cat_id).$core->formNonce().'</p>'.
+		'</fieldset>'.
 		'</form>'.
 		'</div>';
Index: admin/comment.php
===================================================================
--- admin/comment.php	(revision 1399)
+++ admin/comment.php	(revision 1179)
@@ -160,20 +160,4 @@
 /* DISPLAY
 -------------------------------------------------------- */
-if ($comment_id) {
-	$breadcrumb = dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			html::escapeHTML($post_title) => $core->getPostAdminURL($post_type,$post_id).'&amp;co=1#c'.$comment_id,
-			'<span class="page-title">'.__('Edit comment').'</span>' => ''
-		));
-} else {
-	$breadcrumb = dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			html::escapeHTML($post_title) => $core->getPostAdminURL($post_type,$post_id),
-			'<span class="page-title">'.__('Edit comment').'</span>' => ''
-		));
-}
-
 dcPage::open(__('Edit comment'),
 	dcPage::jsConfirmClose('comment-form').
@@ -181,6 +165,5 @@
 	dcPage::jsLoad('js/_comment.js').
 	# --BEHAVIOR-- adminCommentHeaders
-	$core->callBehavior('adminCommentHeaders'),
-	$breadcrumb
+	$core->callBehavior('adminCommentHeaders')
 );
 
@@ -200,33 +183,33 @@
 		.'">'.__('Send an e-mail').'</a>';
 	}
-
+	
+	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <a href="'.
+		$core->getPostAdminURL($post_type,$post_id).'&amp;co=1#c'.$comment_id.'"> '.
+		$post_title.'</a> &rsaquo; <span class="page-title">'.__('Edit comment').'</span></h2>';
+		
 	echo
 	'<form action="comment.php" method="post" id="comment-form">'.
-	'<div class="fieldset">'.
-	'<h3>'.__('Information collected').'</h3>'.
-	'<p>'.__('IP address:').' '.
+	'<p>'.__('IP address:').'<br /> '.
 	'<a href="comments.php?ip='.$comment_ip.'">'.$comment_ip.'</a></p>'.
 	
-	'<p>'.__('Date:').' '.
+	'<p>'.__('Date:').'<br /> '.
 	dt::dt2str(__('%Y-%m-%d %H:%M'),$comment_dt).'</p>'.
-	'</div>'.
-
-	'<h3>'.__('Comment submitted').'</h3>'.	
-	'<p><label for="comment_author" class="required"><abbr title="'.__('Required field').'">*</abbr>'.__('Author:').'</label>'.
+	
+	'<p><label for="comment_author" class="required"><abbr title="'.__('Required field').'">*</abbr>'.__('Author:').
 	form::field('comment_author',30,255,html::escapeHTML($comment_author)).
-	'</p>'.
-	
-	'<p><label for="comment_email">'.__('Email:').'</label>'.
+	'</label></p>'.
+	
+	'<p><label for="comment_email">'.__('Email:').
 	form::field('comment_email',30,255,html::escapeHTML($comment_email)).
-	'<span>'.$comment_mailto.'</span>'.
-	'</p>'.
-	
-	'<p><label for="comment_site">'.__('Web site:').'</label>'.
+	$comment_mailto.
+	'</label></p>'.
+	
+	'<p><label for="comment_site">'.__('Web site:').
 	form::field('comment_site',30,255,html::escapeHTML($comment_site)).
-	'</p>'.
-	
-	'<p><label for="comment_status">'.__('Status:').'</label>'.
+	'</label></p>'.
+	
+	'<p><label for="comment_status">'.__('Status:').
 	form::combo('comment_status',$status_combo,$comment_status,'','',!$can_publish).
-	'</p>'.
+	'</label></p>'.
 	
 	# --BEHAVIOR-- adminAfterCommentDesc
Index: admin/comments.php
===================================================================
--- admin/comments.php	(revision 1480)
+++ admin/comments.php	(revision 1179)
@@ -37,6 +37,6 @@
 $type_combo = array(
 '-' => '',
-__('Comment') => 'co',
-__('Trackback') => 'tb'
+__('comment') => 'co',
+__('trackback') => 'tb'
 );
 
@@ -134,8 +134,8 @@
 if ($core->auth->check('publish,contentadmin',$core->blog->id))
 {
-	$combo_action[__('Publish')] = 'publish';
-	$combo_action[__('Unpublish')] = 'unpublish';
-	$combo_action[__('Mark as pending')] = 'pending';
-	$combo_action[__('Mark as junk')] = 'junk';
+	$combo_action[__('publish')] = 'publish';
+	$combo_action[__('unpublish')] = 'unpublish';
+	$combo_action[__('mark as pending')] = 'pending';
+	$combo_action[__('mark as junk')] = 'junk';
 }
 if ($core->auth->check('delete,contentadmin',$core->blog->id))
@@ -169,11 +169,7 @@
 $starting_script .= $core->callBehavior('adminCommentsHeaders');
 
-dcPage::open(__('Comments and trackbacks'),$starting_script,
-	dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			'<span class="page-title">'.__('Comments and trackbacks').'</span>' => ''
-		))
-);
+dcPage::open(__('Comments and trackbacks'),$starting_script);
+
+echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Comments and trackbacks').'</span></h2>';
 
 if (!$core->error->flag())
@@ -183,4 +179,49 @@
 		unset($_SESSION['comments_del_spam']);
 	}
+	
+	# Filters
+	if (!$show_filters) {
+		echo '<p><a id="filter-control" class="form-control" href="#">'.
+		__('Filters').'</a></p>';
+	}
+	
+	echo
+	'<form action="comments.php" method="get" id="filters-form">'.
+	'<fieldset><legend>'.__('Filters').'</legend>'.
+	'<div class="three-cols">'.
+	'<div class="col">'.
+	'<label for="type">'.__('Type:').' '.
+	form::combo('type',$type_combo,$type).
+	'</label> '.
+	'<label for="status">'.__('Status:').' '.
+	form::combo('status',$status_combo,$status).
+	'</label>'.
+	'</div>'.
+	
+	'<div class="col">'.
+	'<p><label for="sortby">'.__('Order by:').' '.
+	form::combo('sortby',$sortby_combo,$sortby).
+	'</label> '.
+	'<label for="order">'.__('Sort:').' '.
+	form::combo('order',$order_combo,$order).
+	'</label></p>'.
+	'<p><label for="nb" class="classic">'.	form::field('nb',3,3,$nb_per_page).' '.
+	__('Comments per page').'</label></p>'.
+	'</div>'.
+	
+	'<div class="col">'.
+	'<p><label for="author">'.__('Comment author:').' '.
+	form::field('author',20,255,html::escapeHTML($author)).
+	'</label>'.
+	'<label for="ip">'.__('IP address:').' '.
+	form::field('ip',20,39,html::escapeHTML($ip)).
+	'</label></p>'.
+	'<p><input type="submit" value="'.__('Apply filters').'" /></p>'.
+	'</div>'.
+	
+	'</div>'.
+	'<br class="clear" />'. //Opera sucks
+	'</fieldset>'.
+	'</form>';
 	
 	$spam_count = $core->blog->getComments(array('comment_status'=>-2),true)->f(0);
@@ -192,5 +233,5 @@
 		if (!$with_spam || ($status != -2)) {
 			if ($spam_count == 1) {
-				echo '<p>'.sprintf(__('You have one spam comment.'),'<strong>'.$spam_count.'</strong>').' '.
+				echo '<p>'.sprintf(__('You have one spam comments.'),'<strong>'.$spam_count.'</strong>').' '.
 				'<a href="comments.php?status=-2">'.__('Show it.').'</a></p>';
 			} elseif ($spam_count > 1) {
@@ -201,5 +242,4 @@
 		
 		echo
-			'<p class="no-margin">'.
 			$core->formNonce().
 			'<input name="delete_all_spam" class="delete" type="submit" value="'.__('Delete all spams').'" /></p>';
@@ -210,44 +250,4 @@
 		echo '</form>';
 	}
-
-	# Filters
-	if (!$show_filters) {
-		echo '<p><a id="filter-control" class="form-control" href="#">'.
-		__('Filter comments and trackbacks list').'</a></p>';
-	}
-	
-	echo
-	'<form action="comments.php" method="get" id="filters-form">'.
-	'<h3>'.__('Filter comments and trackbacks list').'</h3>'.
-	'<div class="table">'.
-
-	'<div class="cell">'.
-	'<p><label for="type" class="ib">'.__('Type:').'</label> '.
-	form::combo('type',$type_combo,$type).'</p> '.
-	'<p><label for="status" class="ib">'.__('Status:').'</label> '.
-	form::combo('status',$status_combo,$status).'</p>'.
-	'</div>'.
-	
-	'<div class="cell">'.
-	'<p><label for="author" class="ib">'.__('Author:').'</label> '.
-	form::field('author',20,255,html::escapeHTML($author)).'</p>'.
-	'<p><label for="ip" class="ib">'.__('IP address:').'</label> '.
-	form::field('ip',20,39,html::escapeHTML($ip)).'</p>'.
-	'</div>'.
-	
-	'<div class="cell filters-options">'.
-	'<p><label for="sortby" class="ib">'.__('Order by:').'</label> '.
-	form::combo('sortby',$sortby_combo,$sortby).'</p>'.
-	'<p><label for="order" class="ib">'.__('Sort:').'</label> '.
-	form::combo('order',$order_combo,$order).'</p>'.
-	'<p><span class="label ib">Afficher</span> <label for="nb" class="classic">'.
-	form::field('nb',3,3,$nb_per_page).' '.
-	__('comments per page').'</label></p>'.
-	'</div>'.
-	
-	'</div>'.
-	'<p><input type="submit" value="'.__('Apply filters').'" />'.
-	'<br class="clear" /></p>'. //Opera sucks
-	'</form>';
 	
 	# Show comments
@@ -261,5 +261,5 @@
 	
 	'<p class="col right"><label for="action" class="classic">'.__('Selected comments action:').'</label> '.
-	form::combo('action',$combo_action,$default,'','','','title="'.__('Actions').'"').
+	form::combo('action',$combo_action,$default,'','','','title="'.__('action: ').'"').
 	$core->formNonce().
 	'<input type="submit" value="'.__('ok').'" /></p>'.
Index: admin/comments_actions.php
===================================================================
--- admin/comments_actions.php	(revision 1474)
+++ admin/comments_actions.php	(revision 1179)
@@ -137,5 +137,5 @@
 $core->callBehavior('adminCommentsActionsContent',$core,$action,$hidden_fields);
 
-echo '<p><a class="back" href="'.str_replace('&','&amp;',$redir).'">'.__('Back to comments list').'</a></p>';
+echo '<p><a class="back" href="'.str_replace('&','&amp;',$redir).'">'.__('back').'</a></p>';
 
 dcPage::close();
Index: admin/index.php
===================================================================
--- admin/index.php	(revision 1499)
+++ admin/index.php	(revision 1488)
@@ -121,5 +121,20 @@
 $__dashboard_items = new ArrayObject(array(new ArrayObject,new ArrayObject));
 
+# Documentation links
 $dashboardItem = 0;
+if ($core->auth->user_prefs->dashboard->doclinks) {
+	if (!empty($__resources['doc']))
+	{
+		$doc_links = '<h3>'.__('Documentation and support').'</h3><ul>';
+	
+		foreach ($__resources['doc'] as $k => $v) {
+			$doc_links .= '<li><a href="'.$v.'" title="'.$k.' '.__('(external link)').'">'.$k.'</a></li>';
+		}
+	
+		$doc_links .= '</ul>';
+		$__dashboard_items[$dashboardItem][] = $doc_links;
+		$dashboardItem++;
+	}
+}
 
 if ($core->auth->user_prefs->dashboard->dcnews) {
@@ -165,20 +180,4 @@
 }
 
-# Documentation links
-if ($core->auth->user_prefs->dashboard->doclinks) {
-	if (!empty($__resources['doc']))
-	{
-		$doc_links = '<h3>'.__('Documentation and support').'</h3><ul>';
-	
-		foreach ($__resources['doc'] as $k => $v) {
-			$doc_links .= '<li><a href="'.$v.'" title="'.$k.' '.__('(external link)').'">'.$k.'</a></li>';
-		}
-	
-		$doc_links .= '</ul>';
-		$__dashboard_items[$dashboardItem][] = $doc_links;
-		$dashboardItem++;
-	}
-}
-
 $core->callBehavior('adminDashboardItems', $core, $__dashboard_items);
 
@@ -194,29 +193,8 @@
 	dcPage::jsLoad('js/_index.js').
 	# --BEHAVIOR-- adminDashboardHeaders
-	$core->callBehavior('adminDashboardHeaders'),
-	dcPage::breadcrumb(
-		array(
-		'<span class="page-title">'.__('Dashboard').' : '.html::escapeHTML($core->blog->name).'</span>' => ''
-		),
-		false)
+	$core->callBehavior('adminDashboardHeaders')
 );
 
-# Dotclear updates notifications
-if ($core->auth->isSuperAdmin() && is_readable(DC_DIGESTS))
-{
-	$updater = new dcUpdate(DC_UPDATE_URL,'dotclear',DC_UPDATE_VERSION,DC_TPL_CACHE.'/versions');
-	$new_v = $updater->check(DC_VERSION);
-	$version_info = $new_v ? $updater->getInfoURL() : '';
-
-	if ($updater->getNotify() && $new_v) {
-		$message =
-		'<div><p>'.sprintf(__('Dotclear %s is available!'),$new_v).'</p> '.
-		'<ul><li><strong><a href="update.php">'.sprintf(__('Upgrade now'),$new_v).'</a></strong>'.
-		'</li><li><a href="update.php?hide_msg=1">'.__('Remind me later').'</a>'.
-		($version_info ? ' </li><li><a href="'.$version_info.'">'.__('information about this version').'</a>' : '').
-		'</li></ul></div>';
-		dcPage::message($message,false,true);
-	}
-}
+echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Dashboard').'</span></h2>';
 
 if ($core->auth->getInfo('user_default_blog') != $core->blog->id && $core->auth->blog_count > 1) {
@@ -268,4 +246,21 @@
 $dashboardItems = '';
 
+# Dotclear updates notifications
+if ($core->auth->isSuperAdmin() && is_readable(DC_DIGESTS))
+{
+	$updater = new dcUpdate(DC_UPDATE_URL,'dotclear',DC_UPDATE_VERSION,DC_TPL_CACHE.'/versions');
+	$new_v = $updater->check(DC_VERSION);
+	$version_info = $new_v ? $updater->getInfoURL() : '';
+	
+	if ($updater->getNotify() && $new_v) {
+		$dashboardItems .=
+		'<div id="upg-notify" class="static-msg"><p>'.sprintf(__('Dotclear %s is available!'),$new_v).'</p> '.
+		'<ul><li><strong><a href="update.php">'.sprintf(__('Upgrade now'),$new_v).'</a></strong>'.
+		'</li><li><a href="update.php?hide_msg=1">'.__('Remind me later').'</a>'.
+		($version_info ? ' </li><li><a href="'.$version_info.'">'.__('information about this version').'</a>' : '').
+		'</li></ul></div>';
+	}
+}
+
 # Errors modules notifications
 if ($core->auth->isSuperAdmin())
@@ -288,5 +283,5 @@
 	if ($i->count() > 0)
 	{
-		$dashboardItems .= '<div class="db-item">';
+		$dashboardItems .= '<div>';
 		foreach ($i as $v) {
 			$dashboardItems .= $v;
@@ -322,13 +317,13 @@
 			}
 		} catch (Exception $e) { }
-	
+		
 		echo
 		'<div id="quick">'.
 		'<h3>'.__('Quick entry').'</h3>'.
-		'<form id="quick-entry" action="post.php" method="post" class="fieldset">'.
-		'<h4>'.__('New entry').'</h4>'.
-		'<p class="col"><label for="post_title" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label>'.
+		'<form id="quick-entry" action="post.php" method="post">'.
+		'<fieldset><legend>'.__('New entry').'</legend>'.
+		'<p class="col"><label for="post_title" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').
 		form::field('post_title',20,255,'','maximal').
-		'</p>'.
+		'</label></p>'.
 		'<p class="area"><label class="required" '.
 		'for="post_content"><abbr title="'.__('Required field').'">*</abbr> '.__('Content:').'</label> '.
@@ -340,4 +335,5 @@
 			? '<div>'.
 			'<p id="new_cat">'.__('Add a new category').'</p>'.
+			'<p class="form-note info clear">'.__('This category will be created when you will save your post.').'</p>'.
 			'<p><label for="new_cat_title">'.__('Title:').' '.
 			form::field('new_cat_title',30,255,'','maximal').'</label></p>'.
@@ -358,4 +354,5 @@
 		form::hidden('post_notes','').
 		'</p>'.
+		'</fieldset>'.
 		'</form>'.
 		'</div>';
Index: admin/install/index.php
===================================================================
--- admin/install/index.php	(revision 1399)
+++ admin/install/index.php	(revision 1247)
@@ -190,5 +190,5 @@
 		$core->auth->user_prefs->dashboard->put('doclinks',true,'boolean','',null,true);
 		$core->auth->user_prefs->dashboard->put('dcnews',true,'boolean','',null,true);
-		$core->auth->user_prefs->dashboard->put('quickentry',true,'boolean','',null,true);
+		$core->auth->user_prefs->dashboard->put('quickentry',false,'boolean','',null,true);
 
 		# Add accessibility options
@@ -320,19 +320,19 @@
 	'<form action="index.php" method="post">'.
 	'<fieldset><legend>'.__('User information').'</legend>'.
-	'<p><label for="u_firstname">'.__('First Name:').'</label> '.
-	form::field('u_firstname',30,255,html::escapeHTML($u_firstname)).'</p>'.
-	'<p><label for="u_name">'.__('Last Name:').'</label> '.
-	form::field('u_name',30,255,html::escapeHTML($u_name)).'</p>'.
-	'<p><label for="u_email">'.__('Email:').'</label> '.
-	form::field('u_email',30,255,html::escapeHTML($u_email)).'</p>'.
+	'<p><label for="u_firstname">'.__('First Name:').' '.
+	form::field('u_firstname',30,255,html::escapeHTML($u_firstname)).'</label></p>'.
+	'<p><label for="u_name">'.__('Last Name:').' '.
+	form::field('u_name',30,255,html::escapeHTML($u_name)).'</label></p>'.
+	'<p><label for="u_email">'.__('Email:').' '.
+	form::field('u_email',30,255,html::escapeHTML($u_email)).'</label></p>'.
 	'</fieldset>'.
 	
 	'<fieldset><legend>'.__('Username and password').'</legend>'.
-	'<p><label for="u_login" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Username:').'</label> '.
-	form::field('u_login',30,32,html::escapeHTML($u_login)).'</p>'.
-	'<p><label for="u_pwd" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Password:').'</label> '.
-	form::password('u_pwd',30,255).'</p>'.
-	'<p><label for="u_pwd2" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Confirm password:').'</label> '.
-	form::password('u_pwd2',30,255).'</p>'.
+	'<p><label for="u_login" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Username:').' '.
+	form::field('u_login',30,32,html::escapeHTML($u_login)).'</label></p>'.
+	'<p><label for="u_pwd" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Password:').' '.
+	form::password('u_pwd',30,255).'</label></p>'.
+	'<p><label for="u_pwd2" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Confirm password:').' '.
+	form::password('u_pwd2',30,255).'</label></p>'.
 	'</fieldset>'.
 	
Index: admin/install/wizard.php
===================================================================
--- admin/install/wizard.php	(revision 1399)
+++ admin/install/wizard.php	(revision 1179)
@@ -178,16 +178,16 @@
 
 '<form action="wizard.php" method="post">'.
-'<p><label class="required" for="DBDRIVER"><abbr title="'.__('Required field').'">*</abbr> '.__('Database type:').'</label> '.
-form::combo('DBDRIVER',array('MySQL'=>'mysql','PostgreSQL'=>'pgsql'),$DBDRIVER).'</p>'.
-'<p><label for="DBHOST">'.__('Database Host Name:').'</label> '.
-form::field('DBHOST',30,255,html::escapeHTML($DBHOST)).'</p>'.
-'<p><label for="DBNAME">'.__('Database Name:').'</label> '.
-form::field('DBNAME',30,255,html::escapeHTML($DBNAME)).'</p>'.
-'<p><label for="DBUSER">'.__('Database User Name:').'</label> '.
-form::field('DBUSER',30,255,html::escapeHTML($DBUSER)).'</p>'.
-'<p><label for="DBPASSWORD">'.__('Database Password:').'</label> '.
-form::password('DBPASSWORD',30,255).'</p>'.
-'<p><label for="DBPREFIX" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Database Tables Prefix:').'</label> '.
-form::field('DBPREFIX',30,255,html::escapeHTML($DBPREFIX)).'</p>'.
+'<p><label class="required" for="DBDRIVER"><abbr title="'.__('Required field').'">*</abbr> '.__('Database type:').' '.
+form::combo('DBDRIVER',array('MySQL'=>'mysql','PostgreSQL'=>'pgsql'),$DBDRIVER).'</label></p>'.
+'<p><label for="DBHOST">'.__('Database Host Name:').' '.
+form::field('DBHOST',30,255,html::escapeHTML($DBHOST)).'</label></p>'.
+'<p><label for="DBNAME">'.__('Database Name:').' '.
+form::field('DBNAME',30,255,html::escapeHTML($DBNAME)).'</label></p>'.
+'<p><label for="DBUSER">'.__('Database User Name:').' '.
+form::field('DBUSER',30,255,html::escapeHTML($DBUSER)).'</label></p>'.
+'<p><label for="DBPASSWORD">'.__('Database Password:').' '.
+form::password('DBPASSWORD',30,255).'</label></p>'.
+'<p><label for="DBPREFIX" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Database Tables Prefix:').' '.
+form::field('DBPREFIX',30,255,html::escapeHTML($DBPREFIX)).'</label></p>'.
 
 '<p><input type="submit" value="'.__('Continue').'" /></p>'.
Index: admin/js/_index.js
===================================================================
--- admin/js/_index.js	(revision 1418)
+++ admin/js/_index.js	(revision 1500)
@@ -33,5 +33,7 @@
 				post_status: status,
 				post_format: $('#post_format',f).val(),
-				post_lang: $('#post_lang',f).val()
+				post_lang: $('#post_lang',f).val(),
+				new_cat_title: $('#new_cat_title',f).val(),
+				new_cat_parent: $('#new_cat_parent',f).val()
 			}
 
@@ -56,4 +58,7 @@
 						contentTb.syncContents('textarea');
 					}
+					$('#cat_id',f).val('0');
+					$('#new_cat_title',f).val('');
+					$('#new_cat_parent',f).val('0');
 				}
 
Index: admin/js/_media.js
===================================================================
--- admin/js/_media.js	(revision 1461)
+++ admin/js/_media.js	(revision 1234)
@@ -2,25 +2,4 @@
 	if ($('#fileupload').length==0) {
 		return;
-	}
-
-	function enableButton(button) {
-		button.prop('disabled',false).removeClass('disabled');
-	}
-
-	function disableButton(button) {
-		button.prop('disabled',true).addClass('disabled');
-	}
-
-	function displayMessageInQueue(n) {
-		var msg = '';
-		if (n==1) {
-			msg = dotclear.jsUpload.msg.file_in_queue;
-		} else if (n>1) {
-			msg = dotclear.jsUpload.msg.files_in_queue;
-			msg = msg.replace(/%d/,n);
-		} else {
-			msg = dotclear.jsUpload.msg.no_file_in_queue;
-		}
-		$('.queue-message','#fileupload').html(msg);
 	}
 
@@ -31,16 +10,6 @@
 	});
 
-	$('.button.cancel', '#fileupload .fileupload-buttonbar').click(function(e) {
-		$('.button.cancel','#fileupload .fileupload-buttonbar').hide();
-		disableButton($('.button.start','#fileupload .fileupload-buttonbar'));
-		displayMessageInQueue(0);
-	});
-
-	$('.cancel').live('click', function(e) {
-		if ($('.fileupload-ctrl .files .template-upload', '#fileupload').length==0) {
-			$('.button.cancel','#fileupload .fileupload-buttonbar').hide();
-			disableButton($('.button.start','#fileupload .fileupload-buttonbar'));
-		}
-		displayMessageInQueue($('.files .template-upload','#fileupload').length);
+	$('.button.cancel', '#fileupload').click(function(e) {
+		$('.button.cancel, .button.start','#fileupload .fileupload-buttonbar').hide();
 	});
 
@@ -57,13 +26,7 @@
 		autoUpload: false,
 		sequentialUploads: true,
-		uploadTemplateId: null,
-		downloadTemplateId: null,
-		uploadTemplate: template_upload,
-		downloadTemplate: template_download
+		disabled: true
 	}).bind('fileuploadadd', function(e, data) {
-		$('.button.cancel','#fileupload .fileupload-buttonbar').show();
-		enableButton($('.button.start','#fileupload .fileupload-buttonbar'));
-	}).bind('fileuploadadded', function(e, data) {
-		displayMessageInQueue($('.files .template-upload','#fileupload').length);
+		$('.button.cancel, .button.start', '#fileupload .fileupload-buttonbar').show();
 	}).bind('fileuploaddone', function(e, data) {
 		if (data.result.files[0].html !==undefined) {
@@ -72,12 +35,10 @@
 		$('.button.clean','#fileupload').show();
 	}).bind('fileuploadalways', function(e, data) {
-		displayMessageInQueue($('.files .template-upload','#fileupload').length);
-		if ($('.fileupload-ctrl .files .template-upload','#fileupload').length==0) {
-			$('.button.cancel','#fileupload .fileupload-buttonbar').hide();
-			disableButton($('.button.start','#fileupload .fileupload-buttonbar'));
-		}
+	    if ($('.fileupload-ctrl .files .template-upload', '#fileupload').length==0) {
+		$('.button.start, .button.cancel','#fileupload .fileupload-buttonbar').hide();
+	    }
 	});
 
-	var $container = $('#fileupload').parent().parent();
+	var $container = $('#add-file-f').parent().parent();
 	var $msg,label;
 
@@ -86,6 +47,4 @@
 		label = dotclear.jsUpload.msg.choose_files;
 		$('#fileupload').fileupload({disabled:false});
-		displayMessageInQueue(0);
-		disableButton($('.button.start','#fileupload .fileupload-buttonbar'));
 	} else {
 		$msg = dotclear.msg.enhanced_uploader_activate;
@@ -102,17 +61,13 @@
 			// We must remove files in table
 			$('.files .upload-file', '#fileupload').remove();
-			$('.button.cancel,.button.clean','#fileupload .fileupload-buttonbar').hide();
+			$('.button.cancel, .button.start','#fileupload .fileupload-buttonbar').hide();
+			$('.button.start','#fileupload').show();
 			$('#fileupload').fileupload({disabled:true});
-			$('.queue-message','#fileupload').html('').hide();
 		} else {
 			$msg = dotclear.msg.enhanced_uploader_disable;
 			label = dotclear.jsUpload.msg.choose_files;
 			$('#upfile').attr('multiple', true);
-			var startButton = $('.button.start','#fileupload .fileupload-buttonbar');
-			disableButton(startButton);
-			startButton.show();
+			$('.button.start','#fileupload').hide();
 			$('#fileupload').fileupload({disabled:false});
-			$('.queue-message','#fileupload').show();
-			displayMessageInQueue(0);
 		}
 		$(this).find('a').text($msg);
@@ -120,5 +75,5 @@
 
 		$container.toggleClass('enhanced_uploader');
-	}).appendTo($('#fileupload'));
+	}).appendTo($('#add-file-f'));
 
 	// Replace remove links by a POST on hidden form
Index: admin/js/_post.js
===================================================================
--- admin/js/_post.js	(revision 1468)
+++ admin/js/_post.js	(revision 1417)
@@ -79,7 +79,15 @@
 		// Get document format and prepare toolbars
 		var formatField = $('#post_format').get(0);
+		var last_post_format = $(formatField).val();
 		$(formatField).change(function() {
-			excerptTb.switchMode(this.value);
-			contentTb.switchMode(this.value);
+			// Confirm post format change
+			if(window.confirm(dotclear.msg.confirm_change_post_format_noconvert)){
+				excerptTb.switchMode(this.value);
+				contentTb.switchMode(this.value);
+				last_post_format = $(this).val();
+			}else{
+				// Restore last format if change cancelled
+				$(this).val(last_post_format);
+			}
 		});
 		
@@ -126,19 +134,5 @@
 			hide: $('#post_password').val() == ''
 		});
-		$('#post_status').parent().toggleWithLegend($('#post_status'),{
-			cookie: 'dcx_post_status'
-		});
-		$('#post_dt').parent().toggleWithLegend($('#post_dt').parent().children().not('label'),{
-			cookie: 'dcx_post_dt'
-		});
-		$('#post_format').parent().toggleWithLegend($('#post_format').parent().children().not('label').add($('#post_format').parents('p').next()),{
-			cookie: 'dcx_post_format'
-		});
-		$('#cat_id').parent().toggleWithLegend($('#cat_id'),{
-			cookie: 'cat_id'
-		});
-		$('#post_url').parent().toggleWithLegend($('#post_url').parent().children().not('label'),{
-			cookie: 'post_url'
-		});
+		
 		// We load toolbar on excerpt only when it's ready
 		$('#excerpt-area label').toggleWithLegend($('#excerpt-area').children().not('label'),{
@@ -167,5 +161,4 @@
 		var a = document.createElement('a');
 		a.href = '#';
-		a.className = 'button';
 		$(a).click(function() {
 			var params = {
Index: admin/js/common.js
===================================================================
--- admin/js/common.js	(revision 1395)
+++ admin/js/common.js	(revision 1140)
@@ -153,5 +153,4 @@
 			}
 		}
-		$('p#help-button span').text($('#content').hasClass('with-help') ? dotclear.msg.help_hide : dotclear.msg.help);
 		sizeBox();
 		return false;
@@ -197,5 +196,5 @@
 	sizeBox();
 
-	var img = $('<p id="help-button"><span>'+dotclear.msg.help+'</span></p>');
+	var img = $('<span id="help-button">'+dotclear.msg.help+'</span>');
 	var select = $();
 	img.click(function() { return toggle(); });
@@ -224,5 +223,4 @@
 				imgE.style.top = '1.7em';
 				imgE.style.left = ($(this).width()+4)+'px';
-				imgE.alt=dotclear.msg.click_to_unlock;
 				$(imgE).css('cursor','pointer');
 
Index: dmin/js/ie7/IE9.js
===================================================================
--- admin/js/ie7/IE9.js	(revision 1456)
+++ 	(revision )
@@ -1,2901 +1,0 @@
-/*
-  IE7/IE8/IE9.js - copyright 2004-2010, Dean Edwards
-  http://code.google.com/p/ie7-js/
-  http://www.opensource.org/licenses/mit-license.php
-*/
-
-/* W3C compliance for Microsoft Internet Explorer */
-
-/* credits/thanks:
-  Shaggy, Martijn Wargers, Jimmy Cerra, Mark D Anderson,
-  Lars Dieckow, Erik Arvidsson, Gellért Gyuris, James Denny,
-  Unknown W Brackets, Benjamin Westfarer, Rob Eberhardt,
-  Bill Edney, Kevin Newman, James Crompton, Matthew Mastracci,
-  Doug Wright, Richard York, Kenneth Kolano, MegaZone,
-  Thomas Verelst, Mark 'Tarquin' Wilton-Jones, Rainer Åhlfors,
-  David Zulaica, Ken Kolano, Kevin Newman, Sjoerd Visscher,
-  Ingo Chao
-*/
-
-// timestamp: Fri, 30 Apr 2010 20:59:18
-
-(function(window, document) {
-
-var IE7 = window.IE7 = {
-  version: "2.1(beta4)",
-  toString: K("[IE7]")
-};
-IE7.compat = 9;
-var appVersion = IE7.appVersion = navigator.appVersion.match(/MSIE (\d\.\d)/)[1] - 0;
-
-if (/ie7_off/.test(top.location.search) || appVersion < 5.5 || appVersion >= IE7.compat) return;
-
-var MSIE5 = appVersion < 6;
-
-var Undefined = K();
-var documentElement = document.documentElement, body, viewport;
-var ANON = "!";
-var HEADER = ":link{ie7-link:link}:visited{ie7-link:visited}";
-
-// -----------------------------------------------------------------------
-// external
-// -----------------------------------------------------------------------
-
-var RELATIVE = /^[\w\.]+[^:]*$/;
-function makePath(href, path) {
-  if (RELATIVE.test(href)) href = (path || "") + href;
-  return href;
-};
-
-function getPath(href, path) {
-  href = makePath(href, path);
-  return href.slice(0, href.lastIndexOf("/") + 1);
-};
-
-// Get the path to this script
-var script = document.scripts[document.scripts.length - 1];
-var path = getPath(script.src);
-
-// Use microsoft's http request object to load external files
-try {
-  var httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
-} catch (ex) {
-  // ActiveX disabled
-}
-
-var fileCache = {};
-function loadFile(href, path) {
-  try {
-    href = makePath(href, path);
-    if (!fileCache[href]) {
-      httpRequest.open("GET", href, false);
-      httpRequest.send();
-      if (httpRequest.status == 0 || httpRequest.status == 200) {
-        fileCache[href] = httpRequest.responseText;
-      }
-    }
-  } catch (ex) {
-    // ignore errors
-  }
-  return fileCache[href] || "";
-};
-
-// -----------------------------------------------------------------------
-// OO support
-// -----------------------------------------------------------------------
-
-
-// This is a cut-down version of base2 (http://code.google.com/p/base2/)
-
-var _slice = Array.prototype.slice;
-
-// private
-var _FORMAT = /%([1-9])/g;
-var _LTRIM = /^\s\s*/;
-var _RTRIM = /\s\s*$/;
-var _RESCAPE = /([\/()[\]{}|*+-.,^$?\\])/g;           // safe regular expressions
-var _BASE = /\bbase\b/;
-var _HIDDEN = ["constructor", "toString"];            // only override these when prototyping
-
-var prototyping;
-
-function Base(){};
-Base.extend = function(_instance, _static) {
-  // Build the prototype.
-  prototyping = true;
-  var _prototype = new this;
-  extend(_prototype, _instance);
-  prototyping = false;
-
-  // Create the wrapper for the constructor function.
-  var _constructor = _prototype.constructor;
-  function klass() {
-    // Don't call the constructor function when prototyping.
-    if (!prototyping) _constructor.apply(this, arguments);
-  };
-  _prototype.constructor = klass;
-
-  // Build the static interface.
-  klass.extend = arguments.callee;
-  extend(klass, _static);
-  klass.prototype = _prototype;
-  return klass;
-};
-Base.prototype.extend = function(source) {
-  return extend(this, source);
-};
-
-
-// A collection of regular expressions and their associated replacement values.
-// A Base class for creating parsers.
-
-var HASH     = "#";
-var ITEMS    = "#";
-var KEYS     = ".";
-var COMPILED = "/";
-
-var REGGRP_BACK_REF        = /\\(\d+)/g,
-    REGGRP_ESCAPE_COUNT    = /\[(\\.|[^\]\\])+\]|\\.|\(\?/g,
-    REGGRP_PAREN           = /\(/g,
-    REGGRP_LOOKUP          = /\$(\d+)/,
-    REGGRP_LOOKUP_SIMPLE   = /^\$\d+$/,
-    REGGRP_LOOKUPS         = /(\[(\\.|[^\]\\])+\]|\\.|\(\?)|\(/g,
-    REGGRP_DICT_ENTRY      = /^<#\w+>$/,
-    REGGRP_DICT_ENTRIES    = /<#(\w+)>/g;
-
-var RegGrp = Base.extend({
-  constructor: function(values) {
-    this[KEYS] = [];
-    this[ITEMS] = {};
-    this.merge(values);
-  },
-
-  //dictionary: null,
-  //ignoreCase: false,
-
-  add: function(expression, replacement) {
-    delete this[COMPILED];
-    if (expression instanceof RegExp) {
-      expression = expression.source;
-    }
-    if (!this[HASH + expression]) this[KEYS].push(String(expression));
-    return this[ITEMS][HASH + expression] = new RegGrp.Item(expression, replacement, this);
-  },
-
-  compile: function(recompile) {
-    if (recompile || !this[COMPILED]) {
-      this[COMPILED] = new RegExp(this, this.ignoreCase ? "gi" : "g");
-    }
-    return this[COMPILED];
-  },
-
-  merge: function(values) {
-    for (var i in values) this.add(i, values[i]);
-  },
-
-  exec: function(string) {
-    var group = this,
-        patterns = group[KEYS],
-        items = group[ITEMS], item;
-    var result = this.compile(true).exec(string);
-    if (result) {
-      // Loop through the RegGrp items.
-      var i = 0, offset = 1;
-      while ((item = items[HASH + patterns[i++]])) {
-        var next = offset + item.length + 1;
-        if (result[offset]) { // do we have a result?
-          if (item.replacement === 0) {
-            return group.exec(string);
-          } else {
-            var args = result.slice(offset, next), j = args.length;
-            while (--j) args[j] = args[j] || ""; // some platforms return null/undefined for non-matching sub-expressions
-            args[0] = {match: args[0], item: item};
-            return args;
-          }
-        }
-        offset = next;
-      }
-    }
-    return null;
-  },
-
-  parse: function(string) {
-    string += ""; // type safe
-    var group = this,
-        patterns = group[KEYS],
-        items = group[ITEMS];
-    return string.replace(this.compile(), function(match) {
-      var args = [], item, offset = 1, i = arguments.length;
-      while (--i) args[i] = arguments[i] || ""; // some platforms return null/undefined for non-matching sub-expressions
-      // Loop through the RegGrp items.
-      while ((item = items[HASH + patterns[i++]])) {
-        var next = offset + item.length + 1;
-        if (args[offset]) { // do we have a result?
-          var replacement = item.replacement;
-          switch (typeof replacement) {
-            case "function":
-              return replacement.apply(group, args.slice(offset, next));
-            case "number":
-              return args[offset + replacement];
-            default:
-              return replacement;
-          }
-        }
-        offset = next;
-      }
-      return match;
-    });
-  },
-
-  toString: function() {
-    var strings = [],
-        keys = this[KEYS],
-        items = this[ITEMS], item;
-    for (var i = 0; item = items[HASH + keys[i]]; i++) {
-      strings[i] = item.source;
-    }
-    return "(" + strings.join(")|(") + ")";
-  }
-}, {
-  IGNORE: null, // a null replacement value means that there is no replacement.
-
-  Item: Base.extend({
-    constructor: function(source, replacement, owner) {
-      var length = source.indexOf("(") === -1 ? 0 : RegGrp.count(source);
-
-      var dictionary = owner.dictionary;
-      if (dictionary && source.indexOf("<#") !== -1) {
-        if (REGGRP_DICT_ENTRY.test(source)) {
-          var entry = dictionary[ITEMS][HASH + source.slice(2, -1)];
-          source = entry.replacement;
-          length = entry._length;
-        } else {
-          source = dictionary.parse(source);
-        }
-      }
-
-      if (typeof replacement == "number") replacement = String(replacement);
-      else if (replacement == null) replacement = 0;
-
-      // Does the expression use sub-expression lookups?
-      if (typeof replacement == "string" && REGGRP_LOOKUP.test(replacement)) {
-        if (REGGRP_LOOKUP_SIMPLE.test(replacement)) { // A simple lookup? (e.g. "$2").
-          // Store the index (used for fast retrieval of matched strings).
-          var index = replacement.slice(1) - 0;
-          if (index && index <= length) replacement = index;
-        } else {
-          // A complicated lookup (e.g. "Hello $2 $1.").
-          var lookup = replacement, regexp;
-          replacement = function(match) {
-            if (!regexp) {
-              regexp = new RegExp(source, "g" + (this.ignoreCase ? "i": ""));
-            }
-            return match.replace(regexp, lookup);
-          };
-        }
-      }
-
-      this.length = length;
-      this.source = String(source);
-      this.replacement = replacement;
-    }
-  }),
-
-  count: function(expression) {
-    return (String(expression).replace(REGGRP_ESCAPE_COUNT, "").match(REGGRP_PAREN) || "").length;
-  }
-});
-
-var Dictionary = RegGrp.extend({
-  parse: function(phrase) {
-    // Prevent sub-expressions in dictionary entries from capturing.
-    var entries = this[ITEMS];
-    return phrase.replace(REGGRP_DICT_ENTRIES, function(match, entry) {
-      entry = entries[HASH + entry];
-      return entry ? entry._nonCapturing : match;
-    });
-  },
-
-  add: function(expression, replacement) {
-    // Get the underlying replacement value.
-    if (replacement instanceof RegExp) {
-      replacement = replacement.source;
-    }
-    // Translate the replacement.
-    // The result is the original replacement recursively parsed by this dictionary.
-    var nonCapturing = replacement.replace(REGGRP_LOOKUPS, _nonCapture);
-    if (replacement.indexOf("(") !== -1) {
-      var realLength = RegGrp.count(replacement);
-    }
-    if (replacement.indexOf("<#") !== -1) {
-      replacement = this.parse(replacement);
-      nonCapturing = this.parse(nonCapturing);
-    }
-    var item = this.base(expression, replacement);
-    item._nonCapturing = nonCapturing;
-    item._length = realLength || item.length; // underlying number of sub-groups
-    return item;
-  },
-
-  toString: function() {
-    return "(<#" + this[PATTERNS].join(">)|(<#") + ">)";
-  }
-});
-
-function _nonCapture(match, escaped) {
-  return escaped || "(?:"; // non-capturing
-};
-
-// =========================================================================
-// lang/extend.js
-// =========================================================================
-
-function extend(object, source) { // or extend(object, key, value)
-  if (object && source) {
-    var proto = (typeof source == "function" ? Function : Object).prototype;
-    // Add constructor, toString etc
-    var i = _HIDDEN.length, key;
-    if (prototyping) while (key = _HIDDEN[--i]) {
-      var value = source[key];
-      if (value != proto[key]) {
-        if (_BASE.test(value)) {
-          _override(object, key, value)
-        } else {
-          object[key] = value;
-        }
-      }
-    }
-    // Copy each of the source object's properties to the target object.
-    for (key in source) if (typeof proto[key] == "undefined") {
-      var value = source[key];
-      // Check for method overriding.
-      if (object[key] && typeof value == "function" && _BASE.test(value)) {
-        _override(object, key, value);
-      } else {
-        object[key] = value;
-      }
-    }
-  }
-  return object;
-};
-
-function _override(object, name, method) {
-  // Override an existing method.
-  var ancestor = object[name];
-  object[name] = function() {
-    var previous = this.base;
-    this.base = ancestor;
-    var returnValue = method.apply(this, arguments);
-    this.base = previous;
-    return returnValue;
-  };
-};
-
-function combine(keys, values) {
-  // Combine two arrays to make a hash.
-  if (!values) values = keys;
-  var hash = {};
-  for (var i in keys) hash[i] = values[i];
-  return hash;
-};
-
-function format(string) {
-  // Replace %n with arguments[n].
-  // e.g. format("%1 %2%3 %2a %1%3", "she", "se", "lls");
-  // ==> "she sells sea shells"
-  // Only %1 - %9 supported.
-  var args = arguments;
-  var _FORMAT = new RegExp("%([1-" + arguments.length + "])", "g");
-  return String(string).replace(_FORMAT, function(match, index) {
-    return index < args.length ? args[index] : match;
-  });
-};
-
-function match(string, expression) {
-  // Same as String.match() except that this function will return an empty
-  // array if there is no match.
-  return String(string).match(expression) || [];
-};
-
-function rescape(string) {
-  // Make a string safe for creating a RegExp.
-  return String(string).replace(_RESCAPE, "\\$1");
-};
-
-// http://blog.stevenlevithan.com/archives/faster-trim-javascript
-function trim(string) {
-  return String(string).replace(_LTRIM, "").replace(_RTRIM, "");
-};
-
-function K(k) {
-  return function() {
-    return k;
-  };
-};
-
-// -----------------------------------------------------------------------
-// parsing
-// -----------------------------------------------------------------------
-
-var Parser = RegGrp.extend({ignoreCase: true});
-
-var SINGLE_QUOTES       = /'/g,
-    ESCAPED             = /'(\d+)'/g,
-    ESCAPE              = /\\/g,
-    UNESCAPE            = /\\([nrtf'"])/g;
-
-var strings = [];
-
-var encoder = new Parser({
-  // comments
-  "<!\\-\\-|\\-\\->": "",
-  "\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\/": "",
-  // get rid
-  "@(namespace|import)[^;\\n]+[;\\n]": "",
-  // strings
-  "'(\\\\.|[^'\\\\])*'": encodeString,
-  '"(\\\\.|[^"\\\\])*"': encodeString,
-  // white space
-  "\\s+": " "
-});
-
-function encode(selector) {
-  return encoder.parse(selector).replace(UNESCAPE, "$1");
-};
-
-function decode(query) {
-  // put string values back
-  return query.replace(ESCAPED, decodeString);
-};
-
-function encodeString(string) {
-  var index = strings.length;
-  strings[index] = string.slice(1, -1)
-    .replace(UNESCAPE, "$1")
-    .replace(SINGLE_QUOTES, "\\'");
-  return "'" + index + "'";
-};
-
-function decodeString(match, index) {
-  var string = strings[index];
-  if (string == null) return match;
-  return "'" + strings[index] + "'";
-};
-
-function getString(value) {
-  return value.indexOf("'") === 0 ? strings[value.slice(1, - 1)] : value;
-};
-
-// clone a "width" function to create a "height" function
-var rotater = new RegGrp({
-  Width: "Height",
-  width: "height",
-  Left:  "Top",
-  left:  "top",
-  Right: "Bottom",
-  right: "bottom",
-  onX:   "onY"
-});
-
-function rotate(fn) {
-  return rotater.parse(fn);
-};
-
-// -----------------------------------------------------------------------
-// event handling
-// -----------------------------------------------------------------------
-
-var eventHandlers = [];
-
-function addResize(handler) {
-  addRecalc(handler);
-  addEventHandler(window, "onresize", handler);
-};
-
-// add an event handler (function) to an element
-function addEventHandler(element, type, handler) {
-  element.attachEvent(type, handler);
-  // store the handler so it can be detached later
-  eventHandlers.push(arguments);
-};
-
-// remove an event handler assigned to an element by IE7
-function removeEventHandler(element, type, handler) {
-  try {
-    element.detachEvent(type, handler);
-  } catch (ex) {
-    // write a letter of complaint to microsoft..
-  }
-};
-
-// remove event handlers (they eat memory)
-addEventHandler(window, "onunload", function() {
-  var handler;
-  while (handler = eventHandlers.pop()) {
-    removeEventHandler(handler[0], handler[1], handler[2]);
-  }
-});
-
-function register(handler, element, condition) { // -@DRE
-  //var set = handler[element.uniqueID];
-  if (!handler.elements) handler.elements = {};
-  if (condition) handler.elements[element.uniqueID] = element;
-  else delete handler.elements[element.uniqueID];
-  //return !set && condition;
-  return condition;
-};
-
-addEventHandler(window, "onbeforeprint", function() {
-  if (!IE7.CSS.print) new StyleSheet("print");
-  IE7.CSS.print.recalc();
-});
-
-// -----------------------------------------------------------------------
-// pixel conversion
-// -----------------------------------------------------------------------
-
-// this is handy because it means that web developers can mix and match
-//  measurement units in their style sheets. it is not uncommon to
-//  express something like padding in "em" units whilst border thickness
-//  is most often expressed in pixels.
-
-var PIXEL = /^\d+(px)?$/i;
-var PERCENT = /^\d+%$/;
-var getPixelValue = function(element, value) {
-  if (PIXEL.test(value)) return parseInt(value);
-  var style = element.style.left;
-  var runtimeStyle = element.runtimeStyle.left;
-  element.runtimeStyle.left = element.currentStyle.left;
-  element.style.left = value || 0;
-  value = element.style.pixelLeft;
-  element.style.left = style;
-  element.runtimeStyle.left = runtimeStyle;
-  return value;
-};
-
-// -----------------------------------------------------------------------
-// generic
-// -----------------------------------------------------------------------
-
-var $IE7 = "ie7-";
-
-var Fix = Base.extend({
-  constructor: function() {
-    this.fixes = [];
-    this.recalcs = [];
-  },
-  init: Undefined
-});
-
-// a store for functions that will be called when refreshing IE7
-var recalcs = [];
-function addRecalc(recalc) {
-  recalcs.push(recalc);
-};
-
-IE7.recalc = function() {
-  IE7.HTML.recalc();
-  // re-apply style sheet rules (re-calculate ie7 classes)
-  IE7.CSS.recalc();
-  // apply global fixes to the document
-  for (var i = 0; i < recalcs.length; i++) recalcs[i]();
-};
-
-function isFixed(element) {
-  return element.currentStyle["ie7-position"] == "fixed";
-};
-
-// original style
-function getDefinedStyle(element, propertyName) {
-  return element.currentStyle[$IE7 + propertyName] || element.currentStyle[propertyName];
-};
-
-function setOverrideStyle(element, propertyName, value) {
-  if (element.currentStyle[$IE7 + propertyName] == null) {
-    element.runtimeStyle[$IE7 + propertyName] = element.currentStyle[propertyName];
-  }
-  element.runtimeStyle[propertyName] = value;
-};
-
-// Create a temporary element which is used to inherit styles
-// from the target element.
-function createTempElement(tagName) {
-  var element = document.createElement(tagName || "object");
-  element.style.cssText = "position:absolute;padding:0;display:block;border:none;clip:rect(0 0 0 0);left:-9999";
-  element.ie7_anon = true;
-  return element;
-};
-
-
-// =========================================================================
-// ie7-css.js
-// =========================================================================
-
-var NEXT_SIBLING        = "(e.nextSibling&&IE7._getElementSibling(e,'next'))",
-    PREVIOUS_SIBLING    = NEXT_SIBLING.replace(/next/g, "previous"),
-    IS_ELEMENT          = "e.nodeName>'@'",
-    IF_ELEMENT          = "if(" + IS_ELEMENT + "){";
-
-var ID_ATTRIBUTE  = "(e.nodeName==='FORM'?IE7._getAttribute(e,'id'):e.id)";
-
-var HYPERLINK = /a(#[\w-]+)?(\.[\w-]+)?:(hover|active)/i;
-var FIRST_LINE_LETTER = /(.*)(:first-(line|letter))/;
-var SPACE = /\s/;
-var RULE = /((?:\\.|[^{\\])+)\{((?:\\.|[^}\\])+)\}/g;
-var SELECTOR = /(?:\\.|[^,\\])+/g;
-
-var styleSheets = document.styleSheets;
-
-var inheritedProperties = [];
-
-IE7.CSS = new (Fix.extend({ // single instance
-  parser: new Parser,
-  screen: "",
-  print: "",
-  styles: [],
-  rules: [],
-  pseudoClasses: appVersion < 7 ? "first\\-child" : "",
-  dynamicPseudoClasses: {
-    toString: function() {
-      var strings = [];
-      for (var pseudoClass in this) strings.push(pseudoClass);
-      return strings.join("|");
-    }
-  },
-  
-  init: function() {
-    var NONE = "^\x01$";
-    var CLASS = "\\[class=?[^\\]]*\\]";
-    var pseudoClasses = [];
-    if (this.pseudoClasses) pseudoClasses.push(this.pseudoClasses);
-    var dynamicPseudoClasses = this.dynamicPseudoClasses.toString(); 
-    if (dynamicPseudoClasses) pseudoClasses.push(dynamicPseudoClasses);
-    pseudoClasses = pseudoClasses.join("|");
-    var unknown = appVersion < 7 ? ["[>+~\\[(]|([:.])[\\w-]+\\1"] : [CLASS];
-    if (pseudoClasses) unknown.push(":(" + pseudoClasses + ")");
-    this.UNKNOWN = new RegExp(unknown.join("|") || NONE, "i");
-    var complex = appVersion < 7 ? ["\\[[^\\]]+\\]|[^\\s(\\[]+\\s*[+~]"] : [CLASS];
-    var complexRule = complex.concat();
-    if (pseudoClasses) complexRule.push(":(" + pseudoClasses + ")");
-    Rule.COMPLEX = new RegExp(complexRule.join("|") || NONE, "ig");
-    if (this.pseudoClasses) complex.push(":(" + this.pseudoClasses + ")");
-    DynamicRule.COMPLEX = new RegExp(complex.join("|") || NONE, "i");
-    dynamicPseudoClasses = "not\\(:" + dynamicPseudoClasses.split("|").join("\\)|not\\(:") + "\\)|" + dynamicPseudoClasses;
-    DynamicRule.MATCH = new RegExp(dynamicPseudoClasses ? "(.*?):(" + dynamicPseudoClasses + ")(.*)" : NONE, "i");
-    
-    this.createStyleSheet();
-    this.refresh();
-  },
-  
-	addEventHandler: function() {
-		addEventHandler.apply(null, arguments);
-	},
-  
-  addFix: function(expression, replacement) {
-    this.parser.add(expression, replacement);
-  },
-  
-  addRecalc: function(propertyName, test, handler, replacement) {
-    // recalcs occur whenever the document is refreshed using document.recalc()
-    propertyName = propertyName.source || propertyName;
-    test = new RegExp("([{;\\s])" + propertyName + "\\s*:\\s*" + test + "[^;}]*");
-    var id = this.recalcs.length;
-    if (typeof replacement == "string") replacement = propertyName + ":" + replacement;
-    this.addFix(test, function(match) {
-      if (typeof replacement == "function") replacement = replacement(match);
-      return (replacement ? replacement : match) + ";ie7-" + match.slice(1) + ";ie7_recalc" + id + ":1";
-    });
-    this.recalcs.push(arguments);
-    return id;
-  },
-  
-  apply: function() {
-    this.getInlineCSS();
-    new StyleSheet("screen");
-    this.trash();
-  },
-  
-  createStyleSheet: function() {
-    // create the IE7 style sheet
-    document.getElementsByTagName("head")[0].appendChild(document.createElement("style"));
-    this.styleSheet = styleSheets[styleSheets.length - 1];
-    // flag it so we can ignore it during parsing
-    this.styleSheet.ie7 = true;
-    this.styleSheet.owningElement.ie7 = true;
-    this.styleSheet.cssText = HEADER;
-  },
-  
-  getInlineCSS: function() {// load inline styles
-    var styleSheets = document.getElementsByTagName("style"), styleSheet;
-    for (var i = styleSheets.length - 1; styleSheet = styleSheets[i]; i--) {
-      if (!styleSheet.disabled && !styleSheet.ie7) {
-        styleSheet._cssText = styleSheet.innerHTML;
-      }
-    }
-  },
-  
-  getText: function(styleSheet, path) {
-    // Internet Explorer will trash unknown selectors (it converts them to "UNKNOWN").
-    // So we must reload external style sheets (internal style sheets can have their text
-    // extracted through the innerHTML property).
-
-    // load the style sheet text from an external file
-    try {
-      var cssText = styleSheet.cssText;
-    } catch (e) {
-      cssText = "";
-    }
-    if (httpRequest) cssText = loadFile(styleSheet.href, path) || cssText;
-    return cssText;
-  },
-  
-  recalc: function() {
-    this.screen.recalc();
-    // we're going to read through all style rules.
-    //  certain rules have had ie7 properties added to them.
-    //   e.g. p{top:0; ie7_recalc2:1; left:0}
-    //  this flags a property in the rule as needing a fix.
-    //  the selector text is then used to query the document.
-    //  we can then loop through the results of the query
-    //  and fix the elements.
-    // we ignore the IE7 rules - so count them in the header
-    var RECALCS = /ie7_recalc\d+/g;
-    var start = HEADER.match(/[{,]/g).length;
-    // only calculate screen fixes. print fixes don't show up anyway
-    var rules = this.styleSheet.rules, rule;
-    var calcs, calc, elements, element, i, j, k, id;
-    // loop through all rules
-    for (i = start; rule = rules[i]; i++) {
-      var cssText = rule.style.cssText;
-      // search for the "ie7_recalc" flag (there may be more than one)
-      if (calcs = cssText.match(RECALCS)) {
-        // use the selector text to query the document
-        elements = cssQuery(rule.selectorText);
-        // if there are matching elements then loop
-        //  through the recalc functions and apply them
-        //  to each element
-        if (elements.length) for (j = 0; j < calcs.length; j++) {
-          // get the matching flag (e.g. ie7_recalc3)
-          id = calcs[j];
-          // extract the numeric id from the end of the flag
-          //  and use it to index the collection of recalc
-          //  functions
-          calc = IE7.CSS.recalcs[id.slice(10)][2];
-          for (k = 0; (element = elements[k]); k++) {
-            // apply the fix
-            if (element.currentStyle[id]) calc(element, cssText);
-          }
-        }
-      }
-    }
-  },
-  
-  refresh: function() {
-    this.styleSheet.cssText = HEADER + this.screen + this.print;
-  },
-  
-  trash: function() {
-    // trash the old style sheets
-    for (var i = 0; i < styleSheets.length; i++) {
-      if (!styleSheets[i].ie7) {
-        try {
-          var cssText = styleSheets[i].cssText;
-        } catch (e) {
-          cssText = "";
-        }
-        if (cssText) styleSheets[i].cssText = "";
-      }
-    }
-  }
-}));
-
-// -----------------------------------------------------------------------
-//  IE7 StyleSheet class
-// -----------------------------------------------------------------------
-
-var StyleSheet = Base.extend({
-  constructor: function(media) {
-    this.media = media;
-    this.load();
-    IE7.CSS[media] = this;
-    IE7.CSS.refresh();
-  },
-  
-  createRule: function(selector, cssText) {
-    var match;
-    if (PseudoElement && (match = selector.match(PseudoElement.MATCH))) {
-      return new PseudoElement(match[1], match[2], cssText);
-    } else if (match = selector.match(DynamicRule.MATCH)) {
-      if (!HYPERLINK.test(match[0]) || DynamicRule.COMPLEX.test(match[0])) {
-        return new DynamicRule(selector, match[1], match[2], match[3], cssText);
-      }
-    } else {
-      return new Rule(selector, cssText);
-    }
-    return selector + " {" + cssText + "}";
-  },
-  
-  getText: function() {
-    // store for style sheet text
-    // parse media decalarations
-    var MEDIA        = /@media\s+([^{]+?)\s*\{([^@]+\})\s*\}/gi;
-    var IMPORTS      = /@import[^;\n]+/gi;
-    var TRIM_IMPORTS = /@import\s+url\s*\(\s*["']?|["']?\s*\)\s*/gi;
-    var URL          = /(url\s*\(\s*['"]?)([\w\.]+[^:\)]*['"]?\))/gi;
-
-    var self = this;
-    
-    // Store loaded cssText URLs
-    var fileCache = {};
-    
-    function getCSSText(styleSheet, path, media, level) {
-      var cssText = "";
-      if (!level) {
-        media = toSimpleMedia(styleSheet.media);
-        level = 0;
-      }
-      if (media === "none") {
-        styleSheet.disabled = true;
-        return "";
-      }
-      if (media === "all" || media === self.media) {
-        // IE only allows importing style sheets three levels deep.
-        // it will crash if you try to access a level below this
-        try {
-          var canAcess = !!styleSheet.cssText;
-        } catch (exe) {}
-        if (level < 3 && canAcess) {
-          var hrefs = styleSheet.cssText.match(IMPORTS);
-          // loop through imported style sheets
-          for (var i = 0, imported; i < styleSheet.imports.length; i++) {
-            var imported = styleSheet.imports[i];
-            var href = styleSheet._href || styleSheet.href;
-            imported._href = hrefs[i].replace(TRIM_IMPORTS, "");
-            // call this function recursively to get all imported style sheets
-            cssText += getCSSText(imported, getPath(href, path), media, level + 1);
-          }
-        }
-        // retrieve inline style or load an external style sheet
-        cssText += encode(styleSheet.href ? loadStyleSheet(styleSheet, path) : styleSheet.owningElement._cssText);
-        cssText = parseMedia(cssText, self.media);
-      }
-      return cssText;
-    };
-
-    // Load all style sheets in the document
-    for (var i = 0; i < styleSheets.length; i++) {
-      var styleSheet = styleSheets[i];
-      if (!styleSheet.disabled && !styleSheet.ie7) this.cssText += getCSSText(styleSheet);
-    }
-    
-    // helper functions
-    function parseMedia(cssText, media) {
-      filterMedia.value = media;
-      return cssText.replace(MEDIA, filterMedia);
-    };
-    
-    function filterMedia(match, media, cssText) {
-      media = toSimpleMedia(media);
-      switch (media) {
-        case "screen":
-        case "print":
-          if (media !== filterMedia.value) return "";
-        case "all":
-          return cssText;
-      }
-      return "";
-    };
-    
-    function toSimpleMedia(media) {
-      if (!media) return "all";
-      var split = media.toLowerCase().split(/\s*,\s*/);
-      media = "none";
-      for (var i = 0; i < split.length; i++) {
-        if (split[i] === "all") return "all";
-        if (split[i] === "screen") {
-          if (media === "print") return "all";
-          media = "screen";
-        } else if (split[i] === "print") {
-          if (media === "screen") return "all";
-          media = "print";
-        }
-      }
-      return media;
-    };
-    
-    // Load an external style sheet
-    function loadStyleSheet(styleSheet, path) {
-      var href = styleSheet._href || styleSheet.href;
-      var url = makePath(href, path);
-      // If the style sheet has already loaded then don't reload it
-      if (fileCache[url]) return "";
-      // Load from source
-      fileCache[url] = styleSheet.disabled ? "" :
-        fixUrls(IE7.CSS.getText(styleSheet, path), getPath(href, path));
-      return fileCache[url];
-    };
-
-    // Fix CSS paths.
-    // We're lumping all css text into one big style sheet so relative
-    // paths have to be fixed. This is necessary anyway because of other
-    // Internet Explorer bugs.
-    function fixUrls(cssText, pathname) {
-      // hack & slash
-      return cssText.replace(URL, "$1" + pathname.slice(0, pathname.lastIndexOf("/") + 1) + "$2");
-    };
-  },
-  
-  load: function() {
-    this.cssText = "";
-    this.getText();
-    this.parse();
-    if (inheritedProperties.length) {
-      this.cssText = parseInherited(this.cssText);
-    }
-    this.cssText = decode(this.cssText);
-    fileCache = {};
-  },
-  
-  parse: function() {
-    var cssText = IE7.CSS.parser.parse(this.cssText);
-    
-    var declarations = "";
-    this.cssText = cssText.replace(/@charset[^;]+;|@font\-face[^\}]+\}/g, function(match) {
-      declarations += match + "\n";
-      return "";
-    });
-    this.declarations = decode(declarations);
-    
-    // Parse the style sheet
-    var offset = IE7.CSS.rules.length;
-    var rules = [], rule;
-    while ((rule = RULE.exec(this.cssText))) {
-      var cssText = rule[2];
-      if (cssText) {
-        var fixDescendants = appVersion < 7 && cssText.indexOf("AlphaImageLoader") !== -1;
-        var selectors = rule[1].match(SELECTOR), selector;
-        for (var i = 0; selector = selectors[i]; i++) {
-          selector = trim(selector);
-          var isUnknown = IE7.CSS.UNKNOWN.test(selector);
-          selectors[i] = isUnknown ? this.createRule(selector, cssText) : selector + "{" + cssText + "}";
-          if (fixDescendants) selectors[i] += this.createRule(selector + ">*", "position:relative");
-        }
-        rules.push(selectors.join("\n"));
-      }
-    }
-    this.cssText = rules.join("\n");
-    this.rules = IE7.CSS.rules.slice(offset);
-  },
-  
-  recalc: function() {
-    var rule, i;
-    for (i = 0; (rule = this.rules[i]); i++) rule.recalc();
-  },
-  
-  toString: function() {
-    return this.declarations + "@media " + this.media + "{" + this.cssText + "}";
-  }
-});
-
-var PseudoElement;
-
-// -----------------------------------------------------------------------
-// IE7 style rules
-// -----------------------------------------------------------------------
-
-var Rule = IE7.Rule = Base.extend({
-  constructor: function(selector, cssText) {
-    this.id = IE7.CSS.rules.length;
-    this.className = Rule.PREFIX + this.id;
-    var pseudoElement = selector.match(FIRST_LINE_LETTER);
-    this.selector = (pseudoElement ? pseudoElement[1] : selector) || "*";
-    this.selectorText = this.parse(this.selector) + (pseudoElement ? pseudoElement[2] : "");
-    this.cssText = cssText;
-    this.MATCH = new RegExp("\\s" + this.className + "(\\s|$)", "g");
-    IE7.CSS.rules.push(this);
-    this.init();
-  },
-  
-  init: Undefined,
-  
-  add: function(element) {
-    // allocate this class
-    element.className += " " + this.className;
-  },
-  
-  recalc: function() {
-    // execute the underlying css query for this class
-    var match = cssQuery(this.selector);
-    // add the class name for all matching elements
-    for (var i = 0; i < match.length; i++) this.add(match[i]);
-  },
-
-  parse: function(selector) {
-    // attempt to preserve specificity for "loose" parsing by
-    //  removing unknown tokens from a css selector but keep as
-    //  much as we can..
-    var simple = selector.replace(Rule.CHILD, " ").replace(Rule.COMPLEX, "");
-    if (appVersion < 7) simple = simple.replace(Rule.MULTI, "");
-    var tags = match(simple, Rule.TAGS).length - match(selector, Rule.TAGS).length;
-    var classes = match(simple, Rule.CLASSES).length - match(selector, Rule.CLASSES).length + 1;
-    while (classes > 0 && Rule.CLASS.test(simple)) {
-      simple = simple.replace(Rule.CLASS, "");
-      classes--;
-    }
-    while (tags > 0 && Rule.TAG.test(simple)) {
-      simple = simple.replace(Rule.TAG, "$1*");
-      tags--;
-    }
-    simple += "." + this.className;
-    classes = Math.min(classes, 2);
-    tags = Math.min(tags, 2);
-    var score = -10 * classes - tags;
-    if (score > 0) {
-      simple = simple + "," + Rule.MAP[score] + " " + simple;
-    }
-    return simple;
-  },
-  
-  remove: function(element) {
-    // deallocate this class
-    element.className = element.className.replace(this.MATCH, "$1");
-  },
-  
-  toString: function() {
-    return format("%1 {%2}", this.selectorText, this.cssText);
-  }
-}, {
-  CHILD: />/g,
-  CLASS: /\.[\w-]+/,
-  CLASSES: /[.:\[]/g,
-  MULTI: /(\.[\w-]+)+/g,
-  PREFIX: "ie7_class",
-  TAG: /^\w+|([\s>+~])\w+/,
-  TAGS: /^\w|[\s>+~]\w/g,
-  MAP: {
-    "1":  "html",
-    "2":  "html body",
-    "10": ".ie7_html",
-    "11": "html.ie7_html",
-    "12": "html.ie7_html body",
-    "20": ".ie7_html .ie7_body",
-    "21": "html.ie7_html .ie7_body",
-    "22": "html.ie7_html body.ie7_body"
-  }
-});
-
-// -----------------------------------------------------------------------
-// IE7 dynamic style
-// -----------------------------------------------------------------------
-
-// object properties:
-// attach: the element that an event handler will be attached to
-// target: the element that will have the IE7 class applied
-
-var DynamicRule = Rule.extend({
-  // properties
-  constructor: function(selector, attach, dynamicPseudoClass, target, cssText) {
-    this.negated = dynamicPseudoClass.indexOf("not") === 0;
-    if (this.negated) dynamicPseudoClass = dynamicPseudoClass.slice(5, -1);
-    // initialise object properties
-    this.attach = attach || "*";
-    this.dynamicPseudoClass = IE7.CSS.dynamicPseudoClasses[dynamicPseudoClass];
-    this.target = target;
-    this.base(selector, cssText);
-  },
-  
-  recalc: function() {
-    // execute the underlying css query for this class
-    var attaches = cssQuery(this.attach), attach;
-    // process results
-    for (var i = 0; attach = attaches[i]; i++) {
-      // retrieve the event handler's target element(s)
-      var target = this.target ? cssQuery(this.target, attach) : [attach];
-      // attach event handlers for dynamic pseudo-classes
-      if (target.length) this.dynamicPseudoClass.apply(attach, target, this);
-    }
-  }
-});
-
-// -----------------------------------------------------------------------
-//  IE7 dynamic pseudo-classes
-// -----------------------------------------------------------------------
-
-var DynamicPseudoClass = Base.extend({
-  constructor: function(name, apply) {
-    this.name = name;
-    this.apply = apply;
-    this.instances = {};
-    IE7.CSS.dynamicPseudoClasses[name] = this;
-  },
-  
-  register: function(instance, negated) {
-    // an "instance" is actually an Arguments object
-    var _class = instance[2];
-    if (!negated && _class.negated) {
-      this.unregister(instance, true);
-    } else {
-      instance.id = _class.id + instance[0].uniqueID;
-      if (!this.instances[instance.id]) {
-        var target = instance[1], j;
-        for (j = 0; j < target.length; j++) _class.add(target[j]);
-        this.instances[instance.id] = instance;
-      }
-    }
-  },
-  
-  unregister: function(instance, negated) {
-    var _class = instance[2];
-    if (!negated && _class.negated) {
-      this.register(instance, true);
-    } else {
-      if (this.instances[instance.id]) {
-        var target = instance[1], j;
-        for (j = 0; j < target.length; j++) _class.remove(target[j]);
-        delete this.instances[instance.id];
-      }
-    }
-  }
-});
-  
-// -----------------------------------------------------------------------
-// dynamic pseudo-classes
-// -----------------------------------------------------------------------
-
-var Hover = new DynamicPseudoClass("hover", function(element) {
-  var instance = arguments;
-  IE7.CSS.addEventHandler(element, "onmouseenter", function() {
-    Hover.register(instance);
-  });
-  IE7.CSS.addEventHandler(element, "onmouseleave", function() {
-    Hover.unregister(instance);
-  });
-});
-
-// globally trap the mouseup event (thanks Martijn!)
-addEventHandler(document, "onmouseup", function() {
-  var instances = Hover.instances;
-  for (var i in instances)
-    if (!instances[i][0].contains(event.srcElement))
-      Hover.unregister(instances[i]);
-});
-
-var ATTR = {
-  "=":  "%1==='%2'",                           // "[@%1='%2']"
-  "~=": "(' '+%1+' ').indexOf(' %2 ')!==-1",   // "[contains(concat(' ',@%1,' '),' %2 ')]",
-  "|=": "%1==='%2'||%1.indexOf('%2-')===0",    // "[@%1='%2' or starts-with(@%1,'%2-')]",
-  "^=": "%1.indexOf('%2')===0",                // "[starts-with(@%1,'%2')]",
-  "$=": "%1.slice(-'%2'.length)==='%2'",       // "[ends-with(@%1,'%2')]",
-  "*=": "%1.indexOf('%2')!==-1"                // "[contains(@%1,'%2')]"
-};
-ATTR[""] = "%1!=null";                         // "[@%1]"
-
-var FILTER = {
-  "<#attr>": function(match, name, operator, value) {
-    var attr = "IE7._getAttribute(e,'" + name + "')";
-    value = getString(value);
-    if (operator.length > 1) {
-      if (!value || operator === "~=" && SPACE.test(value)) {
-        return "false&&";
-      }
-      attr = "(" + attr + "||'')";
-    }
-    return "(" + format(ATTR[operator], attr, value) + ")&&";
-  },
-
-  "<#id>":    ID_ATTRIBUTE + "==='$1'&&",
-
-  "<#class>": "e.className&&(' '+e.className+' ').indexOf(' $1 ')!==-1&&",
-
-  // PSEDUO
-  ":first-child":     "!" + PREVIOUS_SIBLING + "&&",
-  ":link":           "e.currentStyle['ie7-link']=='link'&&",
-  ":visited":        "e.currentStyle['ie7-link']=='visited'&&"
-};
-
-// =========================================================================
-// ie7-html.js
-// =========================================================================
-
-// default font-sizes
-//HEADER += "h1{font-size:2em}h2{font-size:1.5em;}h3{font-size:1.17em;}h4{font-size:1em}h5{font-size:.83em}h6{font-size:.67em}";
-
-IE7.HTML = new (Fix.extend({ // single instance  
-  fixed: {},
-  
-  init: Undefined,
-  
-  addFix: function() {
-    // fixes are a one-off, they are applied when the document is loaded
-    this.fixes.push(arguments);
-  },
-  
-  apply: function() {
-    for (var i = 0; i < this.fixes.length; i++) {
-      var match = cssQuery(this.fixes[i][0]);
-      var fix = this.fixes[i][1];
-      for (var j = 0; j < match.length; j++) fix(match[j]);
-    }
-  },
-  
-  addRecalc: function() {
-    // recalcs occur whenever the document is refreshed using document.recalc()
-    this.recalcs.push(arguments);
-  },
-  
-  recalc: function() {
-    // loop through the fixes
-    for (var i = 0; i < this.recalcs.length; i++) {
-      var match = cssQuery(this.recalcs[i][0]);
-      var recalc = this.recalcs[i][1], element;
-      var key = Math.pow(2, i);
-      for (var j = 0; (element = match[j]); j++) {
-        var uniqueID = element.uniqueID;
-        if ((this.fixed[uniqueID] & key) === 0) {
-          element = recalc(element) || element;
-          this.fixed[uniqueID] |= key;
-        }
-      }
-    }
-  }
-}));
-
-if (appVersion < 7) {  
-  // provide support for the <abbr> tag.
-  document.createElement("abbr");
-  
-  // bind to the first child control
-  IE7.HTML.addRecalc("label", function(label) {
-    if (!label.htmlFor) {
-      var firstChildControl = cssQuery("input,textarea", label, true);
-      if (firstChildControl) {
-        addEventHandler(label, "onclick", function() {
-          firstChildControl.click();
-        });
-      }
-    }
-  });
-}
-
-// =========================================================================
-// ie7-layout.js
-// =========================================================================
-
-var NUMERIC = "[.\\d]";
-
-(function() {
-  var layout = IE7.Layout = {};
-
-  // big, ugly box-model hack + min/max stuff
-
-  // #tantek > #erik > #dean { voice-family: hacker; }
-
-  // -----------------------------------------------------------------------
-  // "layout"
-  // -----------------------------------------------------------------------
-
-  HEADER += "*{boxSizing:content-box}";
-
-  // give an element "layout"
-  layout.boxSizing = function(element) {
-    if (!element.currentStyle.hasLayout) {
-    //#  element.runtimeStyle.fixedHeight =
-      element.style.height = "0cm";
-      if (element.currentStyle.verticalAlign === "auto")
-        element.runtimeStyle.verticalAlign = "top";
-      // when an element acquires "layout", margins no longer collapse correctly
-      collapseMargins(element);
-    }
-  };
-
-  // -----------------------------------------------------------------------
-  // Margin Collapse
-  // -----------------------------------------------------------------------
-
-  function collapseMargins(element) {
-    if (element != viewport && element.currentStyle.position !== "absolute") {
-      collapseMargin(element, "marginTop");
-      collapseMargin(element, "marginBottom");
-    }
-  };
-
-  function collapseMargin(element, type) {
-    if (!element.runtimeStyle[type]) {
-      var parentElement = element.parentElement;
-      var isTopMargin = type === "marginTop";
-      if (parentElement && parentElement.currentStyle.hasLayout && !IE7._getElementSibling(element, isTopMargin ? "previous" : "next")) return;
-      var child = element[isTopMargin ? "firstChild" : "lastChild"];
-      if (child && child.nodeName < "@") child = IE7._getElementSibling(child, isTopMargin ? "next" : "previous");
-      if (child && child.currentStyle.styleFloat === "none" && child.currentStyle.hasLayout) {
-        collapseMargin(child, type);
-        margin = _getMargin(element, element.currentStyle[type]);
-        childMargin = _getMargin(child, child.currentStyle[type]);
-        if (margin < 0 || childMargin < 0) {
-          element.runtimeStyle[type] = margin + childMargin;
-        } else {
-          element.runtimeStyle[type] = Math.max(childMargin, margin);
-        }
-        child.runtimeStyle[type] = "0px";
-      }
-    }
-  };
-
-  function _getMargin(element, value) {
-    return value === "auto" ? 0 : getPixelValue(element, value);
-  };
-
-  // -----------------------------------------------------------------------
-  // box-model
-  // -----------------------------------------------------------------------
-
-  // constants
-  var UNIT = /^[.\d][\w]*$/, AUTO = /^(auto|0cm)$/;
-
-  var apply = {};
-  layout.borderBox = function(element){
-    apply.Width(element);
-    apply.Height(element);
-  };
-
-  var _fixWidth = function(HEIGHT) {
-    apply.Width = function(element) {
-      if (!PERCENT.test(element.currentStyle.width)) _fixWidth(element);
-      if (HEIGHT) collapseMargins(element);
-    };
-
-    function _fixWidth(element, value) {
-      if (!element.runtimeStyle.fixedWidth) {
-        if (!value) value = element.currentStyle.width;
-        element.runtimeStyle.fixedWidth = UNIT.test(value) ? Math.max(0, getFixedWidth(element, value)) + "px" : value;
-        setOverrideStyle(element, "width", element.runtimeStyle.fixedWidth);
-      }
-    };
-
-    function layoutWidth(element) {
-      if (!isFixed(element)) {
-        var layoutParent = element.offsetParent;
-        while (layoutParent && !layoutParent.currentStyle.hasLayout) layoutParent = layoutParent.offsetParent;
-      }
-      return (layoutParent || viewport).clientWidth;
-    };
-
-    function getPixelWidth(element, value) {
-      if (PERCENT.test(value)) return parseInt(parseFloat(value) / 100 * layoutWidth(element));
-      return getPixelValue(element, value);
-    };
-
-    var getFixedWidth = function(element, value) {
-      var borderBox = element.currentStyle["ie7-box-sizing"] === "border-box";
-      var adjustment = 0;
-      if (MSIE5 && !borderBox)
-        adjustment += getBorderWidth(element) + getWidth(element, "padding");
-      else if (!MSIE5 && borderBox)
-        adjustment -= getBorderWidth(element) + getWidth(element, "padding");
-      return getPixelWidth(element, value) + adjustment;
-    };
-
-    // easy way to get border thickness for elements with "layout"
-    function getBorderWidth(element) {
-      return element.offsetWidth - element.clientWidth;
-    };
-
-    // have to do some pixel conversion to get padding/margin thickness :-(
-    function getWidth(element, type) {
-      return getPixelWidth(element, element.currentStyle[type + "Left"]) + getPixelWidth(element, element.currentStyle[type + "Right"]);
-    };
-
-    // -----------------------------------------------------------------------
-    // min/max
-    // -----------------------------------------------------------------------
-
-    HEADER += "*{minWidth:none;maxWidth:none;min-width:none;max-width:none}";
-
-    // handle min-width property
-    layout.minWidth = function(element) {
-      // IE6 supports min-height so we frig it here
-      //#if (element.currentStyle.minHeight === "auto") element.runtimeStyle.minHeight = 0;
-      if (element.currentStyle["min-width"] != null) {
-        element.style.minWidth = element.currentStyle["min-width"];
-      }
-      if (register(arguments.callee, element, element.currentStyle.minWidth !== "none")) {
-        layout.boxSizing(element);
-        _fixWidth(element);
-        resizeWidth(element);
-      }
-    };
-
-    // clone the minWidth function to make a maxWidth function
-    eval("IE7.Layout.maxWidth=" + String(layout.minWidth).replace(/min/g, "max"));
-
-    // apply min/max restrictions
-    function resizeWidth(element) {
-      // check boundaries
-      if (element == document.body) {
-        var width = element.clientWidth;
-      } else {
-        var rect = element.getBoundingClientRect();
-        width = rect.right - rect.left;
-      }
-      if (element.currentStyle.minWidth !== "none" && width < getFixedWidth(element, element.currentStyle.minWidth)) {
-        element.runtimeStyle.width = element.currentStyle.minWidth;
-      } else if (element.currentStyle.maxWidth !== "none" && width >= getFixedWidth(element, element.currentStyle.maxWidth)) {
-        element.runtimeStyle.width = element.currentStyle.maxWidth;
-      } else {
-        element.runtimeStyle.width = element.runtimeStyle.fixedWidth;
-      }
-    };
-
-    // -----------------------------------------------------------------------
-    // right/bottom
-    // -----------------------------------------------------------------------
-
-    function fixRight(element) {
-      if (register(fixRight, element, /^(fixed|absolute)$/.test(element.currentStyle.position) &&
-        getDefinedStyle(element, "left") !== "auto" &&
-        getDefinedStyle(element, "right") !== "auto" &&
-        AUTO.test(getDefinedStyle(element, "width")))) {
-          resizeRight(element);
-          layout.boxSizing(element);
-      }
-    };
-    layout.fixRight = fixRight;
-
-    function resizeRight(element) {
-      var left = getPixelWidth(element, element.runtimeStyle._left || element.currentStyle.left);
-      var width = layoutWidth(element) - getPixelWidth(element, element.currentStyle.right) -  left - getWidth(element, "margin");
-      if (parseInt(element.runtimeStyle.width) === width) return;
-      element.runtimeStyle.width = "";
-      if (isFixed(element) || HEIGHT || element.offsetWidth < width) {
-        if (!MSIE5) width -= getBorderWidth(element) + getWidth(element, "padding");
-        if (width < 0) width = 0;
-        element.runtimeStyle.fixedWidth = width;
-        setOverrideStyle(element, "width", width);
-      }
-    };
-
-  // -----------------------------------------------------------------------
-  // window.onresize
-  // -----------------------------------------------------------------------
-
-    // handle window resize
-    var clientWidth = 0;
-    addResize(function() {
-      if (!viewport) return;
-      var i, wider = (clientWidth < viewport.clientWidth);
-      clientWidth = viewport.clientWidth;
-      // resize elements with "min-width" set
-      var elements = layout.minWidth.elements;
-      for (i in elements) {
-        var element = elements[i];
-        var fixedWidth = (parseInt(element.runtimeStyle.width) === getFixedWidth(element, element.currentStyle.minWidth));
-        if (wider && fixedWidth) element.runtimeStyle.width = "";
-        if (wider == fixedWidth) resizeWidth(element);
-      }
-      // resize elements with "max-width" set
-      var elements = layout.maxWidth.elements;
-      for (i in elements) {
-        var element = elements[i];
-        var fixedWidth = (parseInt(element.runtimeStyle.width) === getFixedWidth(element, element.currentStyle.maxWidth));
-        if (!wider && fixedWidth) element.runtimeStyle.width = "";
-        if (wider !== fixedWidth) resizeWidth(element);
-      }
-      // resize elements with "right" set
-      for (i in fixRight.elements) resizeRight(fixRight.elements[i]);
-    });
-
-  // -----------------------------------------------------------------------
-  // fix CSS
-  // -----------------------------------------------------------------------
-    if (MSIE5) {
-      IE7.CSS.addRecalc("width", NUMERIC, apply.Width);
-    }
-    if (appVersion < 7) {
-      IE7.CSS.addRecalc("max-width", NUMERIC, layout.maxWidth);
-      IE7.CSS.addRecalc("right", NUMERIC, fixRight);
-    } else if (appVersion == 7) {
-      if (HEIGHT) IE7.CSS.addRecalc("height", "[\\d.]+%", function(element) {
-        element.runtimeStyle.pixelHeight = parseInt(layoutWidth(element) * element.currentStyle["ie7-height"].slice(0, -1) / 100);
-      });
-    }
-  };
-
-  eval("var _fixHeight=" + rotate(_fixWidth));
-
-  // apply box-model + min/max fixes
-  _fixWidth();
-  _fixHeight(true);
-  
-  if (appVersion < 7) {
-    IE7.CSS.addRecalc("min-width", NUMERIC, layout.minWidth);
-    IE7.CSS.addFix(/\bmin-height\s*/, "height");
-  }
-})();
-
-// =========================================================================
-// ie7-graphics.js
-// =========================================================================
-
-// a small transparent image used as a placeholder
-var BLANK_GIF = makePath("blank.gif", path);
-
-var ALPHA_IMAGE_LOADER = "DXImageTransform.Microsoft.AlphaImageLoader";
-var PNG_FILTER = "progid:" + ALPHA_IMAGE_LOADER + "(src='%1',sizingMethod='%2')";
-  
-// regular expression version of the above
-var PNG;
-
-var filtered = [];
-
-function fixImage(element) {
-  if (PNG.test(element.src)) {
-    // we have to preserve width and height
-    var image = new Image(element.width, element.height);
-    image.onload = function() {
-      element.width = image.width;
-      element.height = image.height;
-      image = null;
-    };
-    image.src = element.src;
-    // store the original url (we'll put it back when it's printed)
-    element.pngSrc = element.src;
-    // add the AlphaImageLoader thingy
-    addFilter(element);
-  }
-};
-
-if (appVersion < 7) {
-  // ** IE7 VARIABLE
-  // e.g. apply the hack to all files ending in ".png"
-  // IE7_PNG_SUFFIX = ".png";
-  // You can also set it to a RegExp
-  // IE7_PNG_SUFFIX = /\d+\.png$/;
-
-  // replace background(-image): url(..) ..  with background(-image): .. ;filter: ..;
-  IE7.CSS.addFix(/background(-image)?\s*:\s*([^};]*)?url\(([^\)]+)\)([^;}]*)?/, function(match, $1, $2, url, $4) {
-    url = getString(url);
-    return PNG.test(url) ? "filter:" + format(PNG_FILTER, url, $4.indexOf("no-repeat") === -1 ? "scale" : "crop") +
-      ";zoom:1;background" + ($1||"") + ":" + ($2||"") + "none" + ($4||"") : match;
-  });
-
-  // list-style-image
-  IE7.CSS.addRecalc(/list\-style(\-image)?/, "[^};]*url", function(element) {
-    var url = element.currentStyle.listStyleImage.slice(5, -2);
-    if (PNG.test(url)) {
-      if (element.nodeName === "LI") {
-        fixListStyleImage(element, url)
-      } else if (element.nodeName === "UL") {
-        for (var i = 0, li; li = element.childNodes[i]; i++) {
-          if (li.nodeName === "LI") fixListStyleImage(li, url);
-        }
-      }
-    }
-  });
-
-  function fixListStyleImage(element, src) {
-    var style = element.runtimeStyle;
-    var originalHeight = element.offsetHeight;
-    var image = new Image;
-    image.onload = function() {
-      var paddingLeft = element.currentStyle.paddingLeft;
-      paddingLeft = paddingLeft === "0px" ? 0 : getPixelValue(element, paddingLeft);
-      style.paddingLeft = (paddingLeft + this.width) + "px";
-      style.marginLeft = -this.width + "px";
-      style.listStyleType = "none";
-      style.listStyleImage = "none";
-      style.paddingTop = Math.max(originalHeight - element.offsetHeight, 0) + "px";
-      addFilter(element, "crop", src);
-      element.style.zoom = "100%";
-    };
-    image.src = src;
-  };
-  
-  // -----------------------------------------------------------------------
-  //  fix PNG transparency (HTML images)
-  // -----------------------------------------------------------------------
-
-  IE7.HTML.addRecalc("img,input", function(element) {
-    if (element.nodeName === "INPUT" && element.type !== "image") return;
-    fixImage(element);
-    addEventHandler(element, "onpropertychange", function() {
-      if (!printing && event.propertyName === "src" &&
-        element.src.indexOf(BLANK_GIF) === -1) fixImage(element);
-    });
-  });
-
-  // assume that background images should not be printed
-  //  (if they are not transparent then they'll just obscure content)
-  // but we'll put foreground images back...
-  var printing = false;
-  addEventHandler(window, "onbeforeprint", function() {
-    printing = true;
-    for (var i = 0; i < filtered.length; i++) removeFilter(filtered[i]);
-  });
-  addEventHandler(window, "onafterprint", function() {
-    for (var i = 0; i < filtered.length; i++) addFilter(filtered[i]);
-    printing = false;
-  });
-}
-
-// apply a filter
-function addFilter(element, sizingMethod, src) {
-  var filter = element.filters[ALPHA_IMAGE_LOADER];
-  if (filter) {
-    filter.src = src || element.src;
-    filter.enabled = true;
-  } else {
-    element.runtimeStyle.filter = format(PNG_FILTER, src || element.src, sizingMethod || "scale");
-    filtered.push(element);
-  }
-  // remove the real image
-  element.src = BLANK_GIF;
-};
-
-function removeFilter(element) {
-  element.src = element.pngSrc;
-  element.filters[ALPHA_IMAGE_LOADER].enabled = false;
-};
-
-// =========================================================================
-// ie7-fixed.js
-// =========================================================================
-
-(function() {
-  if (appVersion >= 7) return;
-  
-  // some things to consider for this hack.
-  // the document body requires a fixed background. even if
-  //  it is just a blank image.
-  // you have to use setExpression instead of onscroll, this
-  //  together with a fixed body background helps avoid the
-  //  annoying screen flicker of other solutions.
-  
-  IE7.CSS.addRecalc("position", "fixed", _positionFixed, "absolute");
-  IE7.CSS.addRecalc("background(-attachment)?", "[^};]*fixed", _backgroundFixed);
-  
-  // scrolling is relative to the documentElement (HTML tag) when in
-  //  standards mode, otherwise it's relative to the document body
-  var $viewport = MSIE5 ? "body" : "documentElement";
-  
-  function _fixBackground() {
-    // this is required by both position:fixed and background-attachment:fixed.
-    // it is necessary for the document to also have a fixed background image.
-    // we can fake this with a blank image if necessary
-    if (body.currentStyle.backgroundAttachment !== "fixed") {
-      if (body.currentStyle.backgroundImage === "none") {
-        body.runtimeStyle.backgroundRepeat = "no-repeat";
-        body.runtimeStyle.backgroundImage = "url(" + BLANK_GIF + ")"; // dummy
-      }
-      body.runtimeStyle.backgroundAttachment = "fixed";
-    }
-    _fixBackground = Undefined;
-  };
-  
-  var _tmp = createTempElement("img");
-  
-  function _isFixed(element) {
-    return element ? isFixed(element) || _isFixed(element.parentElement) : false;
-  };
-  
-  function _setExpression(element, propertyName, expression) {
-    setTimeout("document.all." + element.uniqueID + ".runtimeStyle.setExpression('" + propertyName + "','" + expression + "')", 0);
-  };
-  
-  // -----------------------------------------------------------------------
-  //  backgroundAttachment: fixed
-  // -----------------------------------------------------------------------
-  
-  function _backgroundFixed(element) {
-    if (register(_backgroundFixed, element, element.currentStyle.backgroundAttachment === "fixed" && !element.contains(body))) {
-      _fixBackground();
-      util.bgLeft(element);
-      util.bgTop(element);
-      _backgroundPosition(element);
-    }
-  };
-  
-  function _backgroundPosition(element) {
-    _tmp.src = element.currentStyle.backgroundImage.slice(5, -2);
-    var parentElement = element.canHaveChildren ? element : element.parentElement;
-    parentElement.appendChild(_tmp);
-    util.setOffsetLeft(element);
-    util.setOffsetTop(element);
-    parentElement.removeChild(_tmp);
-  };
-  
-  // -----------------------------------------------------------------------
-  //  position: fixed
-  // -----------------------------------------------------------------------
-  
-  function _positionFixed(element) {
-    if (register(_positionFixed, element, isFixed(element))) {
-      setOverrideStyle(element, "position",  "absolute");
-      setOverrideStyle(element, "left",  element.currentStyle.left);
-      setOverrideStyle(element, "top",  element.currentStyle.top);
-      _fixBackground();
-      IE7.Layout.fixRight(element);
-      //IE7.Layout.fixBottom(element);
-      _foregroundPosition(element);
-    }
-  };
-  
-  function _foregroundPosition(element, recalc) {
-    document.body.getBoundingClientRect(); // force a reflow
-    util.positionTop(element, recalc);
-    util.positionLeft(element, recalc, true);
-    if (!element.runtimeStyle.autoLeft && element.currentStyle.marginLeft === "auto" &&
-      element.currentStyle.right !== "auto") {
-      var left = viewport.clientWidth - util.getPixelWidth(element, element.currentStyle.right) -
-        util.getPixelWidth(element, element.runtimeStyle._left) - element.clientWidth;
-      if (element.currentStyle.marginRight === "auto") left = parseInt(left / 2);
-      if (_isFixed(element.offsetParent)) element.runtimeStyle.pixelLeft += left;
-      else element.runtimeStyle.shiftLeft = left;
-    }
-    if (!element.runtimeStyle.fixedWidth) util.clipWidth(element);
-    if (!element.runtimeStyle.fixedHeight) util.clipHeight(element);
-  };
-  
-  // -----------------------------------------------------------------------
-  //  capture window resize
-  // -----------------------------------------------------------------------
-  
-  function _resize() {
-    // if the window has been resized then some positions need to be
-    //  recalculated (especially those aligned to "right" or "top"
-    var elements = _backgroundFixed.elements;
-    for (var i in elements) _backgroundPosition(elements[i]);
-    elements = _positionFixed.elements;
-    for (i in elements) {
-      _foregroundPosition(elements[i], true);
-      _foregroundPosition(elements[i], true);
-    }
-    _timer = 0;
-  };
-  
-  // use a timer (sometimes this is a good way to prevent resize loops)
-  var _timer;
-  addResize(function() {
-    if (!_timer) _timer = setTimeout(_resize, 100);
-  });
-
-  // -----------------------------------------------------------------------
-  //  rotated
-  // -----------------------------------------------------------------------
-
-  var util = {};
-  
-  var _horizontal = function(util) {
-    util.bgLeft = function(element) {
-      element.style.backgroundPositionX = element.currentStyle.backgroundPositionX;
-      if (!_isFixed(element)) {
-        _setExpression(element, "backgroundPositionX", "(parseInt(runtimeStyle.offsetLeft)+document." + $viewport + ".scrollLeft)||0");
-      }
-    };
-
-    util.setOffsetLeft = function(element) {
-      var propertyName = _isFixed(element) ? "backgroundPositionX" : "offsetLeft";
-      element.runtimeStyle[propertyName] =
-        util.getOffsetLeft(element, element.style.backgroundPositionX) -
-        element.getBoundingClientRect().left - element.clientLeft + 2;
-    };
-
-    util.getOffsetLeft = function(element, position) {
-      switch (position) {
-        case "left":
-        case "top":
-          return 0;
-        case "right":
-        case "bottom":
-          return viewport.clientWidth - _tmp.offsetWidth;
-        case "center":
-          return (viewport.clientWidth - _tmp.offsetWidth) / 2;
-        default:
-          if (PERCENT.test(position)) {
-            return parseInt((viewport.clientWidth - _tmp.offsetWidth) * parseFloat(position) / 100);
-          }
-          _tmp.style.left = position;
-          return _tmp.offsetLeft;
-      }
-    };
-
-    util.clipWidth = function(element) {
-      var fixWidth = element.runtimeStyle.fixWidth;
-      element.runtimeStyle.borderRightWidth = "";
-      element.runtimeStyle.width = fixWidth ? util.getPixelWidth(element, fixWidth) + "px" : "";
-      if (element.currentStyle.width !== "auto") {
-        var rect = element.getBoundingClientRect();
-        var width = element.offsetWidth - viewport.clientWidth + rect.left - 2;
-        if (width >= 0) {
-          element.runtimeStyle.borderRightWidth = "0px";
-          width = Math.max(getPixelValue(element, element.currentStyle.width) - width, 0);
-          setOverrideStyle(element, "width",  width);
-          return width;
-        }
-      }
-    };
-
-    util.positionLeft = function(element, recalc) {
-      // if the element's width is in % units then it must be recalculated
-      //  with respect to the viewport
-      if (!recalc && PERCENT.test(element.currentStyle.width)) {
-        element.runtimeStyle.fixWidth = element.currentStyle.width;
-      }
-      if (element.runtimeStyle.fixWidth) {
-        element.runtimeStyle.width = util.getPixelWidth(element, element.runtimeStyle.fixWidth);
-      }
-      //if (recalc) {
-      //  // if the element is fixed on the right then no need to recalculate
-      //  if (!element.runtimeStyle.autoLeft) return;
-      //} else {
-        element.runtimeStyle.shiftLeft = 0;
-        element.runtimeStyle._left = element.currentStyle.left;
-        // is the element fixed on the right?
-        element.runtimeStyle.autoLeft = element.currentStyle.right !== "auto" && element.currentStyle.left === "auto";
-      //}
-      // reset the element's "left" value and get it's natural position
-      element.runtimeStyle.left = "";
-      element.runtimeStyle.screenLeft = util.getScreenLeft(element);
-      element.runtimeStyle.pixelLeft = element.runtimeStyle.screenLeft;
-      // if the element is contained by another fixed element then there is no need to
-      //  continually recalculate it's left position
-      if (!recalc && !_isFixed(element.offsetParent)) {
-        // onsrcoll produces jerky movement, so we use an expression
-        _setExpression(element, "pixelLeft", "runtimeStyle.screenLeft+runtimeStyle.shiftLeft+document." + $viewport + ".scrollLeft");
-      }
-    };
-
-    // I've forgotten how this works...
-    util.getScreenLeft = function(element) { // thanks to kevin newman (captainn)
-      var screenLeft = element.offsetLeft, nested = 1;
-      if (element.runtimeStyle.autoLeft) {
-        screenLeft = viewport.clientWidth - element.offsetWidth - util.getPixelWidth(element, element.currentStyle.right);
-      }
-      // accommodate margins
-      if (element.currentStyle.marginLeft !== "auto") {
-        screenLeft -= util.getPixelWidth(element, element.currentStyle.marginLeft);
-      }
-      while (element = element.offsetParent) {
-        if (element.currentStyle.position !== "static") nested = -1;
-        screenLeft += element.offsetLeft * nested;
-      }
-      return screenLeft;
-    };
-
-    util.getPixelWidth = function(element, value) {
-      return PERCENT.test(value) ? parseInt(parseFloat(value) / 100 * viewport.clientWidth) : getPixelValue(element, value);
-    };
-  };
-  eval("var _vertical=" + rotate(_horizontal));
-  _horizontal(util);
-  _vertical(util);
-})();
-
-// =========================================================================
-// ie7-oveflow.js
-// =========================================================================
-
-/* ---------------------------------------------------------------------
-
-  This module alters the structure of the document.
-  It may adversely affect other CSS rules. Be warned.
-
---------------------------------------------------------------------- */
-
-if (appVersion < 7) {
-  var WRAPPER_STYLE = {
-    backgroundColor: "transparent",
-    backgroundImage: "none",
-    backgroundPositionX: null,
-    backgroundPositionY: null,
-    backgroundRepeat: null,
-    borderTopWidth: 0,
-    borderRightWidth: 0,
-    borderBottomWidth: 0,
-    borderLeftStyle: "none",
-    borderTopStyle: "none",
-    borderRightStyle: "none",
-    borderBottomStyle: "none",
-    borderLeftWidth: 0,
-    borderLeftColor: "#000",
-    borderTopColor: "#000",
-    borderRightColor: "#000",
-    borderBottomColor: "#000",
-    height: null,
-    marginTop: 0,
-    marginBottom: 0,
-    marginRight: 0,
-    marginLeft: 0,
-    width: "100%"
-  };
-
-  IE7.CSS.addRecalc("overflow", "visible", function(element) {
-    if (element.currentStyle.position === "absolute") return;
-    
-    // don't do this again
-    if (element.parentNode.ie7_wrapped) return;
-
-    // if max-height is applied, makes sure it gets applied first
-    if (IE7.Layout && element.currentStyle["max-height"] !== "auto") {
-      IE7.Layout.maxHeight(element);
-    }
-
-    if (element.currentStyle.marginLeft === "auto") element.style.marginLeft = 0;
-    if (element.currentStyle.marginRight === "auto") element.style.marginRight = 0;
-
-    var wrapper = document.createElement(ANON);
-    wrapper.ie7_wrapped = element;
-    for (var propertyName in WRAPPER_STYLE) {
-      wrapper.style[propertyName] = element.currentStyle[propertyName];
-      if (WRAPPER_STYLE[propertyName] != null) {
-        element.runtimeStyle[propertyName] = WRAPPER_STYLE[propertyName];
-      }
-    }
-    wrapper.style.display = "block";
-    wrapper.style.position = "relative";
-    element.runtimeStyle.position = "absolute";
-    element.parentNode.insertBefore(wrapper, element);
-    wrapper.appendChild(element);
-  });
-}
-
-// =========================================================================
-// ie7-quirks.js
-// =========================================================================
-
-function ie7Quirks() {
-  var FONT_SIZES = "xx-small,x-small,small,medium,large,x-large,xx-large".split(",");
-  for (var i = 0; i < FONT_SIZES.length; i++) {
-    FONT_SIZES[FONT_SIZES[i]] = FONT_SIZES[i - 1] || "0.67em";
-  }
-  
-  IE7.CSS.addFix(/(font(-size)?\s*:\s*)([\w.-]+)/, function(match, label, size, value) {
-    return label + (FONT_SIZES[value] || value);
-  });
-  
-  var NEGATIVE = /^\-/, LENGTH = /(em|ex)$/i;
-  var EM = /em$/i, EX = /ex$/i;
-
-  getPixelValue = function(element, value) {
-    if (PIXEL.test(value)) return parseInt(value)||0;
-    var scale = NEGATIVE.test(value)? -1 : 1;
-    if (LENGTH.test(value)) scale *= getFontScale(element);
-    temp.style.width = scale < 0 ? value.slice(1) : value;
-    body.appendChild(temp);
-    // retrieve pixel width
-    value = scale * temp.offsetWidth;
-    // remove the temporary element
-    temp.removeNode();
-    return parseInt(value);
-  };
-
-  var temp = createTempElement();
-  function getFontScale(element) {
-    var scale = 1;
-    temp.style.fontFamily = element.currentStyle.fontFamily;
-    temp.style.lineHeight = element.currentStyle.lineHeight;
-    //temp.style.fontSize = "";
-    while (element != body) {
-      var fontSize = element.currentStyle["ie7-font-size"];
-      if (fontSize) {
-        if (EM.test(fontSize)) scale *= parseFloat(fontSize);
-        else if (PERCENT.test(fontSize)) scale *= (parseFloat(fontSize) / 100);
-        else if (EX.test(fontSize)) scale *= (parseFloat(fontSize) / 2);
-        else {
-          temp.style.fontSize = fontSize;
-          return 1;
-        }
-      }
-      element = element.parentElement;
-    }
-    return scale;
-  };
-
-  // cursor:pointer (IE5.x)
-  IE7.CSS.addFix(/cursor\s*:\s*pointer/, "cursor:hand");
-  // display:list-item (IE5.x)
-  IE7.CSS.addFix(/display\s*:\s*list-item/, "display:block");
-  
-  // -----------------------------------------------------------------------
-  //  margin:auto
-  // -----------------------------------------------------------------------
-  
-  function fixMargin(element) {
-    var parent = element.parentElement;
-    var margin = parent.offsetWidth - element.offsetWidth - getPaddingWidth(parent);
-    var autoRight = (element.currentStyle["ie7-margin"] && element.currentStyle.marginRight === "auto") ||
-      element.currentStyle["ie7-margin-right"] === "auto";
-    switch (parent.currentStyle.textAlign) {
-      case "right":
-        margin = autoRight ? parseInt(margin / 2) : 0;
-        element.runtimeStyle.marginRight = margin + "px";
-        break;
-      case "center":
-        if (autoRight) margin = 0;
-      default:
-        if (autoRight) margin /= 2;
-        element.runtimeStyle.marginLeft = parseInt(margin) + "px";
-    }
-  };
-
-  function getPaddingWidth(element) {
-    return getPixelValue(element, element.currentStyle.paddingLeft) +
-      getPixelValue(element, element.currentStyle.paddingRight);
-  };
-  
-  IE7.CSS.addRecalc("margin(-left|-right)?", "[^};]*auto", function(element) {
-    if (register(fixMargin, element,
-      element.parentElement &&
-      element.currentStyle.display === "block" &&
-      element.currentStyle.marginLeft === "auto" &&
-      element.currentStyle.position !== "absolute")) {
-        fixMargin(element);
-    }
-  });
-  
-  addResize(function() {
-    for (var i in fixMargin.elements) {
-      var element = fixMargin.elements[i];
-      element.runtimeStyle.marginLeft =
-      element.runtimeStyle.marginRight = "";
-      fixMargin(element);
-    }
-  });
-};
-
-
-// =========================================================================
-// ie8-css.js
-// =========================================================================
-
-var BRACKETS = "\\([^)]+\\)";
-
-// pseudo-elements can be declared with a double colon
-encoder.add(/::(before|after)/, ":$1");
-
-if (appVersion < 8) {
-
-  if (IE7.CSS.pseudoClasses) IE7.CSS.pseudoClasses += "|";
-  IE7.CSS.pseudoClasses += "before|after|lang" + BRACKETS;
-
-  // -----------------------------------------------------------------------
-  // propertyName: inherit;
-  // -----------------------------------------------------------------------
-  
-  function parseInherited(cssText) {
-    return cssText.replace(new RegExp("([{;\\s])(" + inheritedProperties.join("|") + ")\\s*:\\s*([^;}]+)", "g"), "$1$2:$3;ie7-$2:$3");
-  };
-
-  var INHERITED = /[\w-]+\s*:\s*inherit/g;
-  var STRIP_IE7_FLAGS = /ie7\-|\s*:\s*inherit/g;
-  var DASH_LOWER = /\-([a-z])/g;
-  function toUpper(match, chr) {return chr.toUpperCase()};
-  
-  IE7.CSS.addRecalc("[\\w-]+", "inherit", function(element, cssText) {
-    if (element.parentElement) {
-      var inherited = cssText.match(INHERITED);
-      for (var i = 0; i < inherited.length; i++) {
-        var propertyName = inherited[i].replace(STRIP_IE7_FLAGS, "");
-        if (element.currentStyle["ie7-" + propertyName] === "inherit") {
-          propertyName = propertyName.replace(DASH_LOWER, toUpper);
-          element.runtimeStyle[propertyName] = element.parentElement.currentStyle[propertyName];
-        }
-      }
-    }
-  }, function(match) {
-    inheritedProperties.push(rescape(match.slice(1).split(":")[0]));
-    return match;
-  });
-
-  // -----------------------------------------------------------------------
-  // dynamic pseudo-classes
-  // -----------------------------------------------------------------------
-
-  var Focus = new DynamicPseudoClass("focus", function(element) {
-    var instance = arguments;
-
-    IE7.CSS.addEventHandler(element, "onfocus", function() {
-      Focus.unregister(instance); // in case it starts with focus
-      Focus.register(instance);
-    });
-
-    IE7.CSS.addEventHandler(element, "onblur", function() {
-      Focus.unregister(instance);
-    });
-
-    // check the active element for initial state
-    if (element == document.activeElement) {
-      Focus.register(instance)
-    }
-  });
-
-  var Active = new DynamicPseudoClass("active", function(element) {
-    var instance = arguments;
-    IE7.CSS.addEventHandler(element, "onmousedown", function() {
-      Active.register(instance);
-    });
-  });
-
-  // globally trap the mouseup event (thanks Martijn!)
-  addEventHandler(document, "onmouseup", function() {
-    var instances = Active.instances;
-    for (var i in instances) Active.unregister(instances[i]);
-  });
-
-  // -----------------------------------------------------------------------
-  // IE7 pseudo elements
-  // -----------------------------------------------------------------------
-
-  // constants
-  var URL = /^url\s*\(\s*([^)]*)\)$/;
-  var POSITION_MAP = {
-    before0: "beforeBegin",
-    before1: "afterBegin",
-    after0: "afterEnd",
-    after1: "beforeEnd"
-  };
-
-  var PseudoElement = IE7.PseudoElement = Rule.extend({
-    constructor: function(selector, position, cssText) {
-      // initialise object properties
-      this.position = position;
-      var content = cssText.match(PseudoElement.CONTENT), match, entity;
-      if (content) {
-        content = content[1];
-        match = content.split(/\s+/);
-        for (var i = 0; (entity = match[i]); i++) {
-          match[i] = /^attr/.test(entity) ? {attr: entity.slice(5, -1)} :
-            entity.charAt(0) === "'" ? getString(entity) : decode(entity);
-        }
-        content = match;
-      }
-      this.content = content;
-      // CSS text needs to be decoded immediately
-      this.base(selector, decode(cssText));
-    },
-
-    init: function() {
-      // execute the underlying css query for this class
-      this.match = cssQuery(this.selector);
-      for (var i = 0; i < this.match.length; i++) {
-        var runtimeStyle = this.match[i].runtimeStyle;
-        if (!runtimeStyle[this.position]) runtimeStyle[this.position] = {cssText:""};
-        runtimeStyle[this.position].cssText += ";" + this.cssText;
-        if (this.content != null) runtimeStyle[this.position].content = this.content;
-      }
-    },
-
-    create: function(target) {
-      var generated = target.runtimeStyle[this.position];
-      if (generated) {
-        // copy the array of values
-        var content = [].concat(generated.content || "");
-        for (var j = 0; j < content.length; j++) {
-          if (typeof content[j] == "object") {
-            content[j] = target.getAttribute(content[j].attr);
-          }
-        }
-        content = content.join("");
-        var url = content.match(URL);
-        var cssText = "overflow:hidden;" + generated.cssText.replace(/'/g, '"');
-        var position = POSITION_MAP[this.position + Number(target.canHaveChildren)];
-        var id = 'ie7_pseudo' + PseudoElement.count++;
-        target.insertAdjacentHTML(position, format(PseudoElement.ANON, this.className, id, cssText, url ? "" : content));
-        if (url) {
-          var src = getString(url[1]);
-          var pseudoElement = document.getElementById(id);
-          pseudoElement.src = src;
-          addFilter(pseudoElement, "crop");
-          var targetIsFloated = target.currentStyle.styleFloat !== "none";
-          if (pseudoElement.currentStyle.display === "inline" || targetIsFloated) {
-            if (appVersion < 7 && targetIsFloated && target.canHaveChildren) {
-              target.runtimeStyle.display = "inline";
-              target.runtimeStyle.position = "relative";
-              pseudoElement.runtimeStyle.position = "absolute";
-            }
-            pseudoElement.style.display = "inline-block";
-            if (target.currentStyle.styleFloat !== "none") {
-              pseudoElement.style.pixelWidth = target.offsetWidth;
-            }
-            var image = new Image;
-            image.onload = function() {
-              pseudoElement.style.pixelWidth = this.width;
-              pseudoElement.style.pixelHeight = Math.max(this.height, pseudoElement.offsetHeight);
-            };
-            image.src = src;
-          }
-        }
-        target.runtimeStyle[this.position] = null;
-      }
-    },
-
-    recalc: function() {
-      if (this.content == null) return;
-      for (var i = 0; i < this.match.length; i++) {
-        this.create(this.match[i]);
-      }
-    },
-
-    toString: function() {
-      return "." + this.className + "{display:inline}";
-    }
-  }, {
-    CONTENT: /content\s*:\s*([^;]*)(;|$)/,
-    ANON: "<ie7:! class='ie7_anon %1' id=%2 style='%3'>%4</ie7:!>",
-    MATCH: /(.*):(before|after).*/,
-
-    count: 0
-  });
-
-  IE7._getLang = function(element) {
-    var lang = "";
-    while (element && element.nodeType === 1) {
-      lang = element.lang || element.getAttribute("lang") || "";
-      if (lang) break;
-      element = element.parentNode;
-    }
-    return lang;
-  };
-
-  FILTER = extend(FILTER, {
-    ":lang\\(([^)]+)\\)":    "((ii=IE7._getLang(e))==='$1'||ii.indexOf('$1-')===0)&&"
-  });
-}
-
-// =========================================================================
-// ie8-html.js
-// =========================================================================
-
-var UNSUCCESSFUL = /^(submit|reset|button)$/;
-
-// -----------------------------------------------------------------------
-// <button>
-// -----------------------------------------------------------------------
-
-// IE bug means that innerText is submitted instead of "value"
-IE7.HTML.addRecalc("button,input", function(button) {
-  if (button.nodeName === "BUTTON") {
-    var match = button.outerHTML.match(/ value="([^"]*)"/i);
-    button.runtimeStyle.value = match ? match[1] : "";
-  }
-  // flag the button/input that was used to submit the form
-  if (button.type === "submit") {
-    addEventHandler(button, "onclick", function() {
-      button.runtimeStyle.clicked = true;
-      setTimeout("document.all." + button.uniqueID + ".runtimeStyle.clicked=false", 1);
-    });
-  }
-});
-
-// -----------------------------------------------------------------------
-// <form>
-// -----------------------------------------------------------------------
-
-// only submit "successful controls
-IE7.HTML.addRecalc("form", function(form) {
-  addEventHandler(form, "onsubmit", function() {
-    for (var element, i = 0; element = form[i]; i++) {
-      if (UNSUCCESSFUL.test(element.type) && !element.disabled && !element.runtimeStyle.clicked) {
-        element.disabled = true;
-        setTimeout("document.all." + element.uniqueID + ".disabled=false", 1);
-      } else if (element.nodeName === "BUTTON" && element.type === "submit") {
-        setTimeout("document.all." + element.uniqueID + ".value='" + element.value + "'", 1);
-        element.value = element.runtimeStyle.value;
-      }
-    }
-  });
-});
-
-// -----------------------------------------------------------------------
-// <img>
-// -----------------------------------------------------------------------
-
-// get rid of the spurious tooltip produced by the alt attribute on images
-IE7.HTML.addRecalc("img", function(img) {
-  if (img.alt && !img.title) img.title = "";
-});
-
-// =========================================================================
-// ie8-layout.js
-// =========================================================================
-
-if (appVersion < 8) {
-  IE7.CSS.addRecalc("border-spacing", NUMERIC, function(element) {
-    if (element.currentStyle.borderCollapse !== "collapse") {
-      element.cellSpacing = getPixelValue(element, element.currentStyle["ie7-border-spacing"].split(" ")[0]);
-    }
-  });
-  IE7.CSS.addRecalc("box-sizing", "content-box", IE7.Layout.boxSizing);
-  IE7.CSS.addRecalc("box-sizing", "border-box", IE7.Layout.borderBox);
-}
-
-// =========================================================================
-// ie8-graphics.js
-// =========================================================================
-
-if (appVersion < 8) {
-  // fix object[type=image/*]
-  var IMAGE = /^image/i;
-  IE7.HTML.addRecalc("object", function(element) {
-    if (IMAGE.test(element.type)) {
-      element.body.style.cssText = "margin:0;padding:0;border:none;overflow:hidden";
-      return element;
-    }
-  });
-}
-
-// =========================================================================
-// ie9-css.js
-// =========================================================================
-
-var NOT_NEXT_BY_TYPE     = "!IE7._getElementSiblingByType(e,'next')&&",
-    NOT_PREVIOUS_BY_TYPE = NOT_NEXT_BY_TYPE.replace("next", "previous");
-
-if (IE7.CSS.pseudoClasses) IE7.CSS.pseudoClasses += "|";
-IE7.CSS.pseudoClasses += "(?:first|last|only)\\-(?:child|of\\-type)|empty|root|target|" +
-  ("not|nth\\-child|nth\\-last\\-child|nth\\-of\\-type|nth\\-last\\-of\\-type".split("|").join(BRACKETS + "|") + BRACKETS);
-  
-// :checked
-var Checked = new DynamicPseudoClass("checked", function(element) {
-  if (typeof element.checked !== "boolean") return;
-  var instance = arguments;
-  IE7.CSS.addEventHandler(element, "onpropertychange", function() {
-    if (event.propertyName === "checked") {
-      if (element.checked === true) Checked.register(instance);
-      else Checked.unregister(instance);
-    }
-  });
-  // check current checked state
-  if (element.checked === true) Checked.register(instance);
-});
-
-// :enabled
-var Enabled = new DynamicPseudoClass("enabled", function(element) {
-  if (typeof element.disabled !== "boolean") return;
-  var instance = arguments;
-  IE7.CSS.addEventHandler(element, "onpropertychange", function() {
-    if (event.propertyName === "disabled") {
-      if (element.disabled === false) Enabled.register(instance);
-      else Enabled.unregister(instance);
-    }
-  });
-  // check current disabled state
-  if (element.disabled === false) Enabled.register(instance);
-});
-
-// :disabled
-var Disabled = new DynamicPseudoClass("disabled", function(element) {
-  if (typeof element.disabled !== "boolean") return;
-  var instance = arguments;
-  IE7.CSS.addEventHandler(element, "onpropertychange", function() {
-    if (event.propertyName === "disabled") {
-      if (element.disabled === true) Disabled.register(instance);
-      else Disabled.unregister(instance);
-    }
-  });
-  // check current disabled state
-  if (element.disabled === true) Disabled.register(instance);
-});
-
-// :indeterminate (Kevin Newman)
-var Indeterminate = new DynamicPseudoClass("indeterminate", function(element) {
-  if (typeof element.indeterminate !== "boolean") return;
-  var instance = arguments;
-  IE7.CSS.addEventHandler(element, "onpropertychange", function() {
-    if (event.propertyName === "indeterminate") {
-      if (element.indeterminate === true) Indeterminate.register(instance);
-      else Indeterminate.unregister(instance);
-    }
-  });
-  IE7.CSS.addEventHandler(element, "onclick", function() {
-    Indeterminate.unregister(instance);
-  });
-  // clever Kev says no need to check this up front
-});
-
-// :target
-var Target = new DynamicPseudoClass("target", function(element) {
-  var instance = arguments;
-  // if an element has a tabIndex then it can become "active".
-  //  The default is zero anyway but it works...
-  if (!element.tabIndex) element.tabIndex = 0;
-  // this doesn't detect the back button. I don't know how to do that without adding an iframe :-(
-  IE7.CSS.addEventHandler(document, "onpropertychange", function() {
-    if (event.propertyName === "activeElement") {
-      if (element.id && element.id === location.hash.slice(1)) Target.register(instance);
-      else Target.unregister(instance);
-    }
-  });
-  // check the current location
-  if (element.id && element.id === location.hash.slice(1)) Target.register(instance);
-});
-
-// Register a node and index its siblings.
-var _currentIndex = 1, // -@DRE
-    allIndexes = {_currentIndex: 1};
-
-IE7._indexOf = function(element, last, ofType) {
-  var parent = element.parentNode;
-  if (!parent || parent.nodeType !== 1) return NaN;
-
-  var tagName = ofType ? element.nodeName : "";
-  if (tagName === "TR" && element.sectionRowIndex >= 0) {
-    var index = element.sectionRowIndex;
-    return last ? element.parentNode.rows.length - index + 1 : index;
-  }
-  if ((tagName === "TD" || tagName === "TH") && element.cellIndex >= 0) {
-    index = element.cellIndex;
-    return last ? element.parentNode.cells.length - index + 1 : index;
-  }
-  if (allIndexes._currentIndex !== _currentIndex) {
-    allIndexes = {_currentIndex: _currentIndex};
-  }
-  var id = (parent.uniqueID) + "-" + tagName,
-      indexes = allIndexes[id];
-  if (!indexes) {
-    indexes = {};
-    var index = 0,
-        child = parent.firstChild;
-    while (child) {
-      if (ofType ? child.nodeName === tagName : child.nodeName > "@") {
-        indexes[child.uniqueID] = ++index;
-      }
-      child = child.nextSibling;
-    }
-    indexes.length = index;
-    allIndexes[id] = indexes;
-  }
-  index = indexes[element.uniqueID];
-  return last ? indexes.length - index + 1 : index;
-};
-
-IE7._isEmpty = function(node) {
-  node = node.firstChild;
-  while (node) {
-    if (node.nodeType === 3 || node.nodeName > "@") return false;
-    node = node.nextSibling;
-  }
-  return true;
-};
-
-IE7._getElementSiblingByType = function(node, direction) {
-  var tagName = node.nodeName;
-  direction += "Sibling";
-  do {
-    node = node[direction];
-    if (node && node.nodeName === tagName) break;
-  } while (node);
-  return node;
-};
-
-var ONE = {"+": 1, "-": -1}, SPACES = / /g;
-
-FILTER = extend(extend({
-  ":nth(-last)?-(?:child|(of-type))\\((<#nth_arg>)\\)(<#filter>)?": function(match, last, ofType, args, filters) { // :nth- pseudo classes
-    args = args.replace(SPACES, "");
-
-    var index = "IE7._indexOf(e," + !!last + "," + !!ofType + ")";
-
-    if (args === "even") args = "2n";
-    else if (args === "odd") args = "2n+1";
-    else if (!isNaN(args)) args = "0n" + ~~args;
-
-    args = args.split("n");
-    var a = ~~(ONE[args[0]] || args[0] || 1),
-        b = ~~args[1];
-    if (a === 0) {
-      var expr = index + "===" + b;
-    } else {
-      expr = "((ii=" + index + ")-(" + b + "))%" + a + "===0&&ii" + (a < 0 ? "<" : ">") + "=" + b;
-    }
-    return this.parse(filters) + expr + "&&";
-  },
-
-  "<#negation>": function(match, simple) {
-    if (/:not/i.test(simple)) throwSelectorError();
-
-    if (/^[#.:\[]/.test(simple)) {
-      simple = "*" + simple;
-    }
-    return "!(" + MATCHER.parse(simple).slice(3, -2) + ")&&";
-  }
-}, FILTER), {
-  ":checked":         "e.checked===true&&",
-  ":disabled":        "e.disabled===true&&",
-  ":enabled":         "e.disabled===false&&",
-  ":last-child":      "!" + NEXT_SIBLING + "&&",
-  ":only-child":      "!" + PREVIOUS_SIBLING + "&&!" + NEXT_SIBLING + "&&",
-  ":first-of-type":   NOT_PREVIOUS_BY_TYPE,
-  ":last-of-type":    NOT_NEXT_BY_TYPE,
-  ":only-of-type":    NOT_PREVIOUS_BY_TYPE + NOT_NEXT_BY_TYPE,
-
-  ":empty":          "IE7._isEmpty(e)&&",
-  ":root":           "e==R&&",
-  ":target":         "H&&" + ID_ATTRIBUTE + "===H&&"
-});
-
-var HTML5 = "article,aside,audio,canvas,details,figcaption,figure,footer,header,hgroup,mark,menu,meter,nav,output,progress,section,summary,time,video".split(",");
-for (var i = 0, tagName; tagName = HTML5[i]; i++) document.createElement(tagName);
-
-HEADER += "datalist{display:none}\
-details{padding-left:40px;display:block;margin:1em 0}\
-meter,progress{vertical-align:-0.2em;width:5em;height:1em;display:inline-block}\
-progress{width:10em;}\
-article,aside,figcaption,footer,header,hgroup,summary,section,nav{display:block;margin:1em 0}\
-figure{margin:1em 40px;display:block}\
-mark{background:yellow}";
-
-// =========================================================================
-// ie9-layout.js
-// =========================================================================
-
-// =========================================================================
-// ie9-graphics.js
-// =========================================================================
-
-IE7.CSS.addFix(/\bopacity\s*:\s*([\d.]+)/, function(match, value) {
-  return "zoom:1;filter:Alpha(opacity=" + ((value * 100) || 1) + ")";
-});
-
-var MATCHER;
-
-var cssQuery = (function() {
-  var CONTEXT = /^[>+~]/;
-  
-  var useContext = false;
-  
-  // This is not a selector engine in the strictest sense. So it's best to silently error.
-  function cssQuery(selector, context, single) {
-    selector = trim(selector);
-    if (!context) context = document;
-    var ref = context;
-    useContext = CONTEXT.test(selector);
-    if (useContext) {
-      context = context.parentNode;
-      selector = "*" + selector;
-    }
-    try {
-      return selectQuery.create(selector, useContext)(context, single ? null : [], ref);
-    } catch (ex) {
-      return single ? null : [];
-    }
-  };
-
-  var VALID_SELECTOR = /^(\\.|[' >+~#.\[\]:*(),\w-\^|$=]|[^\x00-\xa0])+$/;
-
-  var _EVALUATED = /^(href|src)$/;
-  var _ATTRIBUTES = {
-    "class": "className",
-    "for": "htmlFor"
-  };
-
-  var IE7_CLASS_NAMES = /\sie7_\w+/g;
-
-  var USE_IFLAG = /^(action|cite|codebase|data|dynsrc|href|longdesc|lowsrc|src|usemap|url)$/i;
-
-  IE7._getAttribute = function(element, name) {
-    if (element.getAttributeNode) {
-      var attribute = element.getAttributeNode(name);
-    }
-    name = _ATTRIBUTES[name.toLowerCase()] || name;
-    if (!attribute) attribute = element.attributes[name];
-    var specified = attribute && attribute.specified;
-
-    if (element[name] && typeof element[name] == "boolean") return name.toLowerCase();
-    if ((specified && USE_IFLAG.test(name)) || (!attribute && MSIE5) || name === "value" || name === "type") {
-      return element.getAttribute(name, 2);
-    }
-    if (name === "style") return element.style.cssText.toLowerCase() || null;
-
-    return specified ? String(attribute.nodeValue) : null;
-  };
-
-  var names = "colSpan,rowSpan,vAlign,dateTime,accessKey,tabIndex,encType,maxLength,readOnly,longDesc";
-  // Convert the list of strings to a hash, mapping the lowercase name to the camelCase name.
-  extend(_ATTRIBUTES, combine(names.toLowerCase().split(","), names.split(",")));
-
-  IE7._getElementSibling = function(node, direction) {
-    direction += "Sibling";
-    do {
-      node = node[direction];
-      if (node && node.nodeName > "@") break;
-    } while (node);
-    return node;
-  };
-
-  var IMPLIED_ASTERISK    = /(^|[, >+~])([#.:\[])/g,
-      BLOCKS              = /\)\{/g,
-      COMMA               = /,/,
-      QUOTED              = /^['"]/,
-      HEX_ESCAPE          = /\\([\da-f]{2,2})/gi,
-      LAST_CHILD          = /last/i;
-
-  IE7._byId = function(document, id) {
-    var result = document.all[id] || null;
-    // Returns a single element or a collection.
-    if (!result || (result.nodeType && IE7._getAttribute(result, "id") === id)) return result;
-    // document.all has returned a collection of elements with name/id
-    for (var i = 0; i < result.length; i++) {
-      if (IE7._getAttribute(result[i], "id") === id) return result[i];
-    }
-    return null;
-  };
-
-  // =========================================================================
-  // dom/selectors-api/CSSSelectorParser.js
-  // =========================================================================
-
-  // http://www.w3.org/TR/css3-selectors/#w3cselgrammar (kinda)
-  var CSSSelectorParser = RegGrp.extend({
-    dictionary: new Dictionary({
-      ident:           /\-?(\\.|[_a-z]|[^\x00-\xa0])(\\.|[\w-]|[^\x00-\xa0])*/,
-      combinator:      /[\s>+~]/,
-      operator:        /[\^~|$*]?=/,
-      nth_arg:         /[+-]?\d+|[+-]?\d*n(?:\s*[+-]\s*\d+)?|even|odd/,
-      tag:             /\*|<#ident>/,
-      id:              /#(<#ident>)/,
-      'class':         /\.(<#ident>)/,
-      pseudo:          /\:([\w-]+)(?:\(([^)]+)\))?/,
-      attr:            /\[(<#ident>)(?:(<#operator>)((?:\\.|[^\[\]#.:])+))?\]/,
-      negation:        /:not\((<#tag>|<#id>|<#class>|<#attr>|<#pseudo>)\)/,
-      sequence:        /(\\.|[~*]=|\+\d|\+?\d*n\s*\+\s*\d|[^\s>+~,\*])+/,
-      filter:          /[#.:\[]<#sequence>/,
-      selector:        /[^>+~](\\.|[^,])*?/,
-      grammar:         /^(<#selector>)((,<#selector>)*)$/
-    }),
-
-    ignoreCase: true
-  });
-
-  var normalizer = new CSSSelectorParser({
-    "\\\\.|[~*]\\s+=|\\+\\s+\\d": RegGrp.IGNORE,
-    "\\[\\s+": "[",
-    "\\(\\s+": "(",
-    "\\s+\\)": ")",
-    "\\s+\\]": "]",
-    "\\s*([,>+~]|<#operator>)\\s*": "$1",
-    "\\s+$": "",
-    "\\s+": " "
-  });
-
-  function normalize(selector) {
-    selector = normalizer.parse(selector.replace(HEX_ESCAPE, "\\x$1"))
-      .replace(UNESCAPE, "$1")
-      .replace(IMPLIED_ASTERISK, "$1*$2");
-    if (!VALID_SELECTOR.test(selector)) throwSelectorError();
-    return selector;
-  };
-
-  function unescape(query) {
-    // put string values back
-    return query.replace(ESCAPED, unescapeString);
-  };
-
-  function unescapeString(match, index) {
-    return strings[index];
-  };
-
-  var BRACES = /\{/g, BRACES_ESCAPED = /\\{/g;
-
-  function closeBlock(group) {
-    return Array((group.replace(BRACES_ESCAPED, "").match(BRACES) || "").length + 1).join("}");
-  };
-
-  FILTER = new CSSSelectorParser(FILTER);
-
-  var TARGET = /:target/i, ROOT = /:root/i;
-
-  function getConstants(selector) {
-    var constants = "";
-    if (ROOT.test(selector)) constants += ",R=d.documentElement";
-    if (TARGET.test(selector)) constants += ",H=d.location;H=H&&H.hash.replace('#','')";
-    if (constants || selector.indexOf("#") !== -1) {
-      constants = ",t=c.nodeType,d=t===9?c:c.ownerDocument||(c.document||c).parentWindow.document" + constants;
-    }
-    return "var ii" + constants + ";";
-  };
-
-  var COMBINATOR = {
-    " ":   ";while(e!=s&&(e=e.parentNode)&&e.nodeType===1){",
-    ">":   ".parentElement;if(e){",
-    "+":   ";while((e=e.previousSibling)&&!(" + IS_ELEMENT + "))continue;if(e){",
-    "~":   ";while((e=e.previousSibling)){" + IF_ELEMENT
-  };
-
-  var TOKEN = /\be\b/g;
-
-  MATCHER = new CSSSelectorParser({
-    "(?:(<#selector>)(<#combinator>))?(<#tag>)(<#filter>)?$": function(match, before, combinator, tag, filters) {
-      var group = "";
-      if (tag !== "*") {
-        var TAG = tag.toUpperCase();
-        group += "if(e.nodeName==='" + TAG + (TAG === tag ? "" : "'||e.nodeName==='" + tag) + "'){";
-      }
-      if (filters) {
-        group += "if(" + FILTER.parse(filters).slice(0, -2) + "){";
-      }
-      group = group.replace(TOKEN, "e" + this.index);
-      if (combinator) {
-        group += "var e=e" + (this.index++) + COMBINATOR[combinator];
-        group = group.replace(TOKEN, "e" + this.index);
-      }
-      if (before) {
-        group += this.parse(before);
-      }
-      return group;
-    }
-  });
-  
-  var BY_ID       = "e0=IE7._byId(d,'%1');if(e0){",
-      BY_TAG_NAME = "var n=c.getElementsByTagName('%1');",
-      STORE       = "if(r==null)return e0;r[k++]=e0;";
-
-  var TAG_NAME = 1;
-
-  var SELECTOR = new CSSSelectorParser({
-    "^((?:<#selector>)?(?:<#combinator>))(<#tag>)(<#filter>)?$": true
-  });
-
-  var cache = {};
-
-  var selectById = new CSSSelectorParser({
-    "^(<#tag>)#(<#ident>)(<#filter>)?( [^,]*)?$": function(match, tagName, id, filters, after) {
-      var block = format(BY_ID, id), endBlock = "}";
-      if (filters) {
-        block += MATCHER.parse(tagName + filters);
-        endBlock = closeBlock(block);
-      }
-      if (after) {
-        block += "s=c=e0;" + selectQuery.parse("*" + after);
-      } else {
-        block += STORE;
-      }
-      return block + endBlock;
-    },
-
-    "^([^#,]+)#(<#ident>)(<#filter>)?$": function(match, before, id, filters) {
-      var block = format(BY_ID, id);
-      if (before === "*") {
-        block += STORE;
-      } else {
-        block += MATCHER.parse(before + filters) + STORE + "break";
-      }
-      return block + closeBlock(block);
-    },
-
-    "^.*$": ""
-  });
-
-  var selectQuery = new CSSSelectorParser({
-    "<#grammar>": function(match, selector, remainingSelectors) {
-      if (!this.groups) this.groups = [];
-
-      var group = SELECTOR.exec(" " + selector);
-
-      if (!group) throwSelectorError();
-
-      this.groups.push(group.slice(1));
-
-      if (remainingSelectors) {
-        return this.parse(remainingSelectors.replace(COMMA, ""));
-      }
-
-      var groups = this.groups,
-          tagName = groups[0][TAG_NAME]; // first tag name
-
-      for (var i = 1; group = groups[i]; i++) { // search tag names
-        if (tagName !== group[TAG_NAME]) {
-          tagName = "*"; // mixed tag names, so use "*"
-          break;
-        }
-      }
-
-      var matcher = "", store = STORE + "continue filtering;";
-
-      for (var i = 0; group = groups[i]; i++) {
-        MATCHER.index = 0;
-        if (tagName !== "*") group[TAG_NAME] = "*"; // we are already filtering by tagName
-        group = group.join("");
-        if (group === " *") { // select all
-          matcher = store;
-          break;
-        } else {
-          group = MATCHER.parse(group);
-          if (useContext) group += "if(e" + MATCHER.index + "==s){";
-          matcher += group + store + closeBlock(group);
-        }
-      }
-
-      // reduce to a single loop
-      var isWild = tagName === "*";
-      return (isWild ? "var n=c.all;" : format(BY_TAG_NAME, tagName)) +
-        "filtering:while((e0=n[i++]))" +
-        (isWild ? IF_ELEMENT.replace(TOKEN, "e0") : "{") +
-          matcher +
-        "}";
-    },
-
-    "^.*$": throwSelectorError
-  });
-
-  var REDUNDANT_NODETYPE_CHECKS = /\&\&(e\d+)\.nodeType===1(\)\{\s*if\(\1\.nodeName=)/g;
-
-  selectQuery.create = function(selector) {
-    if (!cache[selector]) {
-      selector = normalize(selector);
-      this.groups = null;
-      MATCHER.index = 0;
-      var block = this.parse(selector);
-      this.groups = null;
-      MATCHER.index = 0;
-      if (selector.indexOf("#") !== -1) {
-        var byId  = selectById.parse(selector);
-        if (byId) {
-          block =
-            "if(t===1||t===11|!c.getElementById){" +
-              block +
-            "}else{" +
-              byId +
-            "}";
-        }
-      }
-      // remove redundant nodeType==1 checks
-      block = block.replace(REDUNDANT_NODETYPE_CHECKS, "$2");
-      block = getConstants(selector) + decode(block);
-      cache[selector] = new Function("return function(c,r,s){var i=0,k=0,e0;" + block + "return r}")();
-    }
-    return cache[selector];
-  };
-
-  return cssQuery;
-})();
-
-function throwSelectorError() {
-  throw new SyntaxError("Invalid selector.");
-};
-
-// -----------------------------------------------------------------------
-// initialisation
-// -----------------------------------------------------------------------
-
-IE7.loaded = true;
-
-(function() {
-  try {
-    // http://javascript.nwbox.com/IEContentLoaded/
-    if (!document.body) throw "continue";
-    documentElement.doScroll("left");
-  } catch (ex) {
-    setTimeout(arguments.callee, 1);
-    return;
-  }
-  // execute the inner text of the IE7 script
-  try {
-    eval(script.innerHTML);
-  } catch (ex) {
-    // ignore errors
-  }
-  if (typeof IE7_PNG_SUFFIX == "object") {
-    PNG = IE7_PNG_SUFFIX;
-  } else {
-    PNG = new RegExp(rescape(window.IE7_PNG_SUFFIX || "-trans.png") + "(\\?.*)?$", "i");
-  }
-
-  // frequently used references
-  body = document.body;
-  viewport = MSIE5 ? body : documentElement;
-
-  // classes
-  body.className += " ie7_body";
-  documentElement.className += " ie7_html";
-
-  if (MSIE5) ie7Quirks();
-
-  IE7.CSS.init();
-  IE7.HTML.init();
-
-  IE7.HTML.apply();
-  IE7.CSS.apply();
-
-  IE7.recalc();
-})();
-
-})(this, document);
Index: admin/js/jquery/jquery.pageTabs.js
===================================================================
--- admin/js/jquery/jquery.pageTabs.js	(revision 1280)
+++ admin/js/jquery/jquery.pageTabs.js	(revision 1223)
@@ -39,9 +39,10 @@
 				li = document.createElement('li');
 				a = document.createElement('a');
-				a.appendChild(document.createTextNode(this.title));
+				$(a).html(this.title);
 				this.title = '';
 				a.href = '#';
 				a.fn = This.showDiv;
 				a.index = this.id || i;
+				li.id = "part-tabs-"+a.index;
 				a.obj = This;
 				jQuery(a).click(function() { this.fn.call(this.obj,this.index); return false; });
Index: admin/js/jsUpload/jquery.fileupload-process.js
===================================================================
--- admin/js/jsUpload/jquery.fileupload-process.js	(revision 1320)
+++ admin/js/jsUpload/jquery.fileupload-process.js	(revision 1144)
@@ -1,4 +1,4 @@
 /*
- * jQuery File Upload Processing Plugin 1.2.2
+ * jQuery File Upload Processing Plugin 1.1
  * https://github.com/blueimp/jQuery-File-Upload
  *
@@ -99,18 +99,12 @@
             var processQueue = [];
             $.each(options.processQueue, function () {
-                var settings = {},
-                    action = this.action,
-                    prefix = this.prefix === true ? action : this.prefix;
+                var settings = {};
                 $.each(this, function (key, value) {
                     if ($.type(value) === 'string' &&
                             value.charAt(0) === '@') {
-                        settings[key] = options[
-                            value.slice(1) || (prefix ? prefix +
-                                key.charAt(0).toUpperCase() + key.slice(1) : key)
-                        ];
+                        settings[key] = options[value.slice(1)];
                     } else {
                         settings[key] = value;
                     }
-
                 });
                 processQueue.push(settings);
@@ -134,5 +128,5 @@
                     this._trigger('processstart');
                 }
-                $.each(data.files, function (index) {
+                $.each(data.files, function (index, file) {
                     var opts = index ? $.extend({}, options) : options,
                         func = function () {
Index: admin/js/jsUpload/jquery.fileupload-ui.js
===================================================================
--- admin/js/jsUpload/jquery.fileupload-ui.js	(revision 1320)
+++ admin/js/jsUpload/jquery.fileupload-ui.js	(revision 1206)
@@ -1,4 +1,4 @@
 /*
- * jQuery File Upload User Interface Plugin 8.7.1
+ * jQuery File Upload User Interface Plugin 8.2.1
  * https://github.com/blueimp/jQuery-File-Upload
  *
@@ -20,7 +20,5 @@
             'jquery',
             'tmpl',
-            './jquery.fileupload-image',
-            './jquery.fileupload-audio',
-            './jquery.fileupload-video',
+            './jquery.fileupload-resize',
             './jquery.fileupload-validate'
         ], factory);
@@ -106,7 +104,19 @@
                     );
                 });
+
+            /*
+             *  
+             *  Activation du bouton si un fichier trouvé
+             */
+                var fileUploadButtonBar = that.element.find('.fileupload-buttonbar');
+                fileUploadButtonBar.find('.start').prop('disabled', false);
+                fileUploadButtonBar.find('.start').removeClass('disabled');
+             /*
+             *
+             */
             },
             // Callback for the start of each file upload request:
             send: function (e, data) {
+                $(this).find('.start').hide();
                 var that = $(this).data('blueimp-fileupload') ||
                         $(this).data('fileupload');
@@ -130,4 +140,5 @@
             // Callback for successful uploads:
             done: function (e, data) {
+
                 var that = $(this).data('blueimp-fileupload') ||
                         $(this).data('fileupload'),
@@ -140,6 +151,6 @@
                     data.context.each(function (index) {
                         var file = files[index] ||
-                                {error: 'Empty file upload result'};
-                        deferred = that._addFinishedDeferreds();
+                                {error: 'Empty file upload result'},
+                            deferred = that._addFinishedDeferreds();
                         that._transition($(this)).done(
                             function () {
@@ -160,7 +171,6 @@
                     });
                 } else {
-                    template = that._renderDownload(files)[
-                        that.options.prependFiles ? 'prependTo' : 'appendTo'
-                    ](that.options.filesContainer);
+                    template = that._renderDownload(files)
+                        .appendTo(that.options.filesContainer);
                     that._forceReflow(template);
                     deferred = that._addFinishedDeferreds();
@@ -217,7 +227,6 @@
                     });
                 } else if (data.errorThrown !== 'abort') {
-                    data.context = that._renderUpload(data.files)[
-                        that.options.prependFiles ? 'prependTo' : 'appendTo'
-                    ](that.options.filesContainer)
+                    data.context = that._renderUpload(data.files)
+                        .appendTo(that.options.filesContainer)
                         .data('data', data);
                     that._forceReflow(data.context);
@@ -272,9 +281,12 @@
             // Callback for uploads start, equivalent to the global ajaxStart event:
             start: function (e) {
+                $(this).find('.start').hide();
                 var that = $(this).data('blueimp-fileupload') ||
-                        $(this).data('fileupload');
+                $(this).data('fileupload');
                 that._resetFinishedDeferreds();
                 that._transition($(this).find('.fileupload-progress')).done(
+
                     function () {
+
                         that._trigger('started', e);
                     }
@@ -283,4 +295,5 @@
             // Callback for uploads stop, equivalent to the global ajaxStop event:
             stop: function (e) {
+                $(this).find('.start').show();
                 var that = $(this).data('blueimp-fileupload') ||
                         $(this).data('fileupload'),
@@ -299,4 +312,17 @@
                     }
                 );
+            /*
+             *  Recherche des fichers restants à uploader
+             *  Désactivation du bouton si plus rien
+             */
+             var filesList = that.options.filesContainer;
+             if(filesList.find('.start').size() == 0) {
+                var fileUploadButtonBar = that.element.find('.fileupload-buttonbar');
+                fileUploadButtonBar.find('.start').prop('disabled', true);
+                fileUploadButtonBar.find('.start').addClass('disabled');
+             }
+            /*
+             *
+             */
             },
             processstart: function () {
@@ -309,6 +335,7 @@
             destroy: function (e, data) {
                 var that = $(this).data('blueimp-fileupload') ||
-                        $(this).data('fileupload'),
-                    removeNode = function () {
+                        $(this).data('fileupload');
+                if (data.url) {
+                    $.ajax(data).done(function () {
                         that._transition(data.context).done(
                             function () {
@@ -317,9 +344,5 @@
                             }
                         );
-                    };
-                if (data.url) {
-                    $.ajax(data).done(removeNode);
-                } else {
-                    removeNode();
+                    });
                 }
             }
@@ -614,7 +637,4 @@
             this._super();
             this._resetFinishedDeferreds();
-            if (!$.support.fileInput) {
-                this._disableFileInputButton();
-            }
         },
 
Index: admin/js/jsUpload/jquery.fileupload.js
===================================================================
--- admin/js/jsUpload/jquery.fileupload.js	(revision 1320)
+++ admin/js/jsUpload/jquery.fileupload.js	(revision 1144)
@@ -1,4 +1,4 @@
 /*
- * jQuery File Upload Plugin 5.32.2
+ * jQuery File Upload Plugin 5.31.1
  * https://github.com/blueimp/jQuery-File-Upload
  *
@@ -11,5 +11,5 @@
 
 /*jslint nomen: true, unparam: true, regexp: true */
-/*global define, window, document, location, File, Blob, FormData */
+/*global define, window, document, File, Blob, FormData, location */
 
 (function (factory) {
@@ -28,16 +28,4 @@
     'use strict';
 
-    // Detect file input support, based on
-    // http://viljamis.com/blog/2012/file-upload-support-on-mobile/
-    $.support.fileInput = !(new RegExp(
-        // Handle devices which give false positives for the feature detection:
-        '(Android (1\\.[0156]|2\\.[01]))' +
-            '|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)' +
-            '|(w(eb)?OSBrowser)|(webOS)' +
-            '|(Kindle/(1\\.0|2\\.[05]|3\\.0))'
-    ).test(window.navigator.userAgent) ||
-        // Feature detection for all other devices:
-        $('<input type="file">').prop('disabled'));
-
     // The FileReader API is not actually used, but works as feature detection,
     // as e.g. Safari supports XHR file uploads via the FormData API,
@@ -45,8 +33,4 @@
     $.support.xhrFileUpload = !!(window.XMLHttpRequestUpload && window.FileReader);
     $.support.xhrFormDataFileUpload = !!window.FormData;
-
-    // Detect support for Blob slicing (required for chunked uploads):
-    $.support.blobSlice = window.Blob && (Blob.prototype.slice ||
-        Blob.prototype.webkitSlice || Blob.prototype.mozSlice);
 
     // The fileupload widget listens for change events on file input fields defined
@@ -161,14 +145,11 @@
             // widget (via file input selection, drag & drop, paste or add API call).
             // If the singleFileUploads option is enabled, this callback will be
-            // called once for each file in the selection for XHR file uploads, else
+            // called once for each file in the selection for XHR file uplaods, else
             // once for each file selection.
-            //
             // The upload starts when the submit method is invoked on the data parameter.
             // The data object contains a files property holding the added files
-            // and allows you to override plugin options as well as define ajax settings.
-            //
+            // and allows to override plugin options as well as define ajax settings.
             // Listeners for this callback can also be bound the following way:
             // .bind('fileuploadadd', func);
-            //
             // data.submit() returns a Promise object and allows to attach additional
             // handlers using jQuery's Deferred callbacks:
@@ -252,9 +233,4 @@
             'forceIframeTransport'
         ],
-
-        _blobSlice: $.support.blobSlice && function () {
-            var slice = this.slice || this.webkitSlice || this.mozSlice;
-            return slice.apply(this, arguments);
-        },
 
         _BitrateTimer: function () {
@@ -404,9 +380,7 @@
                 options.headers['Content-Range'] = options.contentRange;
             }
-            if (!multipart || options.blob || !this._isInstanceOf('File', file)) {
+            if (!multipart) {
                 options.headers['Content-Disposition'] = 'attachment; filename="' +
                     encodeURI(file.name) + '"';
-            }
-            if (!multipart) {
                 options.contentType = file.type;
                 options.data = options.blob || file;
@@ -441,4 +415,6 @@
                     }
                     if (options.blob) {
+                        options.headers['Content-Disposition'] = 'attachment; filename="' +
+                            encodeURI(file.name) + '"';
                         formData.append(paramName, options.blob, file.name);
                     } else {
@@ -464,5 +440,4 @@
 
         _initIframeSettings: function (options) {
-            var targetHost = $('<a></a>').prop('href', options.url).prop('host');
             // Setting the dataType to iframe enables the iframe transport:
             options.dataType = 'iframe ' + (options.dataType || '');
@@ -470,5 +445,6 @@
             options.formData = this._getFormData(options);
             // Add redirect url to form data on cross-domain uploads:
-            if (options.redirect && targetHost && targetHost !== location.host) {
+            if (options.redirect && $('<a></a>').prop('href', options.url)
+                    .prop('host') !== location.host) {
                 options.formData.push({
                     name: options.redirectParamName || 'redirect',
@@ -652,11 +628,10 @@
         // upload requests:
         _chunkedUpload: function (options, testOnly) {
-            options.uploadedBytes = options.uploadedBytes || 0;
             var that = this,
                 file = options.files[0],
                 fs = file.size,
-                ub = options.uploadedBytes,
+                ub = options.uploadedBytes = options.uploadedBytes || 0,
                 mcs = options.maxChunkSize || fs,
-                slice = this._blobSlice,
+                slice = file.slice || file.webkitSlice || file.mozSlice,
                 dfd = $.Deferred(),
                 promise = dfd.promise(),
@@ -876,6 +851,5 @@
                     pipe = slot.pipe(send);
                 } else {
-                    this._sequence = this._sequence.pipe(send, send);
-                    pipe = this._sequence;
+                    pipe = (this._sequence = this._sequence.pipe(send, send));
                 }
                 // Return the piped Promise object, enhanced with an abort method,
@@ -1127,7 +1101,7 @@
 
         _onDrop: function (e) {
-            e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;
             var that = this,
-                dataTransfer = e.dataTransfer,
+                dataTransfer = e.dataTransfer = e.originalEvent &&
+                    e.originalEvent.dataTransfer,
                 data = {};
             if (dataTransfer && dataTransfer.files && dataTransfer.files.length) {
@@ -1143,6 +1117,6 @@
 
         _onDragOver: function (e) {
-            e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;
-            var dataTransfer = e.dataTransfer;
+            var dataTransfer = e.dataTransfer = e.originalEvent &&
+                e.originalEvent.dataTransfer;
             if (dataTransfer) {
                 if (this._trigger('dragover', e) === false) {
@@ -1166,9 +1140,7 @@
                 });
             }
-            if ($.support.fileInput) {
-                this._on(this.options.fileInput, {
-                    change: this._onChange
-                });
-            }
+            this._on(this.options.fileInput, {
+                change: this._onChange
+            });
         },
 
@@ -1304,8 +1276,4 @@
                                 return;
                             }
-                            if (!files.length) {
-                                dfd.reject();
-                                return;
-                            }
                             data.files = files;
                             jqXHR = that._onSend(null, data).then(
Index: admin/js/jsUpload/jquery.iframe-transport.js
===================================================================
--- admin/js/jsUpload/jquery.iframe-transport.js	(revision 1320)
+++ admin/js/jsUpload/jquery.iframe-transport.js	(revision 1144)
@@ -1,4 +1,4 @@
 /*
- * jQuery Iframe Transport Plugin 1.7
+ * jQuery Iframe Transport Plugin 1.6.2
  * https://github.com/blueimp/jQuery-File-Upload
  *
@@ -171,13 +171,5 @@
 
     // The iframe transport returns the iframe content document as response.
-    // The following adds converters from iframe to text, json, html, xml
-    // and script.
-    // Please note that the Content-Type for JSON responses has to be text/plain
-    // or text/html, if the browser doesn't include application/json in the
-    // Accept header, else IE will show a download dialog.
-    // The Content-Type for XML responses on the other hand has to be always
-    // application/xml or text/xml, so IE properly parses the XML response.
-    // See also
-    // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation
+    // The following adds converters from iframe to text, json, html, and script:
     $.ajaxSetup({
         converters: {
@@ -191,10 +183,4 @@
                 return iframe && $(iframe[0].body).html();
             },
-            'iframe xml': function (iframe) {
-                var xmlDoc = iframe && iframe[0];
-                return xmlDoc && $.isXMLDoc(xmlDoc) ? xmlDoc :
-                        $.parseXML((xmlDoc.XMLDocument && xmlDoc.XMLDocument.xml) ||
-                            $(xmlDoc.body).html());
-            },
             'iframe script': function (iframe) {
                 return iframe && $.globalEval($(iframe[0].body).text());
Index: dmin/js/jsUpload/template-download.js
===================================================================
--- admin/js/jsUpload/template-download.js	(revision 1461)
+++ 	(revision )
@@ -1,1 +1,0 @@
-var template_download = tmpl('{% for (var i=0, file; file=o.files[i]; i++) { %}<li class="template-download fade"><div class="upload-file"><div class="upload-fileinfo"><span class="upload-filename">{%=file.name%}</span><span class="upload-filesize">({%=o.formatFileSize(file.size)%})</span><span class="upload-filemsg{% if (file.error) { %} upload-error{% } %}">{% if (file.error) { %}'+dotclear.jsUpload.msg.error+' {%=file.error%}{% } else { %}'+dotclear.jsUpload.msg.file_successfully_uploaded+'{% } %}</span></div><div class="upload-progress">{% if (!file.error) { %}<div class="bar" style="width:100%;">100%</div>{% } %}</div></li>{% } %}');
Index: dmin/js/jsUpload/template-upload.js
===================================================================
--- admin/js/jsUpload/template-upload.js	(revision 1461)
+++ 	(revision )
@@ -1,1 +1,0 @@
-var template_upload = tmpl('{% for (var i=0, file; file=o.files[i]; i++) { %}<li class="template-upload fade"><div class="upload-file"><div class="upload-fileinfo"><span class="upload-filename">{%=file.name%}</span><span class="upload-filesize">({%=o.formatFileSize(file.size)%})</span><span class="upload-filecancel cancel">'+dotclear.jsUpload.msg.cancel+'</span>{% if (!o.files.error && !i && !o.options.autoUpload) { %}<input type="submit" class="button start"  value="'+dotclear.jsUpload.msg.send+'"/>{% } %}<span class="upload-filemsg"></span></div>{% if (!o.files.error) { %}<div class="upload-progress progress progress-success progress-striped active"><div class="bar" style="width:0%;"></div></div>{% } %}</li>{% } %}');
Index: admin/js/prelude.js
===================================================================
--- admin/js/prelude.js	(revision 1446)
+++ admin/js/prelude.js	(revision 447)
@@ -6,6 +6,5 @@
 			aElts[i].className="hidden";
 			aElts[i].onfocus=function() {
-				$('#prelude a').removeClass('hidden');
-				$('#main-menu').css('padding-top', '4.5em');
+				this.className="";
 			}
 		}
@@ -20,7 +19,2 @@
 }
 addLoadEvent(aFocus);
-
-// init
-$(function() {
-	$('#main-menu').css('padding-top', '.5em');
-});
Index: admin/langs.php
===================================================================
--- admin/langs.php	(revision 1499)
+++ admin/langs.php	(revision 1179)
@@ -129,11 +129,9 @@
 -------------------------------------------------------- */
 dcPage::open(__('Languages management'),
-	dcPage::jsLoad('js/_langs.js'),
-	dcPage::breadcrumb(
-	array(
-		__('System') => '',
-		'<span class="page-title">'.__('Languages management').'</span>' => ''
-	))
+	dcPage::jsLoad('js/_langs.js')
 );
+
+echo
+'<h2 class="page-title">'.__('Languages management').'</h2>';
 
 if (!empty($_GET['removed'])) {
@@ -222,15 +220,16 @@
 	
 	echo
-	'<form method="post" action="langs.php" enctype="multipart/form-data" class="fieldset">'.
-	'<h4>'.__('Available languages').'</h4>'.
+	'<form method="post" action="langs.php" enctype="multipart/form-data">'.
+	'<fieldset>'.
+	'<legend>'.__('Available languages').'</legend>'.
 	'<p>'.sprintf(__('You can download and install a additional language directly from Dotclear.net. '.
 	'Proposed languages are based on your version: %s.'),'<strong>'.DC_VERSION.'</strong>').'</p>'.
-	'<p class="field"><label for="pkg_url" class="classic">'.__('Language:').'</label> '.
-	form::combo(array('pkg_url'),$dc_langs_combo).'</p>'.
-	'<p class="field"><label for="your_pwd1" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label> '.
-	form::password(array('your_pwd','your_pwd1'),20,255).'</p>'.
-	'<p><input type="submit" value="'.__('Install language').'" />'.
+	'<p class="field"><label for="pkg_url" class="classic">'.__('Language:').' '.
+	form::combo(array('pkg_url'),$dc_langs_combo).'</label></p>'.
+	'<p class="field"><label for="your_pwd1" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').' '.
+	form::password(array('your_pwd','your_pwd1'),20,255).'</label></p>'.
+	'<input type="submit" value="'.__('Install language').'" />'.
 	$core->formNonce().
-	'</p>'.
+	'</fieldset>'.
 	'</form>';
 }
@@ -240,14 +239,15 @@
 	# 'Upload language pack' form
 	echo
-	'<form method="post" action="langs.php" enctype="multipart/form-data" class="fieldset">'.
-	'<h4>'.__('Upload a zip file').'</h4>'.
+	'<form method="post" action="langs.php" enctype="multipart/form-data">'.
+	'<fieldset>'.
+	'<legend>'.__('Upload a zip file').'</legend>'.
 	'<p>'.__('You can install languages by uploading zip files.').'</p>'.
-	'<p class="field"><label for="pkg_file" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Language zip file:').'</label> '.
-	'<input type="file" id="pkg_file" name="pkg_file" /></p>'.
-	'<p class="field"><label for="your_pwd2" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label> '.
-	form::password(array('your_pwd','your_pwd2'),20,255).'</p>'.
-	'<p><input type="submit" name="upload_pkg" value="'.__('Upload language').'" />'.
+	'<p class="field"><label for="pkg_file" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Language zip file:').' '.
+	'<input type="file" id="pkg_file" name="pkg_file" /></label></p>'.
+	'<p class="field"><label for="your_pwd2" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').' '.
+	form::password(array('your_pwd','your_pwd2'),20,255).'</label></p>'.
+	'<input type="submit" name="upload_pkg" value="'.__('Upload language').'" />'.
 	$core->formNonce().
-	'</p>'.
+	'</fieldset>'.
 	'</form>';
 }
Index: admin/media.php
===================================================================
--- admin/media.php	(revision 1499)
+++ admin/media.php	(revision 1234)
@@ -203,12 +203,7 @@
 if ($dir && !empty($_GET['remove']) && empty($_GET['noconfirm']))
 {
-	call_user_func($open_f,__('Media manager'),'',
-		dcPage::breadcrumb(
-			array(
-				html::escapeHTML($core->blog->name) => '',
-				__('Media manager') => '',
-				'<span class="page-title">'.__('confirm removal').'</span>' => ''
-			),!$popup)
-	);
+	call_user_func($open_f,__('Media manager'));
+	
+	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; '.__('Media manager').' &rsaquo; <span class="page-title">'.__('confirm removal').'</span></h2>';
 	
 	echo
@@ -232,33 +227,7 @@
 $user_ui_enhanceduploader = $core->auth->user_prefs->interface->enhanceduploader;
 
-
-if (!isset($core->media)) {
-	$breadcrumb = dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			'<span class="page-title">'.__('Media manager').'</span>' => ''
-		),!$popup);
-} else {
-	$breadcrumb_media = $core->media->breadCrumb(html::escapeURL($page_url).'&amp;d=%s','<span class="page-title">%s</span>');
-	if ($breadcrumb_media == '') {
-		$breadcrumb = dcPage::breadcrumb(
-			array(
-				html::escapeHTML($core->blog->name) => '',
-				'<span class="page-title">'.__('Media manager').'</span>' => ''
-			),!$popup);
-	} else {
-		$breadcrumb = dcPage::breadcrumb(
-			array(
-				html::escapeHTML($core->blog->name) => '',
-				__('Media manager') => html::escapeURL($page_url.'&d='),
-				$breadcrumb_media => ''
-			),!$popup);
-	}
-}
-
 call_user_func($open_f,__('Media manager'),
 	dcPage::jsLoad('js/_media.js').
-	($core_media_writable ? dcPage::jsUpload(array('d='.$d)) : ''),
-	$breadcrumb
+	($core_media_writable ? dcPage::jsUpload(array('d='.$d)) : '')
 	);
 
@@ -285,4 +254,16 @@
 if (!empty($_GET['unzipok'])) {
 	dcPage::message(__('Zip file has been successfully extracted.'));
+}
+
+echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; ';
+if (!isset($core->media)) {
+	echo '<span class="page-title">'.__('Media manager').'</span></h2>';
+} else {
+	$breadcrumb = $core->media->breadCrumb(html::escapeURL($page_url).'&amp;d=%s','<span class="page-title">%s</span>');
+	if ($breadcrumb == '') {
+		echo '<span class="page-title">'.__('Media manager').'</span></h2>';
+	} else {
+		echo '<a href="'.html::escapeURL($page_url.'&d=').'">'.__('Media manager').'</a>'.' / '.$breadcrumb.'</h2>';
+	}
 }
 
@@ -317,6 +298,6 @@
 	echo
 	'<form action="media.php" method="get">'.
-	'<p><label for="file_sort" class="classic">'.__('Sort files:').'</label> '.
-	form::combo('file_sort',$sort_combo,$file_sort).
+	'<p><label for="file_sort" class="classic">'.__('Sort files:').' '.
+	form::combo('file_sort',$sort_combo,$file_sort).'</label>'.
 	form::hidden(array('popup'),$popup).
 	form::hidden(array('post_id'),$post_id).
@@ -324,5 +305,5 @@
 	'</form>'.
 	
-	'<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+	'<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 	
 	for ($i=$pager->index_start, $j=0; $i<=$pager->index_end; $i++, $j++)
@@ -332,5 +313,5 @@
 	
 	echo
-	'<p class="clear pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+	'<p class="clear">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 }
 if (!isset($pager)) {
@@ -354,11 +335,10 @@
 
 	echo
-	'<div class="fieldset">'.
-	'<h3>'.__('Add files').'</h3>'.
+	'<form id="fileupload" action="'.html::escapeURL($page_url).'" method="POST" enctype="multipart/form-data">'.
+	'<fieldset id="add-file-f"><legend>'.__('Add files').'</legend>'.
 	'<p>'.__('Please take care to publish media that you own and that are not protected by copyright.').'</p>'.
-	' <form id="fileupload" action="'.html::escapeURL($page_url).'" method="post" enctype="multipart/form-data" aria-disabled="false">'.
-	'<p>'.form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE).
-	$core->formNonce().'</p>'.
-	'<div class="fileupload-ctrl"><p class="queue-message"></p><ul class="files"></ul></div>';
+	form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE).
+	$core->formNonce().
+	'<div class="fileupload-ctrl"><div class="files"></div></div>';
 
 	echo
@@ -367,12 +347,12 @@
 	echo
 	'<p class="max-sier form-note info">&nbsp;'.__('Maximum file size allowed:').' '.files::size(DC_MAX_UPLOAD_SIZE).'</p>'.
-	'<p><label for="upfile">'.'<span class="add-label one-file">'.__('Choose file').'</span>'.'</label>'.
+	'<label for="upfile">'.'<span class="add-label one-file">'.__('Choose file').'</span>'.'</label>'.
 	'<button class="button add">'.__('Choose files').'</button>'.
-	'<input type="file" id="upfile" name="upfile[]"'.($user_ui_enhanceduploader?' multiple="mutiple"':'').' data-url="'.html::escapeURL($page_url).'" /></p>';
-
-	echo
-	'<p class="one-file"><label for="upfiletitle">'.__('Title:').'</label>'.form::field(array('upfiletitle','upfiletitle'),35,255).'</p>'.
-	'<p class="one-file"><label for="upfilepriv" class="classic">'.__('Private').'</label> '.
-	form::checkbox(array('upfilepriv','upfilepriv'),1).'</p>';
+	'<input type="file" id="upfile" name="upfile[]"'.($user_ui_enhanceduploader?' multiple="mutiple"':'').' data-url="'.html::escapeURL($page_url).'" />';
+
+	echo
+	'<p class="one-file"><label for="upfiletitle">'.__('Title:').form::field(array('upfiletitle','upfiletitle'),35,255).'</label></p>'.
+	'<p class="one-file"><label for="upfilepriv" class="classic">'.form::checkbox(array('upfilepriv','upfilepriv'),1).' '.
+	__('Private').'</label></p>';
 
 	if (!$user_ui_enhanceduploader) {
@@ -383,25 +363,26 @@
 
 	echo
-	'<p><button class="button clean">'.__('Refresh').'</button>'.
+	'<button class="button clean">'.__('Refresh').'</button>'.
 	'<input class="button cancel one-file" type="reset" value="'.__('Clear all').'"/>'.
-	'<input class="button start" type="submit" value="'.__('Upload').'"/></p>'.
+	'<input class="button start" type="submit" value="'.__('Upload').'"/>'.
 	'</div>';
 
 	echo
-	'<p>'.form::hidden(array('d'),$d).'</p>'.
+	form::hidden(array('d'),$d).
+	'</fieldset>'.
 	'</form>'.
-	'</div></div>';
-
+	'</div>';
+	
 	echo
 	'<div class="col">'.
-	'<form class="clear fieldset" action="'.html::escapeURL($page_url).'" method="post">'.
-	'<div id="new-dir-f">'.
-	'<h3>'.__('New directory').'</h3>'.
+	'<form class="clear" action="'.html::escapeURL($page_url).'" method="post">'.
+	'<fieldset id="new-dir-f">'.
+	'<legend>'.__('New directory').'</legend>'.
 	$core->formNonce().
-	'<p><label for="newdir">'.__('Directory Name:').'</label>'.
-	form::field(array('newdir','newdir'),35,255).'</p>'.
+	'<p><label for="newdir">'.__('Directory Name:').
+	form::field(array('newdir','newdir'),35,255).'</label></p>'.
 	'<p><input type="submit" value="'.__('Create').'" />'.
 	form::hidden(array('d'),html::escapeHTML($d)).'</p>'.
-	'</div>'.
+	'</fieldset>'.
 	'</form></div>';
 	
@@ -447,7 +428,9 @@
 	$class = 'media-item media-col-'.($i%2);
 	
+	$alt = (!$f->d ? sprintf(__('Media details of %s'),$fname) : 
+		sprintf(__('Go to %s folder'),($fname == '..' ? __('parent') : $fname)));
 	$res =
 	'<div class="'.$class.'"><a class="media-icon media-link" href="'.$link.'">'.
-	'<img src="'.$f->media_icon.'" alt="" /></a>'.
+	'<img src="'.$f->media_icon.'" alt="'.$alt.'" /></a>'.
 	'<ul>'.
 	'<li><a class="media-link" href="'.$link.'">'.$fname.'</a></li>';
Index: admin/media_item.php
===================================================================
--- admin/media_item.php	(revision 1499)
+++ admin/media_item.php	(revision 1179)
@@ -175,11 +175,5 @@
 	$starting_scripts.
 	dcPage::jsDatePicker().
-	dcPage::jsPageTabs($tab),
-	dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			__('Media manager') => html::escapeURL($media_page_url),
-			$core->media->breadCrumb(html::escapeURL($media_page_url).'&amp;d=%s').'<span class="page-title">'.$file->basename.'</span>' => ''
-		),!$popup)
+	dcPage::jsPageTabs($tab)
 );
 
@@ -195,4 +189,8 @@
 	dcPage::message(__('Thumbnails have been successfully updated.'));
 }
+
+echo '<h2><a href="'.html::escapeURL($media_page_url).'">'.__('Media manager').'</a>'.
+' / '.$core->media->breadCrumb(html::escapeURL($media_page_url).'&amp;d=%s').
+'<span class="page-title">'.$file->basename.'</span></h2>';
 
 # Insertion popup
@@ -348,6 +346,5 @@
 
 echo
-'<div id="media-details">'.
-'<div class="near-icon">';
+'<div id="media-details">';
 
 if ($file->media_image)
@@ -358,4 +355,14 @@
 		$thumb_size = 's';
 	}
+	
+	echo '<p>'.__('Available sizes:').' ';
+	foreach (array_reverse($file->media_thumb) as $s => $v)
+	{
+		$strong_link = ($s == $thumb_size) ? '<strong>%s</strong>' : '%s';
+		printf($strong_link,'<a href="'.html::escapeURL($page_url).
+		'&amp;id='.$id.'&amp;size='.$s.'&amp;tab=media-details-tab">'.$core->media->thumb_sizes[$s][2].'</a> | ');
+	}
+	echo '<a href="'.html::escapeURL($page_url).'&amp;id='.$id.'&amp;size=o&amp;tab=media-details-tab">'.__('original').'</a>';
+	echo '</p>';
 	
 	if (isset($file->media_thumb[$thumb_size])) {
@@ -367,14 +374,4 @@
 		echo '<p id="media-original-image"'.$class.'><img src="'.$file->file_url.'?'.time()*rand().'" alt="" /></p>';
 	}
-	
-	echo '<p>'.__('Available sizes:').' ';
-	foreach (array_reverse($file->media_thumb) as $s => $v)
-	{
-		$strong_link = ($s == $thumb_size) ? '<strong>%s</strong>' : '%s';
-		printf($strong_link,'<a href="'.html::escapeURL($page_url).
-		'&amp;id='.$id.'&amp;size='.$s.'&amp;tab=media-details-tab">'.$core->media->thumb_sizes[$s][2].'</a> | ');
-	}
-	echo '<a href="'.html::escapeURL($page_url).'&amp;id='.$id.'&amp;size=o&amp;tab=media-details-tab">'.__('original').'</a>';
-	echo '</p>';
 }
 
@@ -401,5 +398,5 @@
 {
 	echo
-	'<p><strong><a class="button" href="'.html::escapeHTML($page_url).'&amp;id='.$id.'&amp;find_posts=1&amp;tab=media-details-tab">'.
+	'<p><strong><a href="'.html::escapeHTML($page_url).'&amp;id='.$id.'&amp;find_posts=1&amp;tab=media-details-tab">'.
 	__('Show entries containing this media').'</a></strong></p>';
 }
@@ -487,8 +484,4 @@
 }
 
-echo '</div>';
-
-echo '<h3>'.__('Updates and modifications').'</h3>';
-
 if ($file->editable && $core_media_writable)
 {
@@ -496,11 +489,11 @@
 	{
 		echo
-		'<form class="clear fieldset" action="'.html::escapeURL($page_url).'" method="post">'.
-		'<h4>'.__('Update thumbnails').'</h4>'.
+		'<form class="clear" action="'.html::escapeURL($page_url).'" method="post">'.
+		'<fieldset><legend>'.__('Update thumbnails').'</legend>'.
 		'<p>'.__('This will create or update thumbnails for this image.').'</p>'.
 		'<p><input type="submit" name="thumbs" value="'.__('Update thumbnails').'" />'.
 		form::hidden(array('id'),$id).
 		$core->formNonce().'</p>'.
-		'</form>';
+		'</fieldset></form>';
 	}
 	
@@ -513,6 +506,6 @@
 		
 		echo
-		'<form class="clear fieldset" id="file-unzip" action="'.html::escapeURL($page_url).'" method="post">'.
-		'<h4>'.__('Extract archive').'</h4>'.
+		'<form class="clear" id="file-unzip" action="'.html::escapeURL($page_url).'" method="post">'.
+		'<fieldset><legend>'.__('Extract archive').'</legend>'.
 		'<ul>'.
 		'<li><strong>'.__('Extract in a new directory').'</strong> : '.
@@ -521,33 +514,33 @@
 		__('This will extract archive in current directory and will overwrite existing files or directory.').'</li>'.
 		'</ul>'.
-		'<p><label for="inflate_mode" class="classic">'.__('Extract mode:').'</label> '.
-		form::combo('inflate_mode',$inflate_combo,'new').
+		'<p><label for="inflate_mode" class="classic">'.__('Extract mode:').' '.
+		form::combo('inflate_mode',$inflate_combo,'new').'</label> '.
 		'<input type="submit" name="unzip" value="'.__('Extract').'" />'.
 		form::hidden(array('id'),$id).
 		$core->formNonce().'</p>'.
-		'</form>';
+		'</fieldset></form>';
 	}
 	
 	echo
-	'<form class="clear fieldset" action="'.html::escapeURL($page_url).'" method="post">'.
-	'<h4>'.__('Change media properties').'</h4>'.
-	'<p><label for="media_file">'.__('File name:').'</label>'.
-	form::field('media_file',30,255,html::escapeHTML($file->basename)).'</p>'.
-	'<p><label for="media_title">'.__('File title:').'</label>'.
-	form::field('media_title',30,255,html::escapeHTML($file->media_title)).'</p>'.
-	'<p><label for="media_dt">'.__('File date:').'</label>'.
-	form::field('media_dt',16,16,html::escapeHTML($file->media_dtstr)).'</p>'.
+	'<form class="clear" action="'.html::escapeURL($page_url).'" method="post">'.
+	'<fieldset><legend>'.__('Change media properties').'</legend>'.
+	'<p><label for="media_file">'.__('File name:').
+	form::field('media_file',30,255,html::escapeHTML($file->basename)).'</label></p>'.
+	'<p><label for="media_title">'.__('File title:').
+	form::field('media_title',30,255,html::escapeHTML($file->media_title)).'</label></p>'.
+	'<p><label for="media_dt">'.__('File date:').
+	form::field('media_dt',16,16,html::escapeHTML($file->media_dtstr)).'</label></p>'.
 	'<p><label for="media_private" class="classic">'.form::checkbox('media_private',1,$file->media_priv).' '.
 	__('Private').'</label></p>'.
-	'<p><label for="media_path">'.__('New directory:').'</label>'.
-	form::combo('media_path',$dirs_combo,dirname($file->relname)).'</p>'.
+	'<p><label for="media_path">'.__('New directory:').
+	form::combo('media_path',$dirs_combo,dirname($file->relname)).'</label></p>'.
 	'<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
 	form::hidden(array('id'),$id).
 	$core->formNonce().'</p>'.
-	'</form>';
+	'</fieldset></form>';
 	
 	echo
-	'<form class="clear fieldset" action="'.html::escapeURL($page_url).'" method="post" enctype="multipart/form-data">'.
-	'<h4>'.__('Change file').'</h4>'.
+	'<form class="clear" action="'.html::escapeURL($page_url).'" method="post" enctype="multipart/form-data">'.
+	'<fieldset><legend>'.__('Change file').'</legend>'.
 	'<div>'.form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE).'</div>'.
 	'<p><label for="upfile">'.__('Choose a file:').
@@ -558,5 +551,5 @@
 	form::hidden(array('id'),$id).
 	$core->formNonce().'</p>'.
-	'</form>';
+	'</fieldset></form>';
 
 	if ($file->del) {
Index: admin/plugin.php
===================================================================
--- admin/plugin.php	(revision 1358)
+++ admin/plugin.php	(revision 1179)
@@ -81,11 +81,7 @@
 else
 {
-	call_user_func($open_f,__('Plugin not found'),'',
-		dcPage::breadcrumb(
-			array(
-				__('System') => '',
-				'<span class="page-title">'.__('Plugin not found').'</span>' => ''
-			))
-	);
+	call_user_func($open_f,__('Plugin not found'));
+	
+	echo '<h2 class="page-title">'.__('Plugin not found').'</h2>';
 	
 	echo '<p>'.__('The plugin you reached does not exist or does not have an admin page.').'</p>';
Index: admin/plugins.php
===================================================================
--- admin/plugins.php	(revision 1499)
+++ admin/plugins.php	(revision 1271)
@@ -191,11 +191,9 @@
 dcPage::open(__('Plugins management'),
 	dcPage::jsLoad('js/_plugins.js').
-	dcPage::jsPageTabs($default_tab),
-	dcPage::breadcrumb(
-		array(
-			__('System') => '',
-			'<span class="page-title">'.__('Plugins management').'</span>' => ''
-		))
+	dcPage::jsPageTabs($default_tab)
 );
+
+echo
+'<h2 class="page-title">'.__('Plugins management').'</h2>';
 
 if (!empty($_GET['removed'])) {
@@ -235,9 +233,10 @@
 		'<a href="plugin.php?p=daInstaller">'.__('DotAddict.org Installer').'</a>'));
 
+echo '<p>';
 if ($is_writable) {
-	echo '<p>'.__('To install or upgrade a plugin you generally just need to upload it '.
+	echo __('To install or upgrade a plugin you generally just need to upload it '.
 	'in "Install or upgrade a plugin" section.');
 } else {
-	echo '<p>'.__('To install or upgrade a plugin you just need to extract it in your plugins directory.');
+	echo __('To install or upgrade a plugin you just need to extract it in your plugins directory.');
 }
 echo '</p>';
@@ -354,23 +353,25 @@
 	# 'Upload plugin' form
 	echo
-	'<form method="post" action="plugins.php" id="uploadpkg" enctype="multipart/form-data" class="fieldset">'.
-	'<h3>'.__('Upload a zip file').'</h3>'.
-	'<p class="field"><label for="pkg_file" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Plugin zip file:').'</label> '.
-	'<input type="file" id="pkg_file" name="pkg_file" /></p>'.
-	'<p class="field"><label for="your_pwd1" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label> '.
-	form::password(array('your_pwd','your_pwd1'),20,255).'</p>'.
-	'<p><input type="submit" name="upload_pkg" value="'.__('Upload plugin').'" />'.
+	'<form method="post" action="plugins.php" id="uploadpkg" enctype="multipart/form-data">'.
+	'<fieldset>'.
+	'<legend>'.__('Upload a zip file').'</legend>'.
+	'<p class="field"><label for="pkg_file" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Plugin zip file:').' '.
+	'<input type="file" id="pkg_file" name="pkg_file" /></label></p>'.
+	'<p class="field"><label for="your_pwd1" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').' '.
+	form::password(array('your_pwd','your_pwd1'),20,255).'</label></p>'.
+	'<input type="submit" name="upload_pkg" value="'.__('Upload plugin').'" />'.
 	$core->formNonce().
-	'</p>'.
+	'</fieldset>'.
 	'</form>';
 	
 	# 'Fetch plugin' form
 	echo
-	'<form method="post" action="plugins.php" id="fetchpkg" class="fieldset">'.
-	'<h3>'.__('Download a zip file').'</h3>'.
-	'<p class="field"><label for="pkg_url" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Plugin zip file URL:').'</label> '.
-	form::field(array('pkg_url','pkg_url'),40,255).'</p>'.
-	'<p class="field"><label for="your_pwd2" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label> '.
-	form::password(array('your_pwd','your_pwd2'),20,255).'</p>'.
+	'<form method="post" action="plugins.php" id="fetchpkg">'.
+	'<fieldset>'.
+	'<legend>'.__('Download a zip file').'</legend>'.
+	'<p class="field"><label for="pkg_url" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Plugin zip file URL:').' '.
+	form::field(array('pkg_url','pkg_url'),40,255).'</label></p>'.
+	'<p class="field"><label for="your_pwd2" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').' '.
+	form::password(array('your_pwd','your_pwd2'),20,255).'</label></p>'.
 	'<input type="submit" name="fetch_pkg" value="'.__('Download plugin').'" />'.
 	$core->formNonce().
@@ -387,4 +388,9 @@
 echo '</div>';
 
+if ($core->plugins->moduleExists('daInstaller')) {
+	echo '<p><a href="plugin.php?p=daInstaller" class="multi-part">'.__('DotAddict.org Installer').'</a></p>';
+}
+
+
 # --BEHAVIOR-- pluginsToolsTabs
 $core->callBehavior('pluginsToolsTabs',$core);
Index: admin/popup_link.php
===================================================================
--- admin/popup_link.php	(revision 1399)
+++ admin/popup_link.php	(revision 1179)
@@ -40,11 +40,11 @@
 echo
 '<form id="link-insert-form" action="#" method="get">'.
-'<p><label class="required" for="href"><abbr title="'.__('Required field').'">*</abbr> '.__('Link URL:').'</label> '.
-form::field('href',35,512,html::escapeHTML($href)).'</p>'.
-'<p><label for="title">'.__('Link title:').'</label> '. 
-form::field('title',35,512,html::escapeHTML($title)).'</p>'. 
-'<p><label for="hreflang">'.__('Link language:').'</label> '.
+'<p><label class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Link URL:').' '.
+form::field('href',35,512,html::escapeHTML($href)).'</label></p>'.
+'<p><label>'.__('Link title:').' '. 
+form::field('title',35,512,html::escapeHTML($title)).'</label></p>'. 
+'<p><label>'.__('Link language:').' '.
 form::combo('hreflang',$lang_combo,$hreflang).
-'</p>'.
+'</label></p>'.
 
 '</form>'.
Index: admin/popup_posts.php
===================================================================
--- admin/popup_posts.php	(revision 1399)
+++ admin/popup_posts.php	(revision 1179)
@@ -53,14 +53,14 @@
 
 echo '<form action="popup_posts.php" method="post">'.
-	'<p><label for"type" class="classic">'.__('Entry type:').'</label> '.form::combo('type',$type_combo,$type).''.
-	$core->formNonce().'</p>'.
+	'<p><label for"type" class="classic">'.__('Entry type:').' '.form::combo('type',$type_combo,$type).'</label></p>'.
+	$core->formNonce().
 	'<noscript><div><input type="submit" value="'.__('Ok').'" /></div></noscript>'.
 	'</form>';
 
 echo '<form action="popup_posts.php" method="get">'.
-	'<p><label for="q" class="classic">'.__('Search entry:').'</label> '.form::field('q',30,255,html::escapeHTML($q)).
-	' <input type="submit" value="'.__('Search').'" />'.
+	'<p><label for="q" class="classic">'.__('Search entry:').' '.form::field('q',30,255,html::escapeHTML($q)).'</label> '.
+	' <input type="submit" value="'.__('Search').'" /></p>'.
 	form::hidden('type',html::escapeHTML($type)).
-	'</p></form>';
+	'</form>';
 
 try {
Index: admin/post.php
===================================================================
--- admin/post.php	(revision 1468)
+++ admin/post.php	(revision 1488)
@@ -50,16 +50,4 @@
 }
 
-# Getting categories
-$categories_combo = array('&nbsp;' => '');
-try {
-	$categories = $core->blog->getCategories(array('post_type'=>'post'));
-	while ($categories->fetch()) {
-		$categories_combo[] = new formSelectOption(
-			str_repeat('&nbsp;&nbsp;',$categories->level-1).($categories->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($categories->cat_title),
-			$categories->cat_id
-		);
-	}
-} catch (Exception $e) { }
-
 # Status combo
 foreach ($core->blog->getAllPostStatus() as $k => $v) {
@@ -94,6 +82,4 @@
 if (!empty($_REQUEST['id']))
 {
-	$page_title = __('Edit entry');
-	
 	$params['post_id'] = $_REQUEST['id'];
 	
@@ -125,4 +111,6 @@
 		$post_open_tb = (boolean) $post->post_open_tb;
 		
+		$page_title = __('Edit entry');
+		
 		$can_edit_post = $post->isEditable();
 		$can_delete= $post->isDeletable();
@@ -133,5 +121,5 @@
 		if ($next_rs !== null) {
 			$next_link = sprintf($post_link,$next_rs->post_id,
-				html::escapeHTML($next_rs->post_title),__('Next entry').'&nbsp;&#187;');
+				html::escapeHTML($next_rs->post_title),__('next entry').'&nbsp;&#187;');
 			$next_headlink = sprintf($post_headlink,'next',
 				html::escapeHTML($next_rs->post_title),$next_rs->post_id);
@@ -140,5 +128,5 @@
 		if ($prev_rs !== null) {
 			$prev_link = sprintf($post_link,$prev_rs->post_id,
-				html::escapeHTML($prev_rs->post_title),'&#171;&nbsp;'.__('Previous entry'));
+				html::escapeHTML($prev_rs->post_title),'&#171;&nbsp;'.__('previous entry'));
 			$prev_headlink = sprintf($post_headlink,'previous',
 				html::escapeHTML($prev_rs->post_title),$prev_rs->post_id);
@@ -326,28 +314,4 @@
 }
 
-if ($post_id) {
-	switch ($post_status) {
-		case 1:
-			$img_status = sprintf($img_status_pattern,__('Published'),'check-on.png');
-			break;
-		case 0:
-			$img_status = sprintf($img_status_pattern,__('Unpublished'),'check-off.png');
-			break;
-		case -1:
-			$img_status = sprintf($img_status_pattern,__('Scheduled'),'scheduled.png');
-			break;
-		case -2:
-			$img_status = sprintf($img_status_pattern,__('Pending'),'check-wrn.png');
-			break;
-		default:
-			$img_status = '';
-	}
-	$edit_entry_str = __('&ldquo;%s&rdquo;');
-	$page_title_edit = sprintf($edit_entry_str, html::escapeHTML($post_title)).' '.$img_status;
-} else {
-	$img_status = '';
-}
-
-
 dcPage::open($page_title.' - '.__('Entries'),
 	dcPage::jsDatePicker().
@@ -360,11 +324,5 @@
 	$core->callBehavior('adminPostHeaders').
 	dcPage::jsPageTabs($default_tab).
-	$next_headlink."\n".$prev_headlink,
-	dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			__('Entries') => 'posts.php',
-			'<span class="page-title">'.($post_id ? $page_title_edit : $page_title).'</span>' => ''
-		))
+	$next_headlink."\n".$prev_headlink
 );
 
@@ -396,12 +354,37 @@
 }
 
+echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; '.'<a href="posts.php">'.__('Entries').'</a> &rsaquo; <span class="page-title">';
+if ($post_id) {
+	switch ($post_status) {
+		case 1:
+			$img_status = sprintf($img_status_pattern,__('published'),'check-on.png');
+			break;
+		case 0:
+			$img_status = sprintf($img_status_pattern,__('unpublished'),'check-off.png');
+			break;
+		case -1:
+			$img_status = sprintf($img_status_pattern,__('scheduled'),'scheduled.png');
+			break;
+		case -2:
+			$img_status = sprintf($img_status_pattern,__('pending'),'check-wrn.png');
+			break;
+		default:
+			$img_status = '';
+	}
+	$edit_entry_str = __('Edit entry &ldquo;%s&rdquo;');
+	echo sprintf($edit_entry_str, html::escapeHTML($post_title)).' '.$img_status;
+} else {
+	echo $page_title;
+}
+echo	'</span></h2>';
+
 if ($post_id && $post->post_status == 1) {
-	echo '<p><a class="onblog_link" href="'.$post->getURL().'" onclick="window.open(this.href);return false;" title="'.$post_title.' ('.__('new window').')'.'">'.__('Go to this entry on the site').' <img src="images/outgoing-blue.png" alt="" /></a></p>';
+	echo '<p><a href="'.$post->getURL().'" onclick="window.open(this.href);return false;" title="'.$post_title.' ('.__('new window').')'.'">'.__('Go to this entry on the site').' <img src="images/outgoing-blue.png" alt="" /></a></p>';
 }
 if ($post_id)
 {
-	echo '<p class="nav_prevnext">';
+	echo '<p>';
 	if ($prev_link) { echo $prev_link; }
-	if ($next_link && $prev_link) { echo ' | '; }
+	if ($next_link && $prev_link) { echo ' - '; }
 	if ($next_link) { echo $next_link; }
 	
@@ -418,136 +401,37 @@
 	exit;
 }
+
 /* Post form if we can edit post
 -------------------------------------------------------- */
 if ($can_edit_post)
 {
-	$sidebar_items = new ArrayObject(array(
-		'status-box' => array(
-			'title' => __('Status'),
-			'items' => array(
-				'post_status' => 
-					'<p class="entry-status"><label for="post_status" class="ib">'.__('Entry status').' '.$img_status.'</label>'.
-					form::combo('post_status',$status_combo,$post_status,'maximal','',!$can_publish).
-					'</p>',
-				'post_dt' => 
-					'<p><label for="post_dt" class="ib">'.__('Publication date and hour').'</label>'.
-					form::field('post_dt',16,16,$post_dt,($bad_dt ? 'invalid' : '')).
-					'</p>',
-				'post_lang' =>
-					'<p><label for="post_lang" class="ib">'.__('Entry lang').'</label>'.
-					form::combo('post_lang',$lang_combo,$post_lang).
-					'</p>',
-				'post_format' =>
-					'<p><label for="post_format" class="ib">'.__('Text formating').'</label>'.
-					form::combo('post_format',$formaters_combo,$post_format,'maximal').
-					'</p>'.
-					'<p>'.($post_id && $post_format != 'xhtml' ? 
-					'<a id="convert-xhtml" class="button maximal" href="post.php?id='.$post_id.'&amp;xconv=1">'.
-					__('Convert to XHTML').'</a>' : '').'</p>')),
-		'metas-box' => array(
-			'title' => __('Ordering'),
-			'items' => array(
-				'post_selected' => 
-					'<p><label for="post_selected" class="classic">'.
-					form::checkbox('post_selected',1,$post_selected).' '.
-					__('Selected entry').'</label></p>',
-				'cat_id' =>
-					'<p><label for="cat_id" class="ib">'.__('Category').'</label>'.
-					form::combo('cat_id',$categories_combo,$cat_id,'maximal').
-					'</p>'.
-					($core->auth->check('categories', $core->blog->id) ?
-						'<div>'.
-						'<p id="new_cat">'.__('Add a new category').'</p>'.
-						'<p><label for="new_cat_title">'.__('Title:').' '.
-						form::field('new_cat_title',30,255,'','maximal').'</label></p>'.
-						'<p><label for="new_cat_parent">'.__('Parent:').' '.
-						form::combo('new_cat_parent',$categories_combo,'','maximal').
-						'</label></p>'.
-						'</div>'
-					: ''))),
-		'options-box' => array(
-			'title' => __('Options'),
-			'items' => array(
-				'post_open_comment' =>
-					'<p><label for="post_open_comment" class="classic">'.
-					form::checkbox('post_open_comment',1,$post_open_comment).' '.
-					__('Accept comments').'</label></p>'.
-					($core->blog->settings->system->allow_comments ? 
-						(isContributionAllowed($post_id,strtotime($post_dt),true) ? 
-							'' :
-							'<p class="form-note warn">'.
-							__('Warning: Comments are not more accepted for this entry.').'</p>') : 
-						'<p class="form-note warn">'.
-						__('Warning: Comments are not accepted on this blog.').'</p>'),
-				'post_open_tb' =>
-					'<p><label for="post_open_tb" class="classic">'.
-					form::checkbox('post_open_tb',1,$post_open_tb).' '.
-					__('Accept trackbacks').'</label></p>'.
-					($core->blog->settings->system->allow_trackbacks ? 
-						(isContributionAllowed($post_id,strtotime($post_dt),false) ? 
-							'' :
-							'<p class="form-note warn">'.
-							__('Warning: Trackbacks are not more accepted for this entry.').'</p>') : 
-						'<p class="form-note warn">'.__('Warning: Trackbacks are not accepted on this blog.').'</p>'),
-				'post_password' =>
-					'<p><label for="post_password" class="ib">'.__('Password').'</label>'.
-					form::field('post_password',10,32,html::escapeHTML($post_password),'maximal').
-					'</p>',
-				'post_url' =>
-					'<div class="lockable">'.
-					'<p><label for="post_url" class="ib">'.__('Edit basename').'</label>'.
-					form::field('post_url',10,255,html::escapeHTML($post_url),'maximal').
-					'</p>'.
-					'<p class="form-note warn">'.
-					__('Warning: If you set the URL manually, it may conflict with another entry.').
-					'</p></div>'
-	))));
-
-	$main_items = new ArrayObject(array(
-		"post_title" =>
-			'<p class="col">'.
-			'<label class="required no-margin"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label>'.
-			form::field('post_title',20,255,html::escapeHTML($post_title),'maximal').
-			'</p>',
-		
-		"post_excerpt" =>
-			'<p class="area" id="excerpt-area"><label for="post_excerpt">'.__('Excerpt:').'<span class="form-note">'.
-			__('Add an introduction to the post.').'</span></label> '.
-			form::textarea('post_excerpt',50,5,html::escapeHTML($post_excerpt)).
-			'</p>',
-		
-		"post_content" =>
-			'<p class="area"><label class="required" '.
-			'for="post_content"><abbr title="'.__('Required field').'">*</abbr> '.__('Content:').'</label> '.
-			form::textarea('post_content',50,$core->auth->getOption('edit_size'),html::escapeHTML($post_content)).
-			'</p>',
-		
-		"post_notes" =>
-			'<p class="area" id="notes-area"><label for="post_notes">'.__('Personal notes:').'<span class="form-note">'.
-			__('Add unpublished notes.').'</span></label>'.
-			form::textarea('post_notes',50,5,html::escapeHTML($post_notes)).
-			'</p>'
-		)
-	);
-	
-	# --BEHAVIOR-- adminPostFormItems
-	$core->callBehavior('adminPostFormItems',$main_items,$sidebar_items, isset($post) ? $post : null);
-
-	echo '<div class="multi-part" title="'.($post_id ? __('Edit entry') : __('New entry')).'" id="edit-entry">';
+	echo '<div class="multi-part" title="'.__('Edit entry').'" id="edit-entry">';
 	echo '<form action="post.php" method="post" id="entry-form">';
 	echo '<div id="entry-wrapper">';
 	echo '<div id="entry-content"><div class="constrained">';
-
-	echo '<h3 class="hidden">'.__('Edit post').'</h3>';
-	
-	foreach ($main_items as $id => $item) {
-		echo $item;
-	}
-
-	# --BEHAVIOR-- adminPostForm (may be deprecated)
+	
+	echo
+	'<p class="col"><label class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').
+	form::field('post_title',20,255,html::escapeHTML($post_title),'maximal').
+	'</label></p>'.
+	
+	'<p class="area" id="excerpt-area"><label for="post_excerpt">'.__('Excerpt:').'</label> '.
+	form::textarea('post_excerpt',50,5,html::escapeHTML($post_excerpt)).
+	'</p>'.
+	
+	'<p class="area"><label class="required" '.
+	'for="post_content"><abbr title="'.__('Required field').'">*</abbr> '.__('Content:').'</label> '.
+	form::textarea('post_content',50,$core->auth->getOption('edit_size'),html::escapeHTML($post_content)).
+	'</p>'.
+	
+	'<p class="area" id="notes-area"><label for="post_notes">'.__('Notes:').'</label>'.
+	form::textarea('post_notes',50,5,html::escapeHTML($post_notes)).
+	'</p>';
+	
+	# --BEHAVIOR-- adminPostForm
 	$core->callBehavior('adminPostForm',isset($post) ? $post : null);
 	
 	echo
-	'<p class="border-top">'.
+	'<p>'.
 	($post_id ? form::hidden('id',$post_id) : '').
 	'<input type="submit" value="'.__('Save').' (s)" '.
@@ -574,16 +458,74 @@
 	echo '<div id="entry-sidebar">';
 	
-	foreach ($sidebar_items as $id => $c) {
-		echo '<div id="'.$id.'" class="box">'.
-			'<h4>'.$c['title'].'</h4>';
-		foreach ($c['items'] as $e_name=>$e_content) {
-			echo $e_content;
-		}
-		echo '</div>';
-	}
-	
-	
-	# --BEHAVIOR-- adminPostFormSidebar (may be deprecated)
+	echo
+	'<p><label for="cat_id">'.__('Category:').
+	form::combo('cat_id',$categories_combo,$cat_id,'maximal').
+	'</label></p>'.
+	
+	($core->auth->check('categories', $core->blog->id) ?
+		'<div>'.
+		'<p id="new_cat">'.__('Add a new category').'</p>'.
+		'<p class="form-note info clear">'.__('This category will be created when you will save your post.').'</p>'.
+		'<p><label for="new_cat_title">'.__('Title:').' '.
+		form::field('new_cat_title',30,255,'','maximal').'</label></p>'.
+		'<p><label for="new_cat_parent">'.__('Parent:').' '.
+		form::combo('new_cat_parent',$categories_combo,'','maximal').
+		'</label></p>'.
+		'</div>'
+	: '').
+	
+	'<p><label for="post_status">'.__('Entry status:').
+	form::combo('post_status',$status_combo,$post_status,'','',!$can_publish).
+	'</label></p>'.
+	
+	'<p><label for="post_dt">'.__('Published on:').
+	form::field('post_dt',16,16,$post_dt,($bad_dt ? 'invalid' : '')).
+	'</label></p>'.
+	
+	'<p><label for="post_format">'.__('Text formating:').
+	form::combo('post_format',$formaters_combo,$post_format).
+	'</label>'.
+	'</p>'.
+	'<p>'.($post_id && $post_format != 'xhtml' ? '<a id="convert-xhtml" class="button" href="post.php?id='.$post_id.'&amp;xconv=1">'.__('Convert to XHTML').'</a>' : '').'</p>'.
+	
+	'<p><label for="post_open_comment" class="classic">'.form::checkbox('post_open_comment',1,$post_open_comment).' '.
+	__('Accept comments').'</label></p>'.
+	($core->blog->settings->system->allow_comments ? 
+		(isContributionAllowed($post_id,strtotime($post_dt),true) ? 
+			'' :
+			'<p class="form-note warn">'.__('Warning: Comments are not more accepted for this entry.').'</p>') : 
+		'<p class="form-note warn">'.__('Warning: Comments are not accepted on this blog.').'</p>').
+
+	'<p><label for="post_open_tb" class="classic">'.form::checkbox('post_open_tb',1,$post_open_tb).' '.
+	__('Accept trackbacks').'</label></p>'.
+	($core->blog->settings->system->allow_trackbacks ? 
+		(isContributionAllowed($post_id,strtotime($post_dt),false) ? 
+			'' :
+			'<p class="form-note warn">'.__('Warning: Trackbacks are not more accepted for this entry.').'</p>') : 
+		'<p class="form-note warn">'.__('Warning: Trackbacks are not accepted on this blog.').'</p>').
+
+	'<p><label for="post_selected" class="classic">'.form::checkbox('post_selected',1,$post_selected).' '.
+	__('Selected entry').'</label></p>'.
+	
+	'<p><label for="post_lang">'.__('Entry lang:').
+	form::combo('post_lang',$lang_combo,$post_lang).
+	'</label></p>'.
+	
+	'<p><label for="post_password">'.__('Entry password:').
+	form::field('post_password',10,32,html::escapeHTML($post_password),'maximal').
+	'</label></p>'.
+	
+	'<div class="lockable">'.
+	'<p><label for="post_url">'.__('Basename:').
+	form::field('post_url',10,255,html::escapeHTML($post_url),'maximal').
+	'</label></p>'.
+	'<p class="form-note warn">'.
+	__('Warning: If you set the URL manually, it may conflict with another entry.').
+	'</p>'.
+	'</div>';
+	
+	# --BEHAVIOR-- adminPostFormSidebar
 	$core->callBehavior('adminPostFormSidebar',isset($post) ? $post : null);
+	
 	echo '</div>';		// End #entry-sidebar
 
@@ -616,8 +558,8 @@
 	if ($can_edit_post && $core->auth->check('publish,contentadmin',$core->blog->id))
 	{
-		$combo_action[__('Publish')] = 'publish';
-		$combo_action[__('Unpublish')] = 'unpublish';
-		$combo_action[__('Mark as pending')] = 'pending';
-		$combo_action[__('Mark as junk')] = 'junk';
+		$combo_action[__('publish')] = 'publish';
+		$combo_action[__('unpublish')] = 'unpublish';
+		$combo_action[__('mark as pending')] = 'pending';
+		$combo_action[__('mark as junk')] = 'junk';
 	}
 	
@@ -681,15 +623,15 @@
 	'<form action="comment.php" method="post" id="comment-form">'.
 	'<div class="constrained">'.
-	'<p><label for="comment_author" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Name:').'</label>'.
+	'<p><label for="comment_author" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Name:').
 	form::field('comment_author',30,255,html::escapeHTML($core->auth->getInfo('user_cn'))).
-	'</p>'.
-	
-	'<p><label for="comment_email">'.__('Email:').'</label>'.
+	'</label></p>'.
+	
+	'<p><label for="comment_email">'.__('Email:').
 	form::field('comment_email',30,255,html::escapeHTML($core->auth->getInfo('user_email'))).
-	'</p>'.
-	
-	'<p><label for="comment_site">'.__('Web site:').'</label>'.
+	'</label></p>'.
+	
+	'<p><label for="comment_site">'.__('Web site:').
 	form::field('comment_site',30,255,html::escapeHTML($core->auth->getInfo('user_url'))).
-	'</p>'.
+	'</label></p>'.
 	
 	'<p class="area"><label for="comment_content" class="required"><abbr title="'.__('Required field').'">*</abbr> '.
@@ -747,14 +689,14 @@
 		switch ($rs->comment_status) {
 			case 1:
-				$img_status = sprintf($img,__('Published'),'check-on.png');
+				$img_status = sprintf($img,__('published'),'check-on.png');
 				break;
 			case 0:
-				$img_status = sprintf($img,__('Unpublished'),'check-off.png');
+				$img_status = sprintf($img,__('unpublished'),'check-off.png');
 				break;
 			case -1:
-				$img_status = sprintf($img,__('Pending'),'check-wrn.png');
+				$img_status = sprintf($img,__('pending'),'check-wrn.png');
 				break;
 			case -2:
-				$img_status = sprintf($img,__('Junk'),'junk.png');
+				$img_status = sprintf($img,__('junk'),'junk.png');
 				break;
 		}
@@ -779,5 +721,5 @@
 }
 
-dcPage::helpBlock('core_post','core_trackbacks','core_wiki');
+dcPage::helpBlock('core_post','core_wiki');
 dcPage::close();
 ?>
Index: admin/posts.php
===================================================================
--- admin/posts.php	(revision 1476)
+++ admin/posts.php	(revision 1179)
@@ -77,6 +77,6 @@
 	$selected_combo = array(
 	'-' => '',
-	__('Selected') => '1',
-	__('Not selected') => '0'
+	__('selected') => '1',
+	__('not selected') => '0'
 	);
 	
@@ -245,62 +245,51 @@
 }
 
-dcPage::open(__('Entries'),$starting_script,
-	dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			'<span class="page-title">'.__('Entries').'</span>' => ''
-		))
-);
-if (!empty($_GET['upd'])) {
-	dcPage::message(__('Selected entries have been successfully updated.'));
-} elseif (!empty($_GET['del'])) {
-	dcPage::message(__('Selected entries have been successfully deleted.'));
-}
+dcPage::open(__('Entries'),$starting_script);
+
 if (!$core->error->flag())
 {
-	echo
+	echo 
+	'<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Entries').'</span></h2>'.
 	'<p class="top-add"><a class="button add" href="post.php">'.__('New entry').'</a></p>';
 	
 	if (!$show_filters) {
 		echo '<p><a id="filter-control" class="form-control" href="#">'.
-		__('Filter posts list').'</a></p>';
+		__('Filters').'</a></p>';
 	}
 	
 	echo
 	'<form action="posts.php" method="get" id="filters-form">'.
-	'<h3>'.__('Filter posts list').'</h3>'.
-
-	'<div class="table">'.
-	'<div class="cell">'.
-	'<p><label for="user_id" class="ib">'.__('Author:').'</label> '.
-	form::combo('user_id',$users_combo,$user_id).'</p>'.
-	'<p><label for="cat_id" class="ib">'.__('Category:').'</label> '.
-	form::combo('cat_id',$categories_combo,$cat_id).'</p>'.
-	'<p><label for="status" class="ib">'.__('Status:').'</label> ' .
-	form::combo('status',$status_combo,$status).'</p> '.
-	'</div>'.
-	
-	'<div class="cell">'.
-	'<p><label for="selected" class="ib">'.__('Selected:').'</label> '.
-	form::combo('selected',$selected_combo,$selected).'</p>'.
-	'<p><label for="month" class="ib">'.__('Month:').'</label> '.
-	form::combo('month',$dt_m_combo,$month).'</p>'.
-	'<p><label for="lang" class="ib">'.__('Lang:').'</label> '.
-	form::combo('lang',$lang_combo,$lang).'</p> '.
-	'</div>'.
-	
-	'<div class="cell filters-options">'.
-	'<p><label for="sortby" class="ib">'.__('Order by:').'</label> '.
-	form::combo('sortby',$sortby_combo,$sortby).'</p>'.
-	'<p><label for="order" class="ib">'.__('Sort:').'</label> '.
-	form::combo('order',$order_combo,$order).'</p>'.
-	'<p><span class="label ib">'.__('Show').'</span> <label for="nb" class="classic">'.
-	form::field('nb',3,3,$nb_per_page).' '.
-	__('entries per page').'</label></p>'.
-	'</div>'.
-	'</div>'.
-
-	'<p><input type="submit" value="'.__('Apply filters').'" />'.
-	'<br class="clear" /></p>'. //Opera sucks
+	'<fieldset><legend>'.__('Filters').'</legend>'.
+	'<div class="three-cols">'.
+	'<div class="col">'.
+	'<label for="user_id">'.__('Author:').
+	form::combo('user_id',$users_combo,$user_id).'</label> '.
+	'<label for="cat_id">'.__('Category:').
+	form::combo('cat_id',$categories_combo,$cat_id).'</label> '.
+	'<label for="status">'.__('Status:').
+	form::combo('status',$status_combo,$status).'</label> '.
+	'</div>'.
+	
+	'<div class="col">'.
+	'<label for="selected">'.__('Selected:').
+	form::combo('selected',$selected_combo,$selected).'</label> '.
+	'<label for="month">'.__('Month:').
+	form::combo('month',$dt_m_combo,$month).'</label> '.
+	'<label for="lang">'.__('Lang:').
+	form::combo('lang',$lang_combo,$lang).'</label> '.
+	'</div>'.
+	
+	'<div class="col">'.
+	'<p><label for="sortby">'.__('Order by:').
+	form::combo('sortby',$sortby_combo,$sortby).'</label> '.
+	'<label for="order">'.__('Sort:').
+	form::combo('order',$order_combo,$order).'</label></p>'.
+	'<p><label for="nb" class="classic">'.	form::field('nb',3,3,$nb_per_page).' '.
+	__('Entries per page').'</label></p> '.
+	'<p><input type="submit" value="'.__('Apply filters').'" /></p>'.
+	'</div>'.
+	'</div>'.
+	'<br class="clear" />'. //Opera sucks
+	'</fieldset>'.
 	'</form>';
 	
Index: admin/posts_actions.php
===================================================================
--- admin/posts_actions.php	(revision 1476)
+++ admin/posts_actions.php	(revision 1421)
@@ -16,121 +16,5 @@
 
 $params = array();
-
-/**
-* FieldsList - Compatibility class for hidden fields & entries[] fields
-*
-*/
-class FieldsList {
-	/** @var array list of hidden fields */
-	protected $hidden;
-	/** @var array list of selected entries */
-	protected $entries;
-
-
-   /**
-     * Class constructor
-	*/
-	public function __construct() {
-		$this->hidden=array();
-		$this->entries =array();
-	}
-
-    /**
-     * addHidden - adds a hidden field
-     * 
-     * @param string $name the field name.
-     * @param mixed $value the field value.
-     *
-     * @access public
-	 * @return the FieldsList instance, enabling to chain requests
-     */	
-	 public function addHidden($name,$value) {
-		$this->hidden[] = form::hidden($name,$value);
-		return $this;
-	}
-
-    /**
-     * addEntry - adds a antry field
-     * 
-     * @param string $id the entry id.
-     * @param mixed $title the entry title.
-     *
-     * @access public
-	 * @return the FieldsList instance, enabling to chain requests
-     */	
-	 public function addEntry($id,$title) {
-		$this->entries[$id]=$title;
-		return $this;
-	}
-
-    /**
-     * getHidden - returns the list of hidden fields, html encoded
-     *
-     * @access public
-	 * @return the list of hidden fields, html encoded
-     */
-	 public function getHidden() {
-		return join('',$this->hidden);
-	}
-	
-    /**
-     * getEntries - returns the list of entry fields, html encoded
-     *
-	 * @param boolean $hidden if set to true, returns entries as a list of hidden field
-	 *                if set to false, returns html code displaying the list of entries
-	 *                with a list of checkboxes to enable to select/deselect entries
-     * @access public
-	 * @return the list of entry fields, html encoded
-     */
-	public function getEntries ($hidden=false) {
-		$ret = '';
-		if ($hidden) {
-			foreach ($this->entries as $id=> $e) {
-				$ret .= form::hidden('entries[]',$id);
-			}
-		} else {
-			$ret = 
-				'<table class="posts-list"><tr>'.
-				'<th colspan="2">'.__('Title').'</th>'.
-				'</tr>';
-			foreach ($this->entries as $id=>$title) {
-				$ret .= 
-					'<tr><td>'.
-					form::checkbox(array('entries[]'),$id,true,'','').'</td>'.
-					'<td>'.	$title.'</td></tr>';
-			}
-			$ret .= '</table>';
-		}
-		return $ret;
-	}
-	
-    /**
-     * getEntriesQS - returns the list of entry fields as query string
-     *
-     * @access public
-	 * @return the list of entry fields, html encoded
-     */
-	public function getEntriesQS() {
-		$ret=array();
-		foreach ($this->entries as $id=>$title) {
-			$ret[] = 'entries[]='.$id;
-		}
-		return join('&',$ret);
-	}
-	
-    /**
-     * __toString - magic method. -- DEPRECATED here
-	 *              This method is only used to preserve compatibility with plugins 
-	 *				relying on previous versions of adminPostsActionsContent behavior, 
-	 *
-     * @access public
-	 * @return the list of hidden fields and entries (as hidden fields too), html encoded
-     */
-	public function __toString() {
-		return join('',$this->hidden).$this->getEntries(true);
-	}
-}
-
-$fields = new FieldsList();
+$action = '';
 
 /* Actions
@@ -179,8 +63,5 @@
 	while ($posts->fetch())	{
 		$posts_ids[] = $posts->post_id;
-		$fields->addEntry($posts->post_id,$posts->post_title);
-	}
-	// Redirection including selected entries
-	$redir_sel = $redir.'&'.$fields->getEntriesQS();
+	}
 	
 	# --BEHAVIOR-- adminPostsActions
@@ -200,5 +81,5 @@
 			$core->blog->updPostsStatus($posts_ids,$status);
 			
-			http::redirect($redir_sel.'&upd=1');
+			http::redirect($redir);
 		}
 		catch (Exception $e)
@@ -213,5 +94,5 @@
 			$core->blog->updPostsSelected($posts_ids,$action == 'selected');
 			
-			http::redirect($redir_sel."&upd=1");
+			http::redirect($redir);
 		}
 		catch (Exception $e)
@@ -236,5 +117,5 @@
 			$core->blog->delPosts($posts_ids);
 			
-			http::redirect($redir."&del=1");
+			http::redirect($redir);
 		}
 		catch (Exception $e)
@@ -269,5 +150,5 @@
 			$core->blog->updPostsCategory($posts_ids, $new_cat_id);
 			
-			http::redirect($redir_sel."&upd=1");
+			http::redirect($redir);
 		}
 		catch (Exception $e)
@@ -291,5 +172,5 @@
 			$cur->update('WHERE post_id '.$core->con->in($posts_ids));
 			
-			http::redirect($redir_sel."&upd=1");
+			http::redirect($redir);
 		}
 		catch (Exception $e)
@@ -307,5 +188,5 @@
 			$cur->update('WHERE post_id '.$core->con->in($posts_ids));
 			
-			http::redirect($redir_sel."&upd=1");
+			http::redirect($redir);
 		}
 		catch (Exception $e)
@@ -314,24 +195,6 @@
 		}
 	}
-} else {
-	if (empty($_POST['entries'])) {
-		$core->error->add(__('At least one entry should be selected'));
-	} else {
-		$core->error->add(__('No action specified.'));
-	}
-	dcPage::open(
-		__('Entries'),'',dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			__('Entries') => 'posts.php',
-			'<span class="page-title">'.__('Entries actions').'</span>' => ''
-		))
-	);
-	
-	echo '<p><a class="back" href="'.html::escapeURL($redir_sel).'">'.__('Back to entries list').'</a></p>';
-
-	dcPage::close();
-	exit;
-}
+}
+
 /* DISPLAY
 -------------------------------------------------------- */
@@ -368,43 +231,39 @@
 }
 
+$hidden_fields = '';
+while ($posts->fetch()) {
+	$hidden_fields .= form::hidden(array('entries[]'),$posts->post_id);
+}
+
 if (isset($_POST['redir']) && strpos($_POST['redir'],'://') === false)
 {
-	$fields->addHidden(array('redir'),html::escapeURL($_POST['redir']));
+	$hidden_fields .= form::hidden(array('redir'),html::escapeURL($_POST['redir']));
 }
 else
 {
-	$fields
-		->addHidden(array('user_id'),$_POST['user_id'])
-		->addHidden(array('cat_id'),$_POST['cat_id'])
-		->addHidden(array('status'),$_POST['status'])
-		->addHidden(array('selected'),$_POST['selected'])
-		->addHidden(array('month'),$_POST['month'])
-		->addHidden(array('lang'),$_POST['lang'])
-		->addHidden(array('sortby'),$_POST['sortby'])
-		->addHidden(array('order'),$_POST['order'])
-		->addHidden(array('page'),$_POST['page'])
-		->addHidden(array('nb'),$_POST['nb'])
-	;
+	$hidden_fields .=
+	form::hidden(array('user_id'),$_POST['user_id']).
+	form::hidden(array('cat_id'),$_POST['cat_id']).
+	form::hidden(array('status'),$_POST['status']).
+	form::hidden(array('selected'),$_POST['selected']).
+	form::hidden(array('month'),$_POST['month']).
+	form::hidden(array('lang'),$_POST['lang']).
+	form::hidden(array('sortby'),$_POST['sortby']).
+	form::hidden(array('order'),$_POST['order']).
+	form::hidden(array('page'),$_POST['page']).
+	form::hidden(array('nb'),$_POST['nb']);
 }
 
 if (isset($_POST['post_type'])) {
-	$fields->addHidden(array('post_type'),$_POST['post_type']);
+	$hidden_fields .= form::hidden(array('post_type'),$_POST['post_type']);
 }
 
 # --BEHAVIOR-- adminPostsActionsContent
-$core->callBehavior('adminPostsActionsContent',$core,$action,$fields);
+$core->callBehavior('adminPostsActionsContent',$core,$action,$hidden_fields);
 
 if ($action == 'category')
 {
-	echo dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			__('Entries') => 'posts.php',
-			__('Change category for entries') => ''
-	));
-	
-	echo '<p><a class="back" href="'.html::escapeURL($redir_sel).'">'.__('Back to entries list').'</a></p>';
-
-	# categories list
+	echo '<h2 class="page-title">'.__('Change category for entries').'</h2>';
+	
 	# Getting categories
 	$categories_combo = array(__('(No cat)') => '');
@@ -412,10 +271,10 @@
 		$categories = $core->blog->getCategories(array('post_type'=>'post'));
 		if (!$categories->isEmpty()) {
-		while ($categories->fetch()) {
+			while ($categories->fetch()) {
 				$catparents_combo[] = $categories_combo[] = new formSelectOption(
 					str_repeat('&nbsp;&nbsp;',$categories->level-1).($categories->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($categories->cat_title),
-				$categories->cat_id
-			);
-		}
+					$categories->cat_id
+				);
+			}
 		}
 	} catch (Exception $e) { }
@@ -423,7 +282,7 @@
 	echo
 	'<form action="posts_actions.php" method="post">'.
-	$fields->getEntries().
-	'<p><label for="new_cat_id" class="classic">'.__('Category:').'</label> '.
-	form::combo('new_cat_id',$categories_combo,'');
+	'<p><label for="new_cat_id" class="classic">'.__('Category:').' '.
+	form::combo('new_cat_id',$categories_combo,'').
+	'</label> ';
 	
 	if ($core->auth->check('categories', $core->blog->id)) {
@@ -440,5 +299,5 @@
 	
 	echo
-	$fields->getHidden().
+	$hidden_fields.
 	$core->formNonce().
 	form::hidden(array('action'),'category').
@@ -448,12 +307,6 @@
 elseif ($action == 'lang')
 {
-	echo dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			__('Entries') => 'posts.php',
-			'<span class="page-title">'.__('Change language for entries').'</span>' => ''
-	));
-	echo '<p><a class="back" href="'.html::escapeURL($redir_sel).'">'.__('Back to entries list').'</a></p>';
-
+	echo '<h2 class="page-title">'.__('Change language for entries').'</h2>';
+	
 	# lang list
 	# Languages combo
@@ -474,11 +327,10 @@
 	echo
 	'<form action="posts_actions.php" method="post">'.
-	$fields->getEntries().
-	
-	'<p><label for="new_lang" class="classic">'.__('Entry lang:').'</label> '.
-	form::combo('new_lang',$lang_combo,'');
-	
-	echo
-	$fields->getHidden().
+	'<p><label for="new_lang" class="classic">'.__('Entry lang:').' '.
+	form::combo('new_lang',$lang_combo,'').
+	'</label> ';
+	
+	echo
+	$hidden_fields.
 	$core->formNonce().
 	form::hidden(array('action'),'lang').
@@ -489,20 +341,14 @@
 elseif ($action == 'author' && $core->auth->check('admin',$core->blog->id))
 {
-	echo dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			__('Entries') => 'posts.php',
-			'<span class="page-title">'.__('Change author for entries').'</span>' => ''
-	));
-	echo '<p><a class="back" href="'.html::escapeURL($redir_sel).'">'.__('Back to entries list').'</a></p>';
-
+	echo '<h2 class="page-title">'.__('Change author for entries').'</h2>';
+	
 	echo
 	'<form action="posts_actions.php" method="post">'.
-	$fields->getEntries().
-	'<p><label for="new_auth_id" class="classic">'.__('Author ID:').'</label> '.
-	form::field('new_auth_id',20,255);
-	
-	echo
-	$fields->getHidden().
+	'<p><label for="new_auth_id" class="classic">'.__('Author ID:').' '.
+	form::field('new_auth_id',20,255).
+	'</label> ';
+	
+	echo
+	$hidden_fields.
 	$core->formNonce().
 	form::hidden(array('action'),'author').
@@ -511,4 +357,6 @@
 }
 
+echo '<p><a class="back" href="'.html::escapeURL($redir).'">'.__('back').'</a></p>';
+
 dcPage::close();
 ?>
Index: admin/preferences.php
===================================================================
--- admin/preferences.php	(revision 1474)
+++ admin/preferences.php	(revision 1375)
@@ -361,11 +361,5 @@
 	
 	# --BEHAVIOR-- adminPreferencesHeaders
-	$core->callBehavior('adminPreferencesHeaders'),
-
-	dcPage::breadcrumb(
-	array(
-		html::escapeHTML($core->auth->userID()) => '',
-		'<span class="page-title">'.$page_title.'</span>' => ''
-	))
+	$core->callBehavior('adminPreferencesHeaders')
 );
 
@@ -388,4 +382,6 @@
 	dcPage::message(__('Default favorites have been successfully updated.'));
 }
+
+echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_title.'</span></h2>';
 
 # User profile
@@ -397,18 +393,18 @@
 '<div class="two-cols">'.
 '<div class="col">'.
-'<p><label for="user_name">'.__('Last Name:').'</label>'.
-form::field('user_name',20,255,html::escapeHTML($user_name)).'</p>'.
-
-'<p><label for="user_firstname">'.__('First Name:').'</label>'.
-form::field('user_firstname',20,255,html::escapeHTML($user_firstname)).'</p>'.
-
-'<p><label for="user_displayname">'.__('Display name:').'</label>'.
-form::field('user_displayname',20,255,html::escapeHTML($user_displayname)).'</p>'.
-
-'<p><label for="user_email">'.__('Email:').'</label>'.
-form::field('user_email',20,255,html::escapeHTML($user_email)).'</p>'.
-
-'<p><label for="user_url">'.__('URL:').'</label>'.
-form::field('user_url',30,255,html::escapeHTML($user_url)).'</p>'.
+'<p><label for="user_name">'.__('Last Name:').
+form::field('user_name',20,255,html::escapeHTML($user_name)).'</label></p>'.
+
+'<p><label for="user_firstname">'.__('First Name:').
+form::field('user_firstname',20,255,html::escapeHTML($user_firstname)).'</label></p>'.
+
+'<p><label for="user_displayname">'.__('Display name:').
+form::field('user_displayname',20,255,html::escapeHTML($user_displayname)).'</label></p>'.
+
+'<p><label for="user_email">'.__('Email:').
+form::field('user_email',20,255,html::escapeHTML($user_email)).'</label></p>'.
+
+'<p><label for="user_url">'.__('URL:').
+form::field('user_url',30,255,html::escapeHTML($user_url)).'</label></p>'.
 
 '</div>'.
@@ -416,12 +412,13 @@
 '<div class="col">'.
 
-'<p><label for="user_lang">'.__('User language:').'</label>'.
-form::combo('user_lang',$lang_combo,$user_lang,'l10n').'</p>'.
-
-'<p><label for="user_tz">'.__('User timezone:').'</label>'.
-form::combo('user_tz',dt::getZones(true,true),$user_tz).'</p>'.
+'<p><label for="user_lang">'.__('User language:').
+form::combo('user_lang',$lang_combo,$user_lang,'l10n').'</label></p>'.
+
+'<p><label for="user_tz">'.__('User timezone:').
+form::combo('user_tz',dt::getZones(true,true),$user_tz).'</label></p>'.
 
 '</div>'.
 '</div>'.
+'<br class="clear" />'. //Opera sucks
 '</fieldset>';
 
@@ -435,11 +432,11 @@
 	'<p class="pw-cell"><label for="new_pwd">'.__('New password:').'</label>'.
 	form::password('new_pwd',20,255,'','','',false,' data-indicator="pwindicator" ').'</p>'.
-	'<div id="pwindicator">'.
-	'    <div class="bar"></div>'.
-	'    <p class="label no-margin"></p>'.
-	'</div>'.
-	'</div>'.
+    '<div id="pwindicator">'.
+    '    <div class="bar"></div>'.
+    '    <p class="label no-margin"></p>'.
+    '</div>'.
+    '</div>'.
 	
-	'<p><label for="new_pwd_c">'.__('Confirm new password:').'</label>'.
+	'<p><label for="new_pwd_c">'.__('Confirm password:').'</label>'.
 	form::password('new_pwd_c',20,255).'</p>'.
 	'</fieldset>'.
@@ -465,12 +462,12 @@
 '<fieldset><legend>'.__('My options').'</legend>'.
 
-'<p><label for="user_post_format">'.__('Preferred format:').'</label>'.
-form::combo('user_post_format',$formaters_combo,$user_options['post_format']).'</p>'.
-
-'<p><label for="user_post_status">'.__('Default entry status:').'</label>'.
-form::combo('user_post_status',$status_combo,$user_post_status).'</p>'.
-
-'<p><label for="user_edit_size">'.__('Entry edit field height:').'</label>'.
-form::field('user_edit_size',5,4,(integer) $user_options['edit_size']).'</p>'.
+'<p><label for="user_post_format">'.__('Preferred format:').
+form::combo('user_post_format',$formaters_combo,$user_options['post_format']).'</label></p>'.
+
+'<p><label for="user_post_status">'.__('Default entry status:').
+form::combo('user_post_status',$status_combo,$user_post_status).'</label></p>'.
+
+'<p><label for="user_edit_size">'.__('Entry edit field height:').
+form::field('user_edit_size',5,4,(integer) $user_options['edit_size']).'</label></p>'.
 
 '<p><label for="user_wysiwyg" class="classic">'.
@@ -488,6 +485,6 @@
 if (count($iconsets_combo) > 1) {
 	echo 
-		'<p><label for="user_ui_iconset">'.__('Iconset:').'</label>'.
-		form::combo('user_ui_iconset',$iconsets_combo,$user_ui_iconset).'</p>';
+		'<p><label for="user_ui_iconset">'.__('Iconset:').
+		form::combo('user_ui_iconset',$iconsets_combo,$user_ui_iconset).'</label></p>';
 } else {
 	form::hidden('user_ui_iconset','');
@@ -499,9 +496,9 @@
 	form::checkbox('user_ui_hide_std_favicon',1,$user_ui_hide_std_favicon).' '.
 	__('Do not use standard favicon').'</label></p>'.
-	'<p class="clear form-note info">'.__('This will be applied for all users').
-	'<br class="clear" /></p>';//Opera sucks;
+	'<p class="clear form-note info">'.__('This will be applied for all users').'</p>';
 }
 
 echo 
+'<br class="clear" />'. //Opera sucks
 '</fieldset>';
 
@@ -529,7 +526,7 @@
 '<p><label for="user_dm_quickentry" class="classic">'.
 form::checkbox('user_dm_quickentry',1,$user_dm_quickentry).' '.
-__('Display quick entry form').'</label><br class="clear" />'. //Opera sucks
-'</p>'.
-
+__('Display quick entry form').'</label></p>'.
+
+'<br class="clear" />'. //Opera sucks
 '</fieldset>';
 
Index: admin/search.php
===================================================================
--- admin/search.php	(revision 1358)
+++ admin/search.php	(revision 1276)
@@ -70,18 +70,13 @@
 
 
-dcPage::open(__('Search'),$starting_scripts,
-	dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			'<span class="page-title">'.__('Search').'</span>' => ''
-		))
-);
+dcPage::open(__('Search'),$starting_scripts);
 
 echo
+'<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Search').'</span></h2>'.
 '<form action="search.php" method="get">'.
 '<div class="fieldset"><h3>'.__('Search options').'</h3>'.
 '<p><label for="q">'.__('Query:').' </label>'.form::field('q',30,255,html::escapeHTML($q)).'</p>'.
-'<p><label for="qtype1" class="classic">'.form::radio(array('qtype','qtype1'),'p',$qtype == 'p').' '.__('Search in entries').'</label> '.
-'<label for="qtype2" class="classic">'.form::radio(array('qtype','qtype2'),'c',$qtype == 'c').' '.__('Search in comments').'</label></p>'.
+'<p><label for="qtype1" class="classic">'.form::radio(array('qtype','qtype1'),'p',$qtype == 'p').' '.__('Search entries').'</label> '.
+'<label for="qtype2" class="classic">'.form::radio(array('qtype','qtype2'),'c',$qtype == 'c').' '.__('Search comments').'</label></p>'.
 '<p><input type="submit" value="'.__('Search').'" /></p>'.
 '</div>'.
Index: admin/services.php
===================================================================
--- admin/services.php	(revision 1179)
+++ admin/services.php	(revision 1500)
@@ -141,4 +141,22 @@
 	public static function quickPost($core,$get,$post)
 	{
+		# Create category
+		if (!empty($post['new_cat_title']) && $core->auth->check('categories', $core->blog->id)) {
+		
+			$cur_cat = $core->con->openCursor($core->prefix.'category');
+			$cur_cat->cat_title = $post['new_cat_title'];
+			$cur_cat->cat_url = '';
+			
+			$parent_cat = !empty($post['new_cat_parent']) ? $post['new_cat_parent'] : '';
+			
+			# --BEHAVIOR-- adminBeforeCategoryCreate
+			$core->callBehavior('adminBeforeCategoryCreate', $cur_cat);
+			
+			$post['cat_id'] = $core->blog->addCategory($cur_cat, (integer) $parent_cat);
+			
+			# --BEHAVIOR-- adminAfterCategoryCreate
+			$core->callBehavior('adminAfterCategoryCreate', $cur_cat, $post['cat_id']);
+		}
+		
 		$cur = $core->con->openCursor($core->prefix.'post');
 		
Index: admin/style/date-picker.css
===================================================================
--- admin/style/date-picker.css	(revision 1330)
+++ admin/style/date-picker.css	(revision 0)
@@ -1,35 +1,35 @@
 .date-picker {
-	border-collapse: collapse;
-	background: #fff;
-	color: #fff;
+	border-collapse : collapse;
+	background : #fff;
+	color : #fff;
 	border: 1px solid #666;
-	border-width: 1px 2px 2px 1px;
+	border-width : 1px 2px 2px 1px;
 }
 .date-picker th {
-	border: none;
-	color: #000;
-	text-align: center;
+	border : none;
+	color : #000;
+	text-align : center;
 }
 .date-picker td {
-	border: 1px solid #666;
-	text-align: center;
+	border : 1px solid #666;
+	text-align : center;
 	padding : 4px 6px;
 }
 th.date-picker-month {
-	text-align: left;
+	text-align : left;
 }
 th.date-picker-year {
-	text-align: right;
+	text-align : right;
 }
 .date-picker-control, th.date-picker-control {
-	color: #06c;
-	cursor: pointer;
+	color : #06c;
+	cursor : pointer;
 }
 .date-picker-day, .date-picker-today {
-	color: #000;
-	background: #eee;
-	cursor: pointer;
+	color : #000;
+	background : #eee;
+	cursor : pointer;
 }
 .date-picker-today {
-	background: #ccc;
+	background : #ccc;
 }
Index: admin/style/default.css
===================================================================
--- admin/style/default.css	(revision 1499)
+++ admin/style/default.css	(revision 1375)
@@ -13,13 +13,13 @@
 
 /* ------------------------------------------------------------------ html */
-html {
-	font-size: 62.5%;
-}
 body {
-	font: 1.2rem/1.5 Arial,Helvetica,sans-serif;
+	font: 75%/1.5em Helvetica,Arial,sans-serif;
 	color: #333;
+	background: #f5f5f5;
+	margin: 0;
+	padding: 0;
+}
+body.auth {
 	background: #fff;
-	margin: 0;
-	padding: 0;
 }
 
@@ -36,49 +36,19 @@
 }
 
-h1, h2, h3, .as_h3, h4, h5, h6, p {
+h1, h2, h3, h4, h5, h6, p {
 	margin-top: 0;
-	margin-bottom: 1rem;
+	margin-bottom: 0.6em;
 }
 h2 {
 	color: #666;
-	font-size: 1.8rem;
-	padding: 0 0 1.8rem;
-	font-weight: normal;
-}
-h2 a:link, h2 a:visited {
-	color: #666;
-	border-color: #000;
+	font-size: 1.4em;
+	padding: 4px 0;
 }
 .page-title {
 	color: #d30e60;
 }
-.page-title img {
-	padding-left: .6rem;
-	vertical-align: middle;
-}
-#content > h2 {
-	padding: 0 1.8rem .6rem;
-	margin: 0 -1.8rem 1rem;
-	background: #fff url(bg_h2.png) repeat-x center bottom;
-}
-h3, .as_h3 {
-	color: #575859;
-	font-size: 1.4rem;
-}
-h4 {
-	font-size: 1.1em;
-	color: #575859;
-}
-h5 {
-	font-size: 1em;
-	color: #575859;
-}
-#entry-sidebar h5 {
-	font-weight: normal;
+h3 {
 	color: #333;
-}
-.entry-status label img {
-	padding-left: .4rem;
-	vertical-align: text-top;
+	font-size: 1.2em;
 }
 p, div.p {
@@ -87,5 +57,5 @@
 hr {
 	height: 1px;
-	border-width: 1px 0 0;
+	border-width: 1px 0 0 0;
 	border-color: #999;
 	border-style: solid;
@@ -113,34 +83,29 @@
 #header {
 	background: #575859;
+	height: 3em;
 	position: relative;
-	border-bottom: 4px solid #A2CBE9;
-	width: 100%;
 }
 #prelude {
-	line-height: 1.9;
-	margin: 0;
-	padding: 0;
+	background: #575859;
+	line-height: 1.5em;
+	margin: 0;
+	padding: 0 1.7em 0 1em;
 	overflow: hidden;
 	position: absolute;
-	top: 3em;
+	top: 1.2em;
 	left: 0;
-	background: #A2CBE9;
-	width: 14.5em;
 	}
 #prelude li {
 	list-style-type: none;
-	margin: 0;
+	margin: 0 1em 0 0;
 	background:transparent;
-}
+	}
 #prelude li a {
-	padding-left: 1.6rem;
-	background: #A2CBE9;
-	color: #000;
-	border-bottom-color: #A2CBE9;
-}
+	color:#fff;
+	}
 #top {
 	margin: 0;
 	padding: 0;
-	width: 14.5em;
+	width: 13em;
 	float: left;
 }
@@ -148,38 +113,38 @@
 	padding: 0;
 	margin: 0;
-	height: 3.6rem;
+	height: 3em;
 	text-indent: -1000px;
+	background: transparent url(dc_logo.png) no-repeat 0 50%;
 }
 #top h1 a {
 	position: absolute;
-	top: 0;
+	top: 3px;
 	left: 0;
-	width: 17.4rem;
-	height: 3.6rem;
+	width: 130px;
+	height: 60px;
 	border: none;
+	outline: none;
 	color: #fff;
 }
-#top h1 a:link {
-	background: transparent url(dc_logos/b-dotclear120.png) no-repeat 0 6px;
-}
-#top h1 a:hover, #top h1 a:focus {
-	background: transparent url(dc_logos/b-dotclear120.png) no-repeat 0 -94px;	
-}
 #info-boxes {
-	font-size: 1em;
-	line-height: 3em;
+	background: #575859;
+	font-size: .95em;
+	height: 3em;
 }
 #info-box1 {
 	margin: 0;
-	padding: 0 3px 0 1.8rem;
+	padding: .5em 3px 4px 0;
 	color: #fff;
-	display: inline-block;
+	float: left;
+	background: #575859;
 }
 #info-box2 {
-	margin: 0;
-	padding: 0 1.3em 0 0;
+	margin: .1em 0 0 0;
+	padding: .5em 1.3em 4px 0;
 	color: #fff;
 	float: right;
 	text-align: right;
+	background: #575859;
+	height: 2em;
 }
 #info-box1 p {
@@ -188,5 +153,5 @@
 }
 #info-box1 select {
-	width: 14.5em;
+	width: 15em;
 }
 #info-box1 a img, #info-box2 a img {
@@ -194,5 +159,6 @@
 	padding-left: .3em;
 	}
-#info-boxes a {
+#info-box1 a, #info-box2 a {
+	background: #575859;
 	font-weight: bold;
 	color: #fff;
@@ -207,15 +173,15 @@
 }
 #info-box2 a.active {
-	border-bottom-color: #fff;
+	border-bottom-color: #f5f5f5;
 	margin: 0;
 	padding: 1.2em .5em;
-	background-color: #fff;
+	background-color: #f5f5f5;
 	color: #333;
 	font-weight: bold;
 }
 #info-box2 span {
-	color: #999;
-}
-/* main blocks */
+	color: #575859;
+}
+/* prelude */
 #wrapper {
 	width: 100%;
@@ -224,12 +190,13 @@
 	width: 100%;
 	float: right;
-	margin-left: -14.5em;
+	margin-left: -13em;
 	margin-top: 0;
-	background: #fff url(bg_menu.png);
 }
 #content {
-	margin: 0 0 0 14.5em;
-	padding: .9rem 1.8rem 1.8rem;
+	margin: 1.5em 1.5em .5em 13em;
+	padding: 1em;
 	background: #fff;
+	border-radius: .5em;
+	border: 1px solid #ddd;
 }
 	/* Micro clearfix thx to Nicolas Gallagher */
@@ -252,32 +219,26 @@
 }
 .two-cols .col {
-	width: 47%;
+	width: 49%;
 	margin-left: 2%;
 	float: left;
 }
+.two-cols .col:first-child {
+	width: 49%;
+	margin-left: 0;
+}
 .two-cols .col70{
-	width: 68%;
+	width: 69%;
 	margin-left: 0;
 	float: left;
 }
-.col30 {
+.two-cols .col30 {
 	width: 28%;
 	margin-left: 2%;
 	float: left;
 }
-.two-cols .col:first-child,
-.two-cols .col30.first-col {
-	margin-left: 0;
-	margin-right: 2%;
-}
-.two-cols .col:last-child,
-.two-cols .col70.last-col {
-	margin-left: 2%;
-	margin-right: 0;
-}
 /* -------------------------------------------------------------- layout - onglets */
 .part-tabs ul {
-	padding: .5em 0 .3em 1.2rem;
-	border-bottom: 1px solid #ddd;
+	padding: .3em 0 1px 1em;
+	border-bottom: 1px solid #999;
 }
 .part-tabs li {
@@ -287,11 +248,16 @@
 }
 .part-tabs li a {
-	padding: .5em 2em;
-	margin-right: -1px;
-	border: 1px solid #aaa;
+	padding: .3em 0.5em;
+	margin-right: .5em;
+	border: 1px solid #999;
 	border-bottom: none;
+	background: #dfdfdf;
 	text-decoration: none;
-	color: #333;
-	background-color:#E4E0EC;
+	border-top-left-radius: .3em;
+	border-top-right-radius: .3em;
+	color: #000;
+}
+.part-tabs li.part-tabs-link a {
+	background: #ffe;
 }
 .part-tabs li a:hover, .part-tabs li a:focus {
@@ -302,29 +268,25 @@
 .part-tabs li.part-tabs-active a {
 	background: #fff;
+	border-bottom: 1px solid #fff;
+	color: #000;
 	font-weight: bold;
-	border-bottom-color: #fff;
-	padding-bottom: .7rem;
 }
 /* ------------------------------------------------------------------ main-menu */
 #main-menu {
-	width: 14.5em;
-	float: left;
-	margin:0;
-	padding-top: 4.5em;
-	padding-bottom: 1em;
-	background: #f7f7f7;
+	width: 13em;
+	float: left;
+	margin-top: 1.2em;
+	margin-bottom: .5em;
 }
 #main-menu h3 {
-	margin: 0;
-	padding: 1.2rem 0 1rem 2.2rem;
-	text-indent: -1.6rem;
+	margin: 0 0 0.5em;
+	padding: .5em 0 0 .5em;
+	text-transform: uppercase;
 	color: #666;
-	font-size: 1.4rem;
-}
-#main-menu h3 img[alt="cacher"] {
-	vertical-align: top;
+	font-size: 1.1em;
 }
 #main-menu ul {
-	margin: 0 0 1.8rem 0;
+	font-size: .95em;
+	margin: 0 0 1em 0;
 	padding: 0;
 	list-style: none;
@@ -333,86 +295,57 @@
 	display: block;
 	margin: 0.5em 0 0;
-	padding: .3rem 0 0 30px;
+	padding: .2em 0 0 32px;
 	background-repeat: no-repeat;
-	background-position: 8px .3em;
-}
-#main-menu li.active {
-	background-color: #fff;
+	background-position: 12px .4em;
 }
 #main-menu a {
-	color: #333;
-	border-bottom-color: #ccc;
+	font-weight: bold;
 }
 #main-menu .active a {
 	border-bottom: none;
-	color: #d30e60;
+	color: #333;
 }
 #main-menu .active {
-	font-weight: bolder;
-}
-#search-menu {
-	padding: .3rem .4rem 0;
-	font-size: 100%
-}
-#search-menu p {
-	display: inline-block;
-	border: 1px solid #999;
-	border-radius: .6em;
-	position: relative;
-	height: 2rem;
-	overflow: hidden;
-}
-#search-menu #q {
-	width: 12rem;
-	border-bottom-left-radius: .6em;
-	border-top-left-radius: .6em;
-	background: transparent url(search.png) no-repeat 4px center;
-	text-indent: 18px;
-	height: 2rem;
-	padding: 0 2px; 
+	background-color: #fff;
+	padding: .4em 0 .1em 32px;
+	background-position: 12px .4em;
+	border-top: 1px solid #ddd;
+	border-bottom: 1px solid #ddd;
+	margin-right: -1px;
+}
+#favorites-menu {
+	margin: 0 0 2em;
+}
+#favorites-menu h3 {
+	color: #333;
+	text-transform: none;
+}
+#favorites-menu a {
+	color: #333;
+}
+#favorites-menu .active {
+	background-color: transparent;
 	border: none;
 }
-#search-menu input[type="submit"] {
-	padding: 0 0.3rem;
-	background: #dfdfdf;
-	border-color: #999;
-	color: #444;
-	border-bottom-right-radius: .6em;
-	border-top-right-radius: .6em;
-	border-top-left-radius: 0;
-	border-bottom-left-radius: 0;
-	text-shadow: none;
-	height: 2rem;
-	border: none;
-	border-left: 1px solid #aaa;
-	font-size: 1rem;
-}
-#search-menu input[type="submit"]:hover,
-#search-menu input[type="submit"]:focus {
-	background: #575859;
-	color: #fff;
-}
-#favorites-menu, #blog-menu, #system-menu, #plugins-menu {
-	border-bottom: 1px dashed #A2CBE9;
-}
-#favorites-menu h3 {
-	color: #000;
-	font-variant: small-caps;
-	padding-top: .6rem;
+#favorites-menu .active a {
+	font-weight: bold;
+	color: #666;
 }
 /* ------------------------------------------------------------------ footer */
 #footer {
 	clear: both;
-	padding: .6rem 1.2rem .6rem 0;
+	padding: .75em .75em 0 0;
 	text-align: right;
-	border-top: .1rem solid #ccc;
 }
 #footer p {
 	margin: 0;
 	padding: 0 1em;
-	font-size: 1em;
+	text-align: center;
+	font-size: 1.1em;
+}
+#footer a {
 }
 #footer p span.credit {
-	font-size: 1rem;
+	font-size: .85em;
 	font-weight: normal;
 }
@@ -420,20 +353,19 @@
 #login-screen {
 	display: block;
-	width: 20em;
+	width: 18em;
 	margin: 1.5em auto 0;
-	font-size: 1.4rem;
+	font-size: 1.1em;
 }
 #login-screen h1 {
 	text-indent: -2000px;
-	background: transparent url(dc_logos/w-dotclear240.png) no-repeat top left;
-	height: 66px;
+	background: transparent url(dotclear-logo2.png) no-repeat top left;
+	height: 50px;
 	margin-bottom: .5em;
-	margin-left: 0;
-}
-#login-screen .fieldset {
-	border: 1px solid #A8DC26;
+	margin-left: .5em;
+}
+#login-screen fieldset, #login-screen .fieldset {
+	border: 1px solid #999;
 	padding: 1em 1em 0 1em;
 	border-radius: 4px;
-	background: #fff;
 }
 #login-screen input[type=text], #login-screen input[type=password], #login-screen input[type=submit] {
@@ -441,12 +373,21 @@
 }
 #login-screen #issue {
-	margin-left: 1.5rem;
-	font-size: 1.2rem;
+	margin-left: 1em;
+	font-size: 1em;
 }
 #login-screen #issue strong {font-weight: normal;}
+
 
 /* ------------------------------------------------------------------ dashboard */
 #dashboard-main {
+	float: left;
+	overflow: hidden;
+	padding: 1em 2% 1em 0;
+	width: 70%;
+}
+#dashboard-main.fullwidth {
+	width: 100%;
 	padding: 1em 0;
+	float: none;
 }
 #icons {
@@ -458,8 +399,6 @@
 	width: 210px;
 	text-align: center;
-	margin: 1em 0 2em;
-	padding: 1em 0;
+	margin: 2em 0 0 0;
 	display:inline-block;
-	vertical-align: top;
 }
 #icons a,
@@ -473,24 +412,4 @@
 #icons a span {
 	border-bottom: 1px dotted #f90;
-	color: #333;
-}
-#icons a img {
-	padding: 2em;
-	margin-bottom: .3em;
-	-moz-box-shadow: 0px 1px 0px 0px #ffffff;
-	-webkit-box-shadow: 0px 1px 0px 0px #ffffff;
-	box-shadow: 0px 1px 0px 0px #ffffff;
-	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #f9f9f9), color-stop(1, #e9e9e9) );
-	background:-moz-linear-gradient( center top, #f9f9f9 5%, #e9e9e9 100% );
-	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e9e9e9');
-	background-color:#f9f9f9;
-	-moz-border-radius:1em;
-	-webkit-border-radius:1em;
-	border-radius:1em;
-	border:1px solid #dcdcdc;
-	display:inline-block;
-}
-#icons a img:hover, #icons a:focus img {
-	background: #BBDB58;
 }
 #icons a:focus span, #icons a:hover span {
@@ -498,4 +417,5 @@
 }
 #quick {
+	clear: left;
 	margin-top: 2em;
 }
@@ -506,5 +426,5 @@
 #quick p.qinfo {
 	margin: -.7em -1em 1em;
-	background: #f3f3ff url(info.png) no-repeat .2em .2em;
+	background: #eef url(info.png) no-repeat .2em .2em;
 	border: 1px solid #99f;
 	padding: .2em 1em .1em 24px;
@@ -512,14 +432,9 @@
 }
 #dashboard-items {
-	margin: 3em auto;
-	display: table;
-	width: 100%;
-	border-collapse: collapse;
-}
-.db-item {
-	display: table-cell;
-	padding: 1em 3em;
-	vertical-align: top;
-	border: 1px solid #ccc;
+	float: left;
+	width: 27%;
+	overflow: hidden;
+	padding-bottom: 1em;
+	padding-top: 3em;
 }
 #dashboard-items img {
@@ -561,26 +476,9 @@
 }
 #entry-content {
-	margin-right: 19em;
-	margin-left: 0;
-}
-.multi-part {
-	padding-left: 1.2rem;
-}
-#entry-content label {
-	text-transform: uppercase;
-	font-weight: bold;
-	margin-top: 2em;
+	margin-right: 18em;
 }
 #entry-sidebar {
 	width: 17em;
 	float: right;
-}
-#entry-sidebar input[type="text"],
-#entry-sidebar select {
-	width: 14em; /* to prevent inline with label */
-}
-.box {
-	border-bottom: 1px solid #ddd;
-	margin-bottom: 1em;
 }
 #comments {
@@ -620,8 +518,5 @@
 }
 #media-details {
-}
-.near-icon {
 	margin-left: 70px;
-	margin-bottom: 3em;
 }
 #media-details ul {
@@ -758,31 +653,26 @@
 /* -------------------------------------------------------------------- Themes */
 #themes {
-	margin: 0;
-	width: 100%;
-	padding: 0;
-}
-#themes h3 {
+	border-bottom: 1px solid #ccc;
+	margin: 1em 0;
 }
 #themes div.theme-details {
+	clear: left;
 	border-top: 1px solid #ccc;
-	padding: 12px;
-	display: inline-block;
-	vertical-align: top;
-	width: 284px;
-}
-.current-theme {
-	background: #eef;
+	padding: 1em 0;
 }
 #themes div.theme-details:hover {
-	background: #f0f0f0;
+	background: #eee;
 }
 #themes div.theme-details div.theme-shot {
+	float: left;
 }
 #themes div.theme-details div.theme-shot img {
 	display: block;
+	width: 57px;
+	height: 50px;
 	border: 1px solid #ccc;
-	margin-bottom: 1.5em;
 }
 #themes div.theme-details div.theme-info {
+	margin-left: 67px;
 }
 #themes div.theme-details div.theme-info span.theme-desc {
@@ -793,46 +683,33 @@
 }
 #themes div.theme-details div.theme-actions {
-}
-#themes-actions {
-	border-bottom: 1px solid #999;
-	margin-bottom: 3em;
-}
-.theme-css {
-	display: block;
-}
-
+	margin-left: 67px;
+}
 /* Themes list, JS version */
 #themes-wrapper {
-	display: table;
-}
-#themes-wrapper #themes {
-	display: table-cell;
-	vertical-align: top;
-	padding-left: 1em;
 }
 #theme-box {
-	display: table-cell;
-	vertical-align: top;
-	padding: 0; 
-	width: 312px;
-	border: 1px solid #ccc;
-	border-radius: 3px;
-}
-#theme-box .theme-shot, 
-#theme-box .theme-info,
-#theme-box .theme-actions {
-	background: #eef;
-	padding: 1em 16px;
-	margin: 0;
-}
-#theme-box .theme-shot img {
-	display: block;
+	border: 1px solid #999;
+	border-left: none;
+	padding: 5px;
+	float: right;
+	height: 420px;
+	width: 320px;
+	overflow: auto;
+}
+#theme-box div.theme-shot img {
+	display: block;
+	margin: 0 0 0 10px;
 	width: 280px;
 	height: 245px;
 	border: 1px solid #ccc;
 }
-#theme-box h4 {
-	color: #000;
-	background: #eef;
+#theme-box div.theme-info {
+	margin: 1em 0 0 10px;
+}
+#theme-box h3 {
+	margin: 0;
+}
+#theme-box div.theme-info span {
+	display: block;
 }
 #theme-box span.theme-version {
@@ -846,31 +723,44 @@
 	font-weight:bold;
 }
-#theme-box .theme-actions {
-	border-bottom: 1px solid #ccc;
-}
-#themes .theme-details-js {
+#theme-box div.theme-actions {
+	margin-left: 10px;
+}
+#themes-wrapper #themes {
+	border: 1px solid #999;
+	overflow: auto;
+	height: 420px;
+	padding: 5px;
+	margin: 0;
+}
+#themes div.theme-details-js {
 	float: left;
 	width: 120px;
 	height: 150px;
-	margin: 0 12px 24px;
-	padding: 12px 12px 0;
+	margin: 0 10px 20px;
+	padding: 10px 10px 0;
 	text-align: center;
 	background: #f3f3f3;
-	border: 1px solid #ddd;
+	border: 1px solid #f3f3f3;
 	cursor: pointer;
 	border-radius: 4px;
 }
-#themes .theme-details-js label {
+#themes div.theme-details-js label {
 	cursor: pointer;
 }
-#themes .theme-details-js.theme-selected {
-	background: #ddd;
+#themes div.theme-details-js.theme-selected {
+	background: #E5E3DA;
 	border: 1px solid #999;
 }
-#themes .theme-details-js .theme-shot img {
+#themes div.theme-details-js div.theme-shot img {
 	width: 120px;
 	height: 105px;
 	border: 1px solid #fff;
 }
+#themes div.theme-details-js h3 {
+	font-family: inherit;
+	font-weight: normal;
+	margin: 0;
+	padding: 0;
+}
 /* ----------------------------------------------------------  Plugins list */
 #plugins td.action {
@@ -886,21 +776,22 @@
 /* ------------------------------------------------------------------ contextual help */
 #help {
-	margin-top: 4em;
+	margin-top: 2em;
 	background: #f5f5f5;
 	z-index: 100;
 }
 #help-button {
-	background: transparent url(../images/page_help.png) no-repeat 6px center;
-	position: absolute;
-	top: 3.6rem;
+	position: fixed;
+	top: 3.2em;
 	right: 0px;
-	padding: 0 2rem 0 3rem;
 	cursor: pointer;
-	color: #2373A8;
-	line-height: 4.2rem;
-}
-#help-button span {
-	padding: .6rem 0 .1rem 0;
-	border-bottom: 1px solid #2373A8;
+	background: #fc3;
+	border: 1px solid #dde;
+	border-right: none;
+	font-size: 1.1em;
+	font-weight: bold;
+	text-transform: capitalize;
+	padding: .33em .75em .33em 1em;
+	border-radius: 1em 0 0 1em;
+	color: #444;
 }
 .help-box {
@@ -912,21 +803,13 @@
 }
 #content.with-help #help-button {
-	right: 28.2rem;
-	background-color: #f5f5f5;
-	position: fixed;
-	border-top: 2px solid #FFD478;
-	border-left: 2px solid #FFD478;
-	border-bottom: 2px solid #FFD478;
-	border-bottom-left-radius: 1rem;
-	border-top-left-radius: 1rem;
+	right: 282px;
 }
 #content.with-help #help {
 	display: block;
 	position: absolute;
-	top: 3.6rem;
+	top: 40px;
 	right: 0;
-	width: 28rem;
-	border-left: 2px solid #FFD478;
-	border-top: 2px solid #FFD478;
+	width: 280px;
+	border-left: 2px solid #fc3;
 	margin-top: 0;
 	padding: 10px 0 0 0;
@@ -946,33 +829,23 @@
 /* ------------------------------------------------------------------ popups */
 body.popup #wrapper, body.popup #top {
-	width: 100%;
-	padding: 0;
-}
-body.popup #wrapper {
+	margin-top: -1.5em;
 	float: none;
-	margin:0;
-	display: block;
-}
-body.popup h1, body.popup #top {
-	margin: 0;
-	border-bottom: 1px solid;
-	font-weight: normal;
-	color: #fff;
-	background: #575859;
-	font-size: 1.5em;
-	text-indent: .6rem;
-	line-height: 1.3em;
+}
+body.popup #top h1 {
+	background: transparent;
 }
 body.popup #main {
-	margin-bottom: 1em 0;
+	margin-left: -35px;
+	margin-bottom: 1em;
 }
 body.popup #content {
-	margin: 0;
-	padding: .6rem 0 !important;
-}
-body.popup #content h2 {
-	margin: 0 0 1em;
+	margin-left: 35px;
+	margin-left: 2em;  /* 3.2 */
+}
+body.popup #footer {
+	display: none; /* 3.2 */
 }
 body.popup #footer p {
+	margin-left: 35px;
 	border: none;
 }
@@ -986,6 +859,6 @@
 }
 p.error, p.message, p.static-msg {
-	padding-top: 1rem;
-	padding-bottom: 1rem;
+	padding-top: 1em;
+	padding-bottom: 1em;
 }
 div.error, p.error {
@@ -1001,32 +874,4 @@
 div.static-msg a, p.static-msg a {
 	color: #fff;
-}
-/* ------------------------------------------------------------------ navigation */
-.anchor-nav {
-	background: #575859;
-	color: #fff;
-	padding: .4rem 1.2rem;
-	float: right;
-}
-.nav_prevnext {
-	margin-bottom: 2em;
-	color: #fff;
-}
-.nav_prevnext a, a.back {
-	border: 1px solid #ddd;
-	padding: .2rem 2rem;
-	border-radius: 1rem;
-	background-color: #f0f0f0;
-}
-a.back:before {
-	content: "\ab\a0";
-}
-a.onblog_link {
-	color: #333;
-	float: right;
-	border: 1px solid #eee;
-	padding: .2rem 2rem;
-	border-radius: 1rem;
-	background-color: #ffe;
 }
 /* ------------------------------------------------------------------ debug */
@@ -1053,23 +898,7 @@
 /* -------------------------------------------------------------------- CLASSES COMMUNES */
 
-.no-margin, #entry-content label.no-margin {
-	margin: 0;
-}
-.border-top {
-	border-top: 1px solid #999;
-	padding-top: 1em;
-	margin-top:	1em;
-}
-.fieldset {
-	background: #fff;
-	border: 1px solid #aaa;
-	border-radius: 6px; 
-	padding: 1em .7em .5em;
-	margin-bottom: 1em;
-}
-.fieldset h3 {
-	color: #333;
-}
-
+.no-margin {
+	margin: 0;
+}
 /* paragraphe pour bouton Nouveau bidule */
 p.top-add {
@@ -1162,13 +991,14 @@
 -------------------------------------------------------- */
 table {
-	font-size: 1.2rem;
+	font-size: 1em;
 	border-collapse: collapse;
 	margin: 0 0 1em 0;
 }
 tr.line:hover {
-	background: #f3f3f3;
+	background: #ddd;
 }
 caption {
 	color: #333;
+	font-size: 1.2em;
 	font-weight: bold;
 	text-align: left;
@@ -1176,28 +1006,17 @@
 }
 
-td {
+th, td {
 	border-width: 0 0 1px 0;
 	border-style: solid;
-	border-color: #e3e3e3;
-	padding: .4rem .5rem;
+	border-color: #ccc;
+	padding: 3px 5px;
 	vertical-align: top;
 }
 th {
-	border-width: 1px 0 1px 0;
-	border-style: solid;
-	border-color: #ccc;
-	background: #f3f3ff;
-	padding: .4rem .5rem;
-	vertical-align: top;
 	text-align: left;
+	border-bottom-color: #666;
 }
 .noborder td, td.noborder, .noborder th, th.noborder {
-	border-width: 0 0 1px 0;
-	border-color: #ddd;
-	line-height: 2.4rem;
-	padding-bottom: 0;
-}
-.noborder p {
-	margin-bottom: 0;
+	border-width: 0;
 }
 table .maximal, table.maximal {
@@ -1213,9 +1032,4 @@
 table.settings, table.prefs {
 	width: 80%;
-	border: 1px solid #999;
-	margin-bottom: 3em; 
-}
-table.settings th, table.prefs th {
-	background: #f3f3ff;
 }
 table.settings th:first-child, table.prefs th:first-child {
@@ -1231,4 +1045,5 @@
 	width: 40%;
 }
+
 td.status {
 	vertical-align: middle;
@@ -1269,4 +1084,5 @@
 	padding-left: 15px;
 }
+
 /* ----------------------------------------------------------------- FORMS */
 form {
@@ -1275,5 +1091,5 @@
 	padding: 0;
 }
-fieldset {
+fieldset, .fieldset {
 	display: block;
 	margin: 0 0 1em 0;
@@ -1289,8 +1105,7 @@
 	border-width: 1px;
 	border-style: solid;
-	border-color: #333;
-	background: #fff;
+	border-color: #ccc;
+	background: #f5f5f5;
 	margin-bottom: 0.5em;
-	border-radius: 3px;
 }
 optgroup {
@@ -1306,5 +1121,5 @@
 	border-width: 1px;
 	border-style: solid;
-	border-color: #666 #ccc #ccc #999;
+	border-color: #000 #ccc #ccc #000;
 }
 input.invalid, textarea.invalid, select.invalid {
@@ -1315,5 +1130,5 @@
 }
 input, textarea, select, option {
-	font: 100% "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;
+	font: 1em "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;
 }
 input[type=text], input[type=password], textarea {
@@ -1321,9 +1136,12 @@
 	margin-right: .3em;
 }
+input[type=checkbox], input[type=radio] {
+	border: none;
+}
 textarea {
 	padding: 2px 0;
 }
-input[type=checkbox], input[type=radio], input[type=file] {
-	border: none;
+
+input[type=checkbox], input[type=radio] {
 	margin: 0;
 	padding: 0;
@@ -1344,5 +1162,4 @@
 	font-style:italic;
 	font-weight: normal;
-	text-transform: none;
 	color: #666;
 }
@@ -1356,12 +1173,9 @@
 }
 p.form-note.info {
-	background: #f5eaff url(info.png) no-repeat .3em .3em;
-	border: 1px solid #ddbaff;
-}
-.form-note a {border-bottom: 1px solid #ddbaff;}
-
-label.ib {
-	display: inline-block;
-}
+	background: #eef url(info.png) no-repeat .3em .2em;
+	border: 1px solid #99f;
+}
+.form-note a {border-bottom: 1px solid #99f;}
+
 label.classic {
 	display: inline;
@@ -1400,5 +1214,5 @@
 	display: inline;
 	position: absolute;
-	left: 14.5em;
+	left: 15em;
 	top: 0;
 }
@@ -1412,7 +1226,8 @@
 a.form-control {
 	display: none;
-	background: url(../images/expand.png) no-repeat .4rem center;
+	font-weight: bold;
+	background: url(magnifier.png) no-repeat 0 0;
+	color: green;
 	padding-left: 20px;
-	color: #000;
 }
 .constrained {
@@ -1424,4 +1239,10 @@
 
 /* --------------------------------------------------------------- buttons */
+h2 a.button {
+	color: #333;
+	font-weight: normal;
+	font-size: .75em;
+	vertical-align: middle;
+}
 /* commun */
 input[type=submit],
@@ -1429,16 +1250,16 @@
 input[type=button],
 a.button,
+a.back,
 a.submit {
 	display: inline-block;
+	outline: none;
 	cursor: pointer;
 	text-align: center;
 	text-decoration: none;
-	padding: .1em .5em;
+	padding: .1em .5em 0 .5em;
+	text-shadow: 0 1px 1px rgba(0,0,0,.3);
 	border-radius: .2em;
 	margin-bottom: .1em;
-	font-size: 1.2rem;
- }
-h4 a.button {font-weight: normal;}
-
+}
 /* validation */
 input[type=submit],
@@ -1446,12 +1267,8 @@
 a.submit {
 	color: #fff;
-	text-shadow: 0 -1px 1px #1A87B9;
-	background:#25A6E1;
-	background:-moz-linear-gradient(top,#25A6E1 0%,#188BC0 100%);
-	background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#25A6E1),color-stop(100%,#188BC0));
-	background:linear-gradient(top,#25A6E1 0%,#188BC0 100%);
-	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#25A6E1',endColorstr='#188BC0',GradientType=0);
-	border:1px solid #2C8FD1;
-
+	border: 1px solid #2373A8;
+	background: #2373A8;
+	background: -webkit-gradient(linear, left top, left bottom, from(#2C8FD1), to(#2373A8));
+	background: -moz-linear-gradient(top,  #2C8FD1,  #2373A8);
 }
 input[type=submit]:hover,
@@ -1461,12 +1278,13 @@
 input[type=button]:focus,
 a.submit:focus {
-	background:#188BC0;
-	background:-moz-linear-gradient(top,#188BC0 0%,#25A6E1 100%);
-	background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#188BC0),color-stop(100%,#25A6E1));
-	background:linear-gradient(top,#188BC0 0%,#25A6E1 100%);
-	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#25A6E1',endColorstr='#25A6E1',GradientType=0);
+	background: #2373A8;
+	background: -webkit-gradient(linear, left top, left bottom, from(#2373A8), to(#2C8FD1));
+	background: -moz-linear-gradient(top,  #2373A8,  #2C8FD1);
+	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#2373A8', endColorstr='#2C8FD1');
+	border: 1px solid #2C8FD1;
 }
 /* suppression et reset */
 a.button,
+a.back,
 input[type=submit].reset,
 input[type=submit].delete {
@@ -1476,18 +1294,20 @@
 	background: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#dfdfdf));
 	background: -moz-linear-gradient(top,  #f5f5f5,  #dfdfdf);
-	text-shadow:1px 1px 0px #fff;
+	text-shadow: none;
 	}
 a.button:hover,
+a.back:hover,
 input[type=reset]:hover,
 input[type=submit].reset:hover,
 input[type=submit].delete:hover,
 a.button:focus,
+a.back:focus,
 input[type=reset]:focus,
 input[type=submit].reset:focus,
 input[type=submit].delete:focus {
-	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #e9e9e9), color-stop(1, #f9f9f9) );
-	background:-moz-linear-gradient( center top, #e9e9e9 5%, #f9f9f9 100% );
-	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e9e9e9', endColorstr='#f9f9f9');
-	background-color:#e9e9e9;
+	background: #dfdfdf;
+	background: -webkit-gradient(linear, left top, left bottom, from(#dfdfdf), to(#f5f5f5));
+	background: -moz-linear-gradient(top,  #dfdfdf,  #f5f5f5);
+	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#e5e5e5', endColorstr='#f5f5f5');
 	}
 a.delete,
@@ -1495,5 +1315,5 @@
 input[type=submit].delete {
 	color: #c00;
-	padding-bottom: .2rem;
+	padding-bottom: .1em;
 }
 #entry-content .delete {
@@ -1516,25 +1336,17 @@
 	margin-left: 2em;
 }
-.button.add {
-	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #9dce2c), color-stop(1, #8cb82b) );
-	background:-moz-linear-gradient( center top, #9dce2c 5%, #8cb82b 100% );
-	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9dce2c', endColorstr='#8cb82b');
-	background-color:#9dce2c;
-	border:1px solid #83c41a;
-	padding:.6rem 1.8rem;
-	color: #000;
-	text-shadow: 1px 1px 0 #BBDB58;
-	font-weight: normal;
-	font-size: 1.4rem;
-}
-.button.add:hover, .button.add:active, .button.add:focus {
-	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #8cb82b), color-stop(1, #9dce2c) );
-	background:-moz-linear-gradient( center top, #8cb82b 5%, #9dce2c 100% );
-	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8cb82b', endColorstr='#9dce2c');
-	background-color:#8cb82b;
-	border:1px solid #83c41a;
-}
-.button-add:focus {
-	outline: dotted 1px;
+a.back:before {
+	content: "\ab\a0";
+}
+a.button.add {
+	border-radius: .5em;
+	margin-bottom: .1em;	
+	background: #2C8FD1 url(../images/add.png) no-repeat 6px center;
+	color: #fff;
+	padding: .2em 16px .2em 30px;
+	border: 1px solid #2373A8;
+}
+a.button.add:hover, a.button.add:focus {
+	background-color: #2373A8;
 }
 
@@ -1572,68 +1384,4 @@
 }
 
-/* ------------------------------------------------------- Filters */
-#filters-form {
-	border: 1px dashed #999;
-	border-radius: .6rem;
-	margin-bottom: 2em;
-	padding: .5em 1em 0;
-}
-#filters-form .table {
-	display: table;
-	width: 100%;
-	padding: 0;
-	margin-bottom: 1em;
-	margin-top: 1.5em;
-}
-#filters-form .cell {
-	padding: 0 2em 0 0;
-	display: table-cell;
-	vertical-align: top;
-}
-#filters-form .filters-options {
-	padding-left: 2em;
-	border-left: 1px solid #ccc;
-}
-#filters-form label.ib, span.ib {
-	width:7em;
-	display: inline-block;
-}
-#filters-form label.ibw, span.ibw {
-	width: 9em;
-	display: inline-block;
-}
-#filters-form select {
-	width: 14em;
-}
-
-/* ---------------------------------------------------- Pagination */
-.pagination {
-	height: 22px;
-	margin-top: 1em;
-	line-height: 22px;
-	padding: 0 1rem; 
-	border: 1px solid #ddd;
-	overflow: hidden; 
-	background: #e1e1e1; 
-	background: -moz-linear-gradient(center top , #f2f2f2, #e1e1e1); 
-	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f2f2f2), color-stop(100%,#e1e1e1)); 
-	-moz-border-radius: 4px; 
-	-webkit-border-radius: 4px; 
-	border-radius: 4px; 
-	clear: left;
-}
-.pagination a, .pagination strong {
-	height: 20px;
-	border: none;
-	padding: 2px 6px; 
-	background-color : transparent;
-	background-position : 50% 50%;
-	background-repeat: no-repeat;
-}
-.pagination a:hover, .pagination strong {
-	border-color : #ccc;
-	background-color: #fff;
-}
-
 /* --------------------------------------------------------------- password indcator */
 .pw-table {
@@ -1675,57 +1423,2 @@
 	width: 150px;
 }
-
-/* ---------------------------------------------------------------------------
-	Media queries vite fait en attendant la reprise complète du layout
----------------------------------------------------------------------------- */
-@media screen and (max-width: 920px) {
-	#top, #top h1 a {width: 42px !important; height:100%; overflow: hidden;
-}
-	#top h1 a:link {
-		background: transparent url(dc_logos/b-dotclear120.png) no-repeat -180px 6px; 
-		border-right: 1px solid #ccc;
-	}
-	#top h1 a:hover, #top h1 a:focus {
-		background: url(dc_logos/b-dotclear120.png) no-repeat -180px -94px;
-		border-right: 1px solid #A2CBE9;
-	}
-}
-@media screen and (max-width: 800px) {
-	#top, #info-boxes, #info-box1, #info-box2 {
-		display:inline-block;
-		vertical-align:middle;
-		margin:0;
-		padding:0;
-		line-height: 3.2rem;
-	}
-	#info-box1 {margin-left: 1rem;}
-	#info-box1 select {width: 14rem;}
-	#main-menu, #main, #content, #content h2, #entry-wrapper, #entry-sidebar, #entry-content, .two-cols .col, .two-cols .col:first-child {
-    	display:block;
-    	width: 98%;
-    	margin:0 auto;
-    	padding:0;
-    	float:none;
-    	text-align: left;
-    	clear: both;
-  	}
-  	#content {
-  		width: 100%;
-  		padding-top: .5em;
-  	}
-}
-@media screen and (max-width: 720px) {
-	.smallscreen {display: none;}
-	#help-button {width:20px; overflow: hidden;}
-	#info-box2 {float:none;}
-	#dashboard-items div {display: block;margin-bottom: 1em; padding: 0 1em;}
-}
-@media screen and (max-width: 492px) {
-	#header {height:3.6rem;}
-	#wrapper {font-size: 1.6rem;}
-	.page-title, #info-boxes, .media-item {display: inline-block;}
-	div.media-list .media-item {width: 90%; float: none}
-	#info-box1 select {width: 12rem; margin-right: .6rem;}
-	#info-box1 p.nomobile, label.nomobile {display: none;}
-	#help-button {height:26px; width:26px; background-color: #A2CBE9; padding: 0; margin:0;font-size: 1rem;line-height: 68px}
-}
Index: admin/style/install.css
===================================================================
--- admin/style/install.css	(revision 1330)
+++ admin/style/install.css	(revision 1065)
@@ -6,13 +6,9 @@
 	Please see http://dotclear.net/ for more details.
 */
-html {
-	font-size: 62.5%;
-}
 body.install {
-	font: 1.2rem/1.5 Arial,Helvetica,sans-serif;
-	color: #333;
-	background: #fff;
-	margin: 0;
-	padding: 0;
+	font: 0.875em Helvetica,Arial,sans-serif;
+	color: #000;
+	background-color: #fff;
+	line-height: 1.5em;
 }
 body.install #content {
@@ -26,5 +22,5 @@
 }
 body.install h1,h2 {
-	font-family: arial,Helvetica,sans-serif;
+	font-family: Helvetica,arial,sans-serif;
 }
 body.install h1 {
Index: admin/style/jsToolBar/jsToolBar.css
===================================================================
--- admin/style/jsToolBar/jsToolBar.css	(revision 1475)
+++ admin/style/jsToolBar/jsToolBar.css	(revision 1065)
@@ -2,5 +2,6 @@
 	border-width : 0 1px 1px 1px;
 	border-style : solid;
-	border-color : #ccc;
+	border-color : #000 #ccc #ccc #000;
+	padding-left: 5px;
 	background : #f9f9f9;
 }
@@ -8,10 +9,6 @@
   margin: 0;
   border: 0;
-  padding: 0;
 }
-.jstEditor textarea {
-  width: 99%;
-  padding: 1rem 0 0 1%;
-}
+
 .jstHandle {
 	height: 8px;
@@ -25,17 +22,9 @@
 
 .jstElements {
-	height: 28px;
-	padding: 0 1rem; 
-	border: 1px solid #ccc;
-	overflow: hidden; 
-	background: #e1e1e1; 
-	background: -moz-linear-gradient(center top , #f2f2f2, #e1e1e1); 
-	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f2f2f2), color-stop(100%,#e1e1e1)); 
-	-moz-border-radius: 4px 4px 0 0; 
-	-webkit-border-radius: 4px 4px 0 0; 
-	border-radius: 4px 4px 0 0; 
-	-webkit-box-shadow: 0 1px 0 #FFF inset; 
-	-moz-box-shadow: 0 1px 0 #FFF inset; 
-	box-shadow: 0 1px 0 #FFF inset;
+	padding: 3px 3px;
+	border-width: 1px 1px 0 1px;
+	border-style: solid;
+	border-color: #000 #ccc #ccc #000;
+	background: #dfdfdf;
 }
 
@@ -45,12 +34,13 @@
 .jstElements select {
 	width: 12em;
-	margin-right: .6rem;
 }
 .jstElements button {
-	width : 30px;
-	height: 28px;
-	border-style: groove;
-	border-width:  0 1px 0 0;
-	border-color: #666;
+	margin-right : 2px;
+	width : 20px;
+	height: 20px;
+	padding: 0;
+	border-style: solid;
+	border-width: 1px;
+	border-color: #dfdfdf;
 	background-color : transparent;
 	background-position : 50% 50%;
@@ -65,16 +55,11 @@
 }
 .jstElements span {
-	display : inline-block;
-	vertical-align: top;
-	background: #dfdfdf;
+	display : inline;
 }
 
 .jstSpacer {
-	width : 2px;
-	height: 28px;
-	margin-right: 0;
-	border-style: groove;
-	border-width:  0 1px 0 0;
-	border-color: #666;
+	width : 0px;
+	font-size: 1px;
+	margin-right: 4px;
 }
 
@@ -82,17 +67,19 @@
 	display: block;
 	list-style: none;
-	margin: 0;
+	margin: 0 0 0 -5px;
 	padding: 0 0 5px 0;
 	background: #dfdfdf;
 	border-top: 1px solid #999;
+	font-size: 90%;
+	font-weight: bold;
 }
 .jstSwitcher li {
 	display: inline;
 	margin: 0 0 0 5px;
-	padding: 2px 8px;
+	padding: 2px 4px;
 }
 .jstSwitcher li.jstSwitcherCurrent {
 	color: #fff;
-	background: #575859;
+	background: #999;
 	border-radius: 0 0 2px 2px;
 }
Index: admin/style/jsUpload/style.css
===================================================================
--- admin/style/jsUpload/style.css	(revision 1452)
+++ admin/style/jsUpload/style.css	(revision 1209)
@@ -76,5 +76,5 @@
 }
 
-.button.clean, .button.cancel, .button.add {
+.button.clean, .button.cancel, .button.add, .enhanced_uploader .fileupload-buttonbar .button.start {
 	display: none;
 }
@@ -107,13 +107,4 @@
 
 /* files */
-.files {
-	list-style-type: none;
-	margin-left: 0;
-	padding-left: 0;
-}
-.files li {
-	margin-left: 0;
-	padding-left: 0;
-}
 .upload-msg {
 	font-weight: bold;
@@ -179,7 +170,2 @@
 	clear: both;
 }
-
-.queue-message {
-	font-weight: bold;
-	margin: 0 0 1em 16px;
-}
Index: admin/trackbacks.php
===================================================================
--- admin/trackbacks.php	(revision 1459)
+++ admin/trackbacks.php	(revision 1179)
@@ -83,15 +83,5 @@
 /* DISPLAY
 -------------------------------------------------------- */
-if ($can_view_page) {
-	$breadcrumb = dcPage::breadcrumb(
-	array(
-		html::escapeHTML($core->blog->name) => '',
-		html::escapeHTML($post->post_title) => $core->getPostAdminURL($post->post_type,$id),
-		'<span class="page-title">'.$page_title.'</span>' => ''
-	));
-} else {
-	$breadcrumb = '';
-}
-dcPage::open($page_title,dcPage::jsLoad('js/_trackbacks.js'),$breadcrumb);
+dcPage::open($page_title,dcPage::jsLoad('js/_trackbacks.js'));
 
 # Exit if we cannot view page
@@ -104,4 +94,6 @@
 	dcPage::message(__('All pings sent.'));
 }
+
+echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_title.'</span></h2>';
 
 echo '<p><a class="back" href="'.$core->getPostAdminURL($post->post_type,$id).'">'.
@@ -127,10 +119,10 @@
 '<h3>'.__('Ping blogs').'</h3>'.
 '<form action="trackbacks.php" id="trackback-form" method="post">'.
-'<p><label for="tb_urls" class="area">'.__('URLs to ping:').'</label>'.
+'<p><label for="tb_urls" class="area">'.__('URLs to ping:').
 form::textarea('tb_urls',60,5,$tb_urls).
-'</p>'.
+'</label></p>'.
 
-'<p><label for="tb_excerpt" class="area">'.__('Send excerpt:').'</label>'.
-form::textarea('tb_excerpt',60,3,$tb_excerpt).'</p>'.
+'<p><label for="tb_excerpt" class="area">'.__('Send excerpt:').
+form::textarea('tb_excerpt',60,3,$tb_excerpt).'</label></p>'.
 
 '<p>'.form::hidden('id',$id).
@@ -155,5 +147,4 @@
 }
 
-dcPage::helpBlock('core_trackbacks');
 dcPage::close();
 ?>
Index: admin/update.php
===================================================================
--- admin/update.php	(revision 1474)
+++ admin/update.php	(revision 1479)
@@ -106,5 +106,8 @@
 					throw new Exception(
 						sprintf(__('Downloaded Dotclear archive seems to be corrupted. '.
-						'Try <a %s>download it</a> again.'),'href="'.$p_url.'?step=download"')
+						'Try <a %s>download it</a> again.'),'href="'.$p_url.'?step=download"').
+						' '.
+						__('If this problem persists try to '.
+						'<a href="http://dotclear.org/download">update manually</a>.')
 					);
 				}
@@ -171,13 +174,10 @@
 		dcPage::jsPageTabs($default_tab).
 		dcPage::jsLoad('js/_update.js')
-		: ''),
-	dcPage::breadcrumb(
-		array(
-			__('System') => '',
-			'<span class="page-title">'.__('Dotclear update').'</span>' => ''
-		))
+	: '')
 );
 
 if (!$core->error->flag()) {
+	echo '<h2>'.__('Dotclear update').'</h2>';
+	
 	if (!empty($_GET['nocache'])) {
 		dcPage::message(__('Manual checking of update done successfully.'));
@@ -200,5 +200,5 @@
 		echo
 			'<p class="static-msg">'.sprintf(__('Dotclear %s is available.'),$new_v).
-				($version_info ? ' <a href="'.$version_info.'">('.__('Information about this version').')</a>' : '').
+				($version_info ? ' <a href="'.$version_info.'">('.__('information about this version').')</a>' : '').
 				'</p>'.
 		
@@ -246,5 +246,5 @@
 	'<p class="message">'.
 	__("Congratulations, you're one click away from the end of the update.").
-	' <strong><a href="index.php?logout=1">'.__('Finish the update').'</a>.</strong>'.
+	' <strong><a href="index.php?logout=1">'.__('Finish the update.').'</a></strong>'.
 	'</p>';
 }
Index: admin/user.php
===================================================================
--- admin/user.php	(revision 1474)
+++ admin/user.php	(revision 1179)
@@ -15,5 +15,5 @@
 dcPage::checkSuper();
 
-$page_title = __('New user');
+$page_title = __('new user');
 
 $user_id = '';
@@ -174,12 +174,5 @@
 	
 	# --BEHAVIOR-- adminUserHeaders
-	$core->callBehavior('adminUserHeaders'),
-
-	dcPage::breadcrumb(
-		array(
-			__('System') => '',
-			__('Users') => 'users.php',
-			'<span class="page-title">'.$page_title.'</span>' => ''
-		))
+	$core->callBehavior('adminUserHeaders')
 );
 
@@ -191,4 +184,6 @@
 	dcPage::message(__('User has been successfully created.'));
 }
+
+echo '<h2><a href="users.php">'.__('Users').'</a> &rsaquo; <span class="page-title">'.$page_title.'</span></h2>';
 
 if ($user_id == $core->auth->userID()) {
@@ -203,62 +198,62 @@
 '<div class="two-cols">'.
 '<div class="col">'.
-'<p><label for="user_id" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Username:').'</label> '.
+'<p><label for="user_id" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Username:').' '.
 form::field('user_id',20,255,html::escapeHTML($user_id)).
-'</p>'.
+'</label></p>'.
 '<p class="form-note">'.__('At least 2 characters using letters, numbers or symbols.').'</p>'.
 
 '<p><label for="new_pwd" '.($user_id != '' ? '' : 'class="required"').'>'.
 ($user_id != '' ? '' : '<abbr title="'.__('Required field').'">*</abbr> ').
-($user_id != '' ? __('New password:') : __('Password:')).'</label> '.
+($user_id != '' ? __('New password:') : __('Password:')).' '.
 form::password('new_pwd',20,255).
-'</p>'.
+'</label></p>'.
 '<p class="form-note">'.__('Password must contain at least 6 characters.').'</p>'.
 
 '<p><label for="new_pwd_c" '.($user_id != '' ? '' : 'class="required"').'>'.
-($user_id != '' ? '' : '<abbr title="'.__('Required field').'">*</abbr> ').__('Confirm password:').'</label> '.
+($user_id != '' ? '' : '<abbr title="'.__('Required field').'">*</abbr> ').__('Confirm password:').' '.
 form::password('new_pwd_c',20,255).
-'</p>'.
-
-'<p><label for="user_name">'.__('Last Name:').'</label> '.
+'</label></p>'.
+
+'<p><label for="user_name">'.__('Last Name:').' '.
 form::field('user_name',20,255,html::escapeHTML($user_name)).
-'</p>'.
-
-'<p><label for="user_firstname">'.__('First Name:').'</label> '.
+'</label></p>'.
+
+'<p><label for="user_firstname">'.__('First Name:').' '.
 form::field('user_firstname',20,255,html::escapeHTML($user_firstname)).
-'</p>'.
-
-'<p><label for="user_displayname">'.__('Display name:').'</label> '.
+'</label></p>'.
+
+'<p><label for="user_displayname">'.__('Display name:').' '.
 form::field('user_displayname',20,255,html::escapeHTML($user_displayname)).
-'</p>'.
-
-'<p><label for="user_email">'.__('Email:').'</label> '.
+'</label></p>'.
+
+'<p><label for="user_email">'.__('Email:').' '.
 form::field('user_email',20,255,html::escapeHTML($user_email)).
-'</p>'.
+'</label></p>'.
 '<p class="form-note">'.__('Mandatory for password recovering procedure.').'</p>'.
 '</div>'.
 
 '<div class="col">'.
-'<p><label for="user_url">'.__('URL:').'</label> '.
+'<p><label for="user_url">'.__('URL:').' '.
 form::field('user_url',30,255,html::escapeHTML($user_url)).
-'</p>'.
-'<p><label for="user_post_format">'.__('Preferred format:').'</label> '.
+'</label></p>'.
+'<p><label for="user_post_format">'.__('Preferred format:').' '.
 form::combo('user_post_format',$formaters_combo,$user_options['post_format']).
-'</p>'.
-
-'<p><label for="user_post_status">'.__('Default entry status:').'</label> '.
+'</label></p>'.
+
+'<p><label for="user_post_status">'.__('Default entry status:').' '.
 form::combo('user_post_status',$status_combo,$user_post_status).
-'</p>'.
-
-'<p><label for="user_edit_size">'.__('Entry edit field height:').'</label> '.
+'</label></p>'.
+
+'<p><label for="user_edit_size">'.__('Entry edit field height:').' '.
 form::field('user_edit_size',5,4,(integer) $user_options['edit_size']).
-'</p>'.
-
-'<p><label for="user_lang">'.__('User language:').'</label> '.
+'</label></p>'.
+
+'<p><label for="user_lang">'.__('User language:').' '.
 form::combo('user_lang',$lang_combo,$user_lang,'l10n').
-'</p>'.
-
-'<p><label for="user_tz">'.__('User timezone:').'</label> '.
+'</label></p>'.
+
+'<p><label for="user_tz">'.__('User timezone:').' '.
 form::combo('user_tz',dt::getZones(true,true),$user_tz).
-'</p>';
+'</label></p>';
 
 if ($core->auth->allowPassChange()) {
@@ -283,6 +278,6 @@
 echo
 '<p><label for="your_pwd" '.($user_id != '' ? '' : 'class="required"').'>'.
-($user_id != '' ? '' : '<abbr title="'.__('Required field').'">*</abbr> ').__('Your password:').'</label>'.
-form::password('your_pwd',20,255).'</p>'.
+($user_id != '' ? '' : '<abbr title="'.__('Required field').'">*</abbr> ').__('Your password:').
+form::password('your_pwd',20,255).'</label></p>'.
 '<p class="clear"><input type="submit" name="save" accesskey="s" value="'.__('Save').'" />'.
 ($user_id != '' ? '' : ' <input type="submit" name="saveplus" value="'.__('Save and create another').'" />').
Index: admin/users.php
===================================================================
--- admin/users.php	(revision 1474)
+++ admin/users.php	(revision 1237)
@@ -39,5 +39,5 @@
 
 
-#?Get users
+# Get users
 $page = !empty($_GET['page']) ? $_GET['page'] : 1;
 $nb_per_page =  30;
@@ -94,11 +94,5 @@
 }
 
-dcPage::open(__('Users'),$starting_script,
-	dcPage::breadcrumb(
-		array(
-			__('System') => '',
-			'<span class="page-title">'.__('Users').'</span>' => ''
-		))
-);
+dcPage::open(__('Users'),$starting_script);
 
 if (!$core->error->flag())
@@ -111,33 +105,36 @@
 	}
 	
-	echo
+	echo 
+	'<h2 class="page-title">'.__('Users').'</h2>'.
 	'<p class="top-add"><strong><a class="button add" href="user.php">'.__('Create a new user').'</a></strong></p>';
 	
 	if (!$show_filters) {
-		echo '<p><a id="filter-control" class="form-control" href="#">'.__('Filter users list').'</a></p>';
+		echo '<p><a id="filter-control" class="form-control" href="#">'.__('Filters').'</a></p>';
 	}
 	
 	echo
 	'<form action="users.php" method="get" id="filters-form">'.
-	'<h3>'.__('Filter users list').'</h3>'.
+	'<fieldset class="two-cols"><legend>'.__('Filters').'</legend>'.
 	
-	'<div class="table">'.
-	'<div class="cell">'.
-	'<p><label for="q" class="ib">'.__('Search:').'</label> '.
-	form::field('q',20,255,html::escapeHTML($q)).'</p>'.
+	'<div class="col">'.
+	'<p><label for="sortby">'.__('Order by:').' '.
+	form::combo('sortby',$sortby_combo,$sortby).
+	'</label> '.
+	'<label for="order">'.__('Sort:').' '.
+	form::combo('order',$order_combo,$order).
+	'</label></p>'.
 	'</div>'.
-
-	'<div class="cell filters-options">'.
-	'<p><label for="sortby" class="ib">'.__('Order by:').'</label> '.
-	form::combo('sortby',$sortby_combo,$sortby).'</p> '.
-	'<p><label for="order" class="ib">'.__('Sort:').'</label> '.
-	form::combo('order',$order_combo,$order).'</p>'.
-	'<p><span class="label ib">'.__('Show').'</span> <label for="nb" class="classic">'.	
-	form::field('nb',3,3,$nb_per_page).' '.__('users per page').'</label></p> '.
+	
+	'<div class="col">'.
+	'<p><label for="q">'.__('Search:').' '.
+	form::field('q',20,255,html::escapeHTML($q)).
+	'</label></p>'.
+	'<p><label for="nb" class="classic">'.	form::field('nb',3,3,$nb_per_page).' '.
+	__('Users per page').'</label> '.
+	'<input type="submit" value="'.__('Apply filters').'" /></p>'.
 	'</div>'.
-	'</div>'.
-
-	'<p><input type="submit" value="'.__('Apply filters').'" />'.	
-	'<br class="clear" /></p>'. //Opera sucks
+	
+	'<br class="clear" />'. //Opera sucks
+	'</fieldset>'.
 	'</form>';
 	
Index: admin/users_actions.php
===================================================================
--- admin/users_actions.php	(revision 1499)
+++ admin/users_actions.php	(revision 1179)
@@ -131,26 +131,9 @@
 /* DISPLAY
 -------------------------------------------------------- */
-if (!empty($users) && empty($blogs) && $action == 'blogs') {
-	$breadcrumb = dcPage::breadcrumb(
-		array(
-			__('System') => '',
-			__('Users') => 'users.php',
-			'<span class="page-title">'.__('Permissions').'</span>' => ''
-		));
-} else {
-	$breadcrumb = dcPage::breadcrumb(
-		array(
-			__('System') => '',
-			__('Users') => 'users.php',
-			'<span class="page-title">'.__('Actions').'</span>' => ''
-		));
-}
-
 dcPage::open(
 	__('Users'),
 	dcPage::jsLoad('js/_users_actions.js').
 	# --BEHAVIOR-- adminUsersActionsHeaders
-	$core->callBehavior('adminUsersActionsHeaders'),
-	$breadcrumb
+	$core->callBehavior('adminUsersActionsHeaders')
 );
 
@@ -179,6 +162,4 @@
 }
 
-echo '<p><a class="back" href="'.html::escapeURL($redir).'">'.__('Back to user profile').'</a></p>';
-
 # --BEHAVIOR-- adminUsersActionsContent
 $core->callBehavior('adminUsersActionsContent',$core,$action,$hidden_fields);
@@ -196,5 +177,6 @@
 	}
 	
-	echo
+	echo 
+	'<h2><a href="users.php">'.__('Users').'</a> &rsaquo; <span class="page-title">'.__('Permissions').'</span></h2>'.
 	'<p>'.sprintf(
 		__('Choose one or more blogs to which you want to give permissions to users %s.'),
@@ -257,4 +239,5 @@
 	
 	echo 
+	'<h2><a href="users.php">'.__('Users').'</a> &rsaquo; <span class="page-title">'.__('Permissions').'</span></h2>'.
 	'<p>'.sprintf(
 		__('You are about to change permissions on the following blogs for users %s.'),
@@ -265,5 +248,5 @@
 	foreach ($blogs as $b)
 	{
-		echo '<h3>'.('Blog:').' <a href="blog.php?id='.html::escapeHTML($b).'">'.html::escapeHTML($b).'</a>'.
+		echo '<h3><a href="blog.php?id='.html::escapeHTML($b).'">'.html::escapeHTML($b).'</a>'.
 		form::hidden(array('blogs[]'),$b).'</h3>';
 		
@@ -285,15 +268,16 @@
 	
 	echo
-	'<div class="fieldset">'.
-	'<h3>'.__('Validate permissions').'</h3>'.
-	'<p><label for="your_pwd">'.__('Your password:').'</label>'.
-	form::password('your_pwd',20,255).'</p>'.
+	'<fieldset><legend>'.__('Validate permissions').'</legend>'.
+	'<p><label for="your_pwd">'.__('Your password:').
+	form::password('your_pwd',20,255).'</label></p>'.
+	'</fieldset>'.
 	'<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
 	$hidden_fields.
 	form::hidden(array('action'),'updateperm').
 	$core->formNonce().'</p>'.
-	'</div>'.
 	'</form>';
 }
+
+echo '<p><a class="back" href="'.html::escapeURL($redir).'">'.__('back').'</a></p>';
 
 dcPage::close();
Index: inc/admin/lib.dc.page.php
===================================================================
--- inc/admin/lib.dc.page.php	(revision 1468)
+++ inc/admin/lib.dc.page.php	(revision 1462)
@@ -49,5 +49,5 @@
 
 	# Top of admin page
-	public static function open($title='',$head='',$breadcrumb='')
+	public static function open($title='', $head='')
 	{
 		global $core;
@@ -73,9 +73,9 @@
 			}
 			$blog_box =
-			'<p><label for="switchblog" class="classic nomobile">'.
-			__('Blogs:').'</label> '.
+			'<p><label for="switchblog" class="classic">'.
+			__('Blogs:').' '.
 			$core->formNonce().
 			form::combo('switchblog',$blogs,$core->blog->id).
-			'</p>'.
+			'</label></p>'.
 			'<noscript><p><input type="submit" value="'.__('ok').'" /></p></noscript>';
 		}
@@ -93,9 +93,8 @@
 		"<head>\n".
 		'  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'."\n".
+		'  <title>'.$title.' - '.html::escapeHTML($core->blog->name).' - '.html::escapeHTML(DC_VENDOR_NAME).' - '.DC_VERSION.'</title>'."\n".
+
 		'  <meta name="ROBOTS" content="NOARCHIVE,NOINDEX,NOFOLLOW" />'."\n".
 		'  <meta name="GOOGLEBOT" content="NOSNIPPET" />'."\n".
-		'  <meta name="viewport" content="width=device-width, initial-scale=1.0" />'."\n".
-		'  <title>'.$title.' - '.html::escapeHTML($core->blog->name).' - '.html::escapeHTML(DC_VENDOR_NAME).' - '.DC_VERSION.'</title>'."\n".
-
 
 		self::jsLoadIE7().
@@ -134,11 +133,11 @@
 		'<form action="index.php" method="post">'.
 		$blog_box.
-		'<p class="nomobile"><a href="'.$core->blog->url.'" onclick="window.open(this.href);return false;" title="'.__('Go to site').' ('.__('new window').')'.'">'.__('Go to site').' <img src="images/outgoing.png" alt="" /></a>'.
+		'<p><a href="'.$core->blog->url.'" onclick="window.open(this.href);return false;" title="'.__('Go to site').' ('.__('new window').')'.'">'.__('Go to site').' <img src="images/outgoing.png" alt="" /></a>'.
 		'</p></form>'.
 		'</div>'.
 		'<div id="info-box2">'.
-		'<a class="smallscreen'.(preg_match('/index.php$/',$_SERVER['REQUEST_URI']) ? ' active' : '').'" href="index.php">'.__('My dashboard').'</a>'.
-		'<span class="smallscreen"> | </span><a class="smallscreen'.(preg_match('/preferences.php(\?.*)?$/',$_SERVER['REQUEST_URI']) ? ' active' : '').'" href="preferences.php">'.__('My preferences').'</a>'.
-		'<span class="smallscreen"> | </span><a href="index.php?logout=1" class="logout">'.sprintf(__('Logout %s'),$core->auth->userID()).' <img src="images/logout.png" alt="" /></a>'.
+		'<a'.(preg_match('/index.php$/',$_SERVER['REQUEST_URI']) ? ' class="active"' : '').' href="index.php">'.__('My dashboard').'</a>'.
+		'<span> | </span><a'.(preg_match('/preferences.php(\?.*)?$/',$_SERVER['REQUEST_URI']) ? ' class="active"' : '').' href="preferences.php">'.__('My preferences').'</a>'.
+		'<span> | </span><a href="index.php?logout=1" class="logout">'.sprintf(__('Logout %s'),$core->auth->userID()).' <img src="images/logout.png" alt="" /></a>'.
 		'</div>'.
 		'</div>'.
@@ -159,7 +158,4 @@
 		}
 
-		// Display breadcrumb (if given) before any error message
-		echo $breadcrumb;
-
 		if ($core->error->flag()) {
 			echo
@@ -180,10 +176,5 @@
 		"</div>\n".		// End of #main
 
-		'<div id="main-menu">'."\n".
-
-		'<form id="search-menu" action="search.php" method="get">'.
-		'<p><label for="q" class="hidden">'.__('Search:').' </label>'.form::field('q',30,255,'').
-		'<input type="submit" value="'.__('OK').'" /></p>'.
-		'</form>';
+		'<div id="main-menu">'."\n";
 
 		foreach ($menu as $k => $v) {
@@ -202,5 +193,5 @@
 		echo
 		'</div>'."\n".		// End of #main-menu
-		'<div id="footer"><a href="http://dotclear.org/" title="'.$text.'"><img src="style/dc_logos/w-dotclear90.png" alt="'.$text.'" /></a></div>'."\n".
+		'<div id="footer"><a href="http://dotclear.org/" title="'.$text.'"><img src="style/dc_logo_footer.png" alt="'.$text.'" /></a></div>'."\n".
 		"</div>\n";		// End of #wrapper
 
@@ -213,5 +204,5 @@
 	}
 
-	public static function openPopup($title='',$head='',$breadcrumb='')
+	public static function openPopup($title='', $head='')
 	{
 		global $core;
@@ -225,5 +216,4 @@
 		'xml:lang="'.$core->auth->getInfo('user_lang').'" '.
 		'lang="'.$core->auth->getInfo('user_lang').'">'."\n".
-		'<meta name="viewport" content="width=device-width, initial-scale=1.0" />'."\n".
 		"<head>\n".
 		'  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'."\n".
@@ -251,5 +241,5 @@
 		'<body id="dotclear-admin" class="popup">'."\n".
 
-		'<div id="top hidden"><h1>'.DC_VENDOR_NAME.'</h1></div>'."\n";
+		'<div id="top"><h1>'.DC_VENDOR_NAME.'</h1></div>'."\n";
 
 		echo
@@ -257,7 +247,4 @@
 		'<div id="main">'."\n".
 		'<div id="content">'."\n";
-
-		// display breadcrumb if given
-		echo $breadcrumb;
 
 		if ($core->error->flag()) {
@@ -277,23 +264,4 @@
 		"</div>\n".		// End of #wrapper
 		'</body></html>';
-	}
-
-	public static function breadcrumb($elements=null,$with_home_link=true,$echo=false)
-	{
-		// First item of array elements should be blog's name, System or Plugins
-		$res = '<h2>'.($with_home_link ?
-			'<a class="go_home" href="index.php"><img src="style/dashboard.png" alt="'.__('Go to dashboard').'" /></a>' :
-			'<img src="style/dashboard-alt.png" alt="" />');
-		$index = 0;
-		foreach ($elements as $element => $url) {
-			$res .= ($with_home_link ? ($index == 1 ? ' : ' : ' &rsaquo; ') : ($index == 0 ? ' ' : ' &rsaquo; ')).
-				($url ? '<a href="'.$url.'">' : '').$element.($url ? '</a>' : '');
-			$index++;
-		}
-		$res .= '</h2>';
-		if ($echo) {
-			echo $res;
-		}
-		return $res;
 	}
 
@@ -365,10 +333,4 @@
 	{
 		$args = func_get_args();
-
-		$args = new ArrayObject($args);
-
-		# --BEHAVIOR-- adminPageHelpBlock
-		$GLOBALS['core']->callBehavior('adminPageHelpBlock',$args);
-
 		if (empty($args)) {
 			return;
@@ -449,7 +411,5 @@
 
 		self::jsVar('dotclear.msg.help',
-			__('Help about this page')).
-		self::jsVar('dotclear.msg.help_hide',
-			__('Hide')).
+			__('help')).
 		self::jsVar('dotclear.msg.no_selection',
 			__('no selection')).
@@ -476,6 +436,4 @@
 		self::jsVar('dotclear.msg.confirm_delete_post',
 			__("Are you sure you want to delete this entry?")).
-		self::jsVar('dotclear.msg.click_to_unlock',
-			__("Click here to unlock the field")).
 		self::jsVar('dotclear.msg.confirm_spam_delete',
 			__('Are you sure you want to delete all spams?')).
@@ -520,4 +478,6 @@
 		self::jsVar('dotclear.msg.confirm_change_post_format',
 			__('You have unsaved changes. Switch post format will loose these changes. Proceed anyway?')).
+		self::jsVar('dotclear.msg.confirm_change_post_format_noconvert',
+			__("Warning: post format change will not convert existing content. You will need to apply new format by yourself. Proceed anyway?")).
 		self::jsVar('dotclear.msg.load_enhanced_uploader',
 			__('Loading enhanced uploader, please wait.')).
@@ -529,6 +489,6 @@
 	{
 		return
-		'<!--[if lt IE 9]>'."\n".
-		self::jsLoad('js/ie7/IE9.js').
+		'<!--[if lt IE 8]>'."\n".
+		self::jsLoad('js/ie7/IE8.js').
 		'<link rel="stylesheet" type="text/css" href="style/iesucks.css" />'."\n".
 		'<![endif]-->'."\n";
@@ -732,4 +692,57 @@
 	'<link rel="stylesheet" type="text/css" href="style/jsUpload/style.css" />'."\n".
 
+	'<script id="template-upload" type="text/x-tmpl">
+	{% for (var i=0, file; file=o.files[i]; i++) { %}
+	<div class="template-upload fade">
+	<div class="upload-file">
+	<div class="upload-fileinfo">
+		<span class="upload-filename">{%=file.name%}</span>
+		<span class="upload-filesize">({%=o.formatFileSize(file.size)%})</span>
+		<span class="upload-filecancel cancel">'.__('Cancel').'</span>
+		{% if (!o.files.error && !i && !o.options.autoUpload) { %}
+		<input type="submit" class="button start"  value="'.__('Send').'"/>
+		{% } %}
+		<span class="upload-filemsg"></span>
+	</div>
+	{% if (!o.files.error) { %}
+	<div class="upload-progress progress progress-success progress-striped active"><div class="bar" style="width:0%;"></div></div>
+	{% } %}
+	</div>
+	{% } %}
+	</script>
+	<!-- The template to display files available for download -->
+	<script id="template-download" type="text/x-tmpl">
+	{% for (var i=0, file; file=o.files[i]; i++) { %}
+	<div class="template-download fade">
+	<div class="upload-file">
+	<div class="upload-fileinfo">
+		<span class="upload-filename">{%=file.name%}</span>
+		<span class="upload-filesize">({%=o.formatFileSize(file.size)%})</span>
+		<span class="upload-filemsg{% if (file.error) { %} upload-error{% } %}">
+		{% if (file.error) { %}
+		'.__('Error:').' {%=file.error%}
+		{% } else { %}
+		'.__('File successfully uploaded.').'
+		{% } %}
+		</span>
+	</div>
+	<div class="upload-progress">
+		{% if (!file.error) { %}
+		<div class="bar" style="width:100%;">100%</div>
+		{% } %}
+	</div>
+	</div>
+	{% } %}
+	</script>'.
+
+	self::jsLoad('js/jsUpload/vendor/jquery.ui.widget.js').
+	self::jsLoad('js/jsUpload/tmpl.js').
+	self::jsLoad('js/jsUpload/load-image.js').
+	self::jsLoad('js/jsUpload/jquery.iframe-transport.js').
+	self::jsLoad('js/jsUpload/jquery.fileupload.js').
+	self::jsLoad('js/jsUpload/jquery.fileupload-process.js').
+	self::jsLoad('js/jsUpload/jquery.fileupload-resize.js').
+	self::jsLoad('js/jsUpload/jquery.fileupload-ui.js').
+
 	'<script type="text/javascript">'."\n".
 	"//<![CDATA[\n".
@@ -748,6 +761,4 @@
 	self::jsVar('dotclear.jsUpload.msg.clean',__('Clean')).
 	self::jsVar('dotclear.jsUpload.msg.upload',__('Upload')).
-	self::jsVar('dotclear.jsUpload.msg.send',__('Send')).
-	self::jsVar('dotclear.jsUpload.msg.file_successfully_uploaded',__('File successfully uploaded.')).
 	self::jsVar('dotclear.jsUpload.msg.no_file_in_queue',__('No file in queue.')).
 	self::jsVar('dotclear.jsUpload.msg.file_in_queue',__('1 file in queue.')).
@@ -756,16 +767,5 @@
 	self::jsVar('dotclear.jsUpload.base_url',$base_url).
 	"\n//]]>\n".
-	"</script>\n".
-
-	self::jsLoad('js/jsUpload/vendor/jquery.ui.widget.js').
-	self::jsLoad('js/jsUpload/tmpl.js').
-	self::jsLoad('js/jsUpload/template-upload.js').
-	self::jsLoad('js/jsUpload/template-download.js').
-	self::jsLoad('js/jsUpload/load-image.js').
-	self::jsLoad('js/jsUpload/jquery.iframe-transport.js').
-	self::jsLoad('js/jsUpload/jquery.fileupload.js').
-	self::jsLoad('js/jsUpload/jquery.fileupload-process.js').
-	self::jsLoad('js/jsUpload/jquery.fileupload-resize.js').
-	self::jsLoad('js/jsUpload/jquery.fileupload-ui.js');
+	"</script>\n";
 }
 
Index: inc/admin/lib.pager.php
===================================================================
--- inc/admin/lib.pager.php	(revision 1476)
+++ inc/admin/lib.pager.php	(revision 1364)
@@ -42,10 +42,5 @@
 			$pager->html_next = $this->html_next;
 			$pager->var_page = 'page';
-			$entries = array();
-			if (isset($_REQUEST['entries'])) {
-				foreach ($_REQUEST['entries'] as $v) {
-					$entries[(integer)$v]=true;
-				}
-			}
+			
 			$html_block =
 			'<table class="clear"><tr>'.
@@ -63,5 +58,5 @@
 			}
 			
-			echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 			
 			$blocks = explode('%s',$html_block);
@@ -71,14 +66,14 @@
 			while ($this->rs->fetch())
 			{
-				echo $this->postLine(isset($entries[$this->rs->post_id]));
+				echo $this->postLine();
 			}
 			
 			echo $blocks[1];
 			
-			echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 		}
 	}
 	
-	private function postLine($checked)
+	private function postLine()
 	{
 		if ($this->core->auth->check('categories',$this->core->blog->id)) {
@@ -98,14 +93,14 @@
 		switch ($this->rs->post_status) {
 			case 1:
-				$img_status = sprintf($img,__('Published'),'check-on.png');
+				$img_status = sprintf($img,__('published'),'check-on.png');
 				break;
 			case 0:
-				$img_status = sprintf($img,__('Unpublished'),'check-off.png');
+				$img_status = sprintf($img,__('unpublished'),'check-off.png');
 				break;
 			case -1:
-				$img_status = sprintf($img,__('Scheduled'),'scheduled.png');
+				$img_status = sprintf($img,__('scheduled'),'scheduled.png');
 				break;
 			case -2:
-				$img_status = sprintf($img,__('Pending'),'check-wrn.png');
+				$img_status = sprintf($img,__('pending'),'check-wrn.png');
 				break;
 		}
@@ -113,10 +108,10 @@
 		$protected = '';
 		if ($this->rs->post_password) {
-			$protected = sprintf($img,__('Protected'),'locker.png');
+			$protected = sprintf($img,__('protected'),'locker.png');
 		}
 		
 		$selected = '';
 		if ($this->rs->post_selected) {
-			$selected = sprintf($img,__('Selected'),'selected.png');
+			$selected = sprintf($img,__('selected'),'selected.png');
 		}
 		
@@ -133,5 +128,5 @@
 		$res .=
 		'<td class="nowrap">'.
-		form::checkbox(array('entries[]'),$this->rs->post_id,$checked,'','',!$this->rs->isEditable()).'</td>'.
+		form::checkbox(array('entries[]'),$this->rs->post_id,'','','',!$this->rs->isEditable()).'</td>'.
 		'<td class="maximal"><a href="'.$this->core->getPostAdminURL($this->rs->post_type,$this->rs->post_id).'">'.
 		html::escapeHTML($this->rs->post_title).'</a></td>'.
@@ -175,5 +170,5 @@
 			}
 			
-			echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 			
 			$blocks = explode('%s',$html_block);
@@ -188,5 +183,5 @@
 			echo $blocks[1];
 			
-			echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 		}
 	}
@@ -197,14 +192,14 @@
 		switch ($this->rs->post_status) {
 			case 1:
-				$img_status = sprintf($img,__('Published'),'check-on.png');
+				$img_status = sprintf($img,__('published'),'check-on.png');
 				break;
 			case 0:
-				$img_status = sprintf($img,__('Unpublished'),'check-off.png');
+				$img_status = sprintf($img,__('unpublished'),'check-off.png');
 				break;
 			case -1:
-				$img_status = sprintf($img,__('Scheduled'),'scheduled.png');
+				$img_status = sprintf($img,__('scheduled'),'scheduled.png');
 				break;
 			case -2:
-				$img_status = sprintf($img,__('Pending'),'check-wrn.png');
+				$img_status = sprintf($img,__('pending'),'check-wrn.png');
 				break;
 		}
@@ -212,10 +207,10 @@
 		$protected = '';
 		if ($this->rs->post_password) {
-			$protected = sprintf($img,__('Protected'),'locker.png');
+			$protected = sprintf($img,__('protected'),'locker.png');
 		}
 		
 		$selected = '';
 		if ($this->rs->post_selected) {
-			$selected = sprintf($img,__('Selected'),'selected.png');
+			$selected = sprintf($img,__('selected'),'selected.png');
 		}
 		
@@ -272,5 +267,5 @@
 			}
 			
-			echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 			
 			$blocks = explode('%s',$html_block);
@@ -285,5 +280,5 @@
 			echo $blocks[1];
 			
-			echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 		}
 	}
@@ -311,14 +306,14 @@
 		switch ($this->rs->comment_status) {
 			case 1:
-				$img_status = sprintf($img,__('Published'),'check-on.png');
+				$img_status = sprintf($img,__('published'),'check-on.png');
 				break;
 			case 0:
-				$img_status = sprintf($img,__('Unpublished'),'check-off.png');
+				$img_status = sprintf($img,__('unpublished'),'check-off.png');
 				break;
 			case -1:
-				$img_status = sprintf($img,__('Pending'),'check-wrn.png');
+				$img_status = sprintf($img,__('pending'),'check-wrn.png');
 				break;
 			case -2:
-				$img_status = sprintf($img,__('Junk'),'junk.png');
+				$img_status = sprintf($img,__('junk'),'junk.png');
 				break;
 		}
@@ -379,5 +374,5 @@
 			}
 			
-			echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 			
 			$blocks = explode('%s',$html_block);
@@ -392,5 +387,5 @@
 			echo $blocks[1];
 			
-			echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 		}
 	}
Index: inc/admin/prepend.php
===================================================================
--- inc/admin/prepend.php	(revision 1337)
+++ inc/admin/prepend.php	(revision 1179)
@@ -284,5 +284,5 @@
 	# Set menu titles
 	
-	$_menu['System']->title = __('System settings');
+	$_menu['System']->title = __('System');
 	$_menu['Blog']->title = __('Blog');
 	$_menu['Plugins']->title = __('Plugins');
Index: inc/core/class.dc.blog.php
===================================================================
--- inc/core/class.dc.blog.php	(revision 1468)
+++ inc/core/class.dc.blog.php	(revision 1429)
@@ -81,5 +81,5 @@
 			$this->desc = $b->blog_desc;
 			$this->url = $b->blog_url;
-			$this->host = http::getHostFromURL($this->url);
+			$this->host = preg_replace('|^([a-z]{3,}://)(.*?)/.*$|','$1$2',$this->url);
 			$this->creadt = strtotime($b->blog_creadt);
 			$this->upddt = strtotime($b->blog_upddt);
@@ -91,13 +91,13 @@
 			$this->public_path = path::fullFromRoot($this->settings->system->public_path,DC_ROOT);
 			
-			$this->post_status['-2'] = __('Pending');
-			$this->post_status['-1'] = __('Scheduled');
-			$this->post_status['0'] = __('Unpublished');
-			$this->post_status['1'] = __('Published');
-			
-			$this->comment_status['-2'] = __('Junk');
-			$this->comment_status['-1'] = __('Pending');
-			$this->comment_status['0'] = __('Unpublished');
-			$this->comment_status['1'] = __('Published');
+			$this->post_status['-2'] = __('pending');
+			$this->post_status['-1'] = __('scheduled');
+			$this->post_status['0'] = __('unpublished');
+			$this->post_status['1'] = __('published');
+			
+			$this->comment_status['-2'] = __('junk');
+			$this->comment_status['-1'] = __('pending');
+			$this->comment_status['0'] = __('unpublished');
+			$this->comment_status['1'] = __('published');
 			
 			# --BEHAVIOR-- coreBlogConstruct
@@ -203,22 +203,26 @@
 	@param	ids		<b>mixed</b>		Comment(s) ID(s)
 	@param	del		<b>boolean</b>		If comment is delete, set this to true
-	*/
-	public function triggerComments($ids,$del=false)
+	@param	affected_posts		<b>mixed</b>		Posts(s) ID(s)
+	*/
+	public function triggerComments($ids, $del=false, $affected_posts=null)
 	{
 		$co_ids = dcUtils::cleanIds($ids);
+		$a_ids = dcUtils::cleanIds($affected_posts);
+		$a_tbs = array();
 		
 		# a) Retrieve posts affected by comments edition
-		$strReq = 
-			'SELECT post_id, comment_trackback '.
-			'FROM '.$this->prefix.'comment '.
-			'WHERE comment_id'.$this->con->in($co_ids).
-			'GROUP BY post_id,comment_trackback';
-		
-		$rs = $this->con->select($strReq);
-		
-		$a_ids = $a_tbs = array();
-		while ($rs->fetch()) {
-			$a_ids[] = (integer) $rs->post_id;
-			$a_tbs[] = (integer) $rs->comment_trackback;
+		if (empty($a_ids)) {
+			$strReq = 
+				'SELECT post_id, comment_trackback '.
+				'FROM '.$this->prefix.'comment '.
+				'WHERE comment_id'.$this->con->in($co_ids).
+				'GROUP BY post_id,comment_trackback';
+			
+			$rs = $this->con->select($strReq);
+			
+			while ($rs->fetch()) {
+				$a_ids[] = (integer) $rs->post_id;
+				$a_tbs[] = (integer) $rs->comment_trackback;
+			}
 		}
 		
@@ -255,4 +259,5 @@
 		{
 			$nb_comment = $nb_trackback = 0;
+			//$cur->nb_comment = $nb_comment;
 			foreach($b_ids as $b_key => $b_id)
 			{
@@ -505,5 +510,11 @@
 		$this->core->callBehavior('coreBeforeCategoryCreate',$this,$cur);
 		
-		$this->categories()->addNode($cur,$parent);
+		$id = $this->categories()->addNode($cur,$parent);
+		# Update category's cursor
+		$rs = $this->getCategory($id);
+		if (!$rs->isEmpty()) {
+			$cur->cat_lft = $rs->cat_lft;
+			$cur->cat_rgt = $rs->cat_rgt;
+		}
 		
 		# --BEHAVIOR-- coreAfterCategoryCreate
@@ -2218,6 +2229,19 @@
 		$co_ids = dcUtils::cleanIds($ids);
 		
-		if (empty($ids)) {
+		if (empty($co_ids)) {
 			throw new Exception(__('No such comment ID'));
+		}
+		
+		# Retrieve posts affected by comments edition
+		$affected_posts = array();
+		$strReq =
+			'SELECT distinct(post_id) '.
+			'FROM '.$this->prefix.'comment '.
+			'WHERE comment_id'.$this->con->in($co_ids);
+		
+		$rs = $this->con->select($strReq);
+		
+		while ($rs->fetch()) {
+			$affected_posts[] = (integer) $rs->post_id;
 		}
 		
@@ -2249,5 +2273,5 @@
 		
 		$this->con->execute($strReq);
-		$this->triggerComments($co_ids,true);
+		$this->triggerComments($co_ids, true, $affected_posts);
 		$this->triggerBlog();
 	}
@@ -2304,6 +2328,8 @@
 		
 		if ($cur->comment_site !== null && $cur->comment_site != '') {
-			if (!preg_match('|^http(s?)://|',$cur->comment_site)) {
+			if (!preg_match('|^http(s?)://|i',$cur->comment_site, $matches)) {
 				$cur->comment_site = 'http://'.$cur->comment_site;
+			}else{
+				$cur->comment_site = strtolower($matches[0]).substr($cur->comment_site, strlen($matches[0]));
 			}
 		}
Index: inc/core/class.dc.media.php
===================================================================
--- inc/core/class.dc.media.php	(revision 1468)
+++ inc/core/class.dc.media.php	(revision 1381)
@@ -499,7 +499,8 @@
 	@param	post_id	<b>integer</b>		Post ID
 	@param	media_id	<b>integer</b>		Optionnal media ID
-	@return	<b>array</b> Array of fileItems
-	*/
-	public function getPostMedia($post_id,$media_id=null)
+	@param	return_rs	<b>boolean</b>		Whether to return a resultset (true) or an array (false, default value).
+	@return	<b>array</b> Array or ResultSet of fileItems
+	*/
+	public function getPostMedia($post_id,$media_id=null,$return_rs=false)
 	{
 		$params = array(
@@ -517,9 +518,9 @@
 			$f = $this->fileRecord($rs);
 			if ($f !== null) {
-				$res[] = $f;
-			}
-		}
-		
-		return $res;
+				$res[] = $return_rs ? new ArrayObject($f) : $f;
+			}
+		}
+		
+		return $return_rs ? staticRecord::newFromArray($res) : $res;
 	}
 	
Index: inc/core/class.dc.update.php
===================================================================
--- inc/core/class.dc.update.php	(revision 1280)
+++ inc/core/class.dc.update.php	(revision 1231)
@@ -32,4 +32,5 @@
 	
 	protected $cache_ttl = '-6 hours';
+	protected $nocache_ttl = '-2 mins';
 	protected $forced_files = array();
 	
@@ -55,9 +56,10 @@
 	 * 
 	 * @param version		string	Current version to compare
+	 * @param nocache		boolean	Force checking
 	 * @return string				Latest version if available
 	 */
-	public function check($version)
-	{
-		$this->getVersionInfo();
+	public function check($version, $nocache=false)
+	{
+		$this->getVersionInfo($nocache);
 		$v = $this->getVersion();
 		if ($v && version_compare($version,$v,'<')) {
@@ -68,8 +70,13 @@
 	}
 	
-	public function getVersionInfo()
-	{
+	public function getVersionInfo($nocache=false)
+	{
+		# Check minimum time without cache (prevents from server flood)
+		if ($nocache && is_readable($this->cache_file) && filemtime($this->cache_file) > strtotime($this->nocache_ttl)) {
+			$nocache = false;
+		}
+		
 		# Check cached file
-		if (is_readable($this->cache_file) && filemtime($this->cache_file) > strtotime($this->cache_ttl))
+		if (is_readable($this->cache_file) && filemtime($this->cache_file) > strtotime($this->cache_ttl) && !$nocache)
 		{
 			$c = @file_get_contents($this->cache_file);
Index: inc/load_plugin_file.php
===================================================================
--- inc/load_plugin_file.php	(revision 1280)
+++ inc/load_plugin_file.php	(revision 1241)
@@ -86,5 +86,5 @@
 }
 
-http::$cache_max_age = 7200;
+http::$cache_max_age = (!defined('DC_CACHE_MAX_AGE') ? 604800 : DC_CACHE_MAX_AGE);
 http::cache(array_merge(array($PF),get_included_files()));
 
Index: inc/prepend.php
===================================================================
--- inc/prepend.php	(revision 1468)
+++ inc/prepend.php	(revision 1352)
@@ -123,5 +123,5 @@
 # Constants
 define('DC_ROOT',path::real(dirname(__FILE__).'/..'));
-define('DC_VERSION','2.6-dev');
+define('DC_VERSION','2.5.3-dev');
 define('DC_DIGESTS',dirname(__FILE__).'/digests');
 define('DC_L10N_ROOT',dirname(__FILE__).'/../locales');
Index: inc/public/class.dc.template.php
===================================================================
--- inc/public/class.dc.template.php	(revision 1280)
+++ inc/public/class.dc.template.php	(revision 1249)
@@ -67,4 +67,5 @@
 		$this->addValue('BlogLanguage',array($this,'BlogLanguage'));
 		$this->addValue('BlogThemeURL',array($this,'BlogThemeURL'));
+		$this->addValue('BlogParentThemeURL',array($this,'BlogParentThemeURL'));
 		$this->addValue('BlogUpdateDate',array($this,'BlogUpdateDate'));
 		$this->addValue('BlogID',array($this,'BlogID'));
@@ -839,5 +840,5 @@
 	
 	/*dtd
-	<!ELEMENT tpl:BlogThemeURL - O -- Blog's current Themei URL -->
+	<!ELEMENT tpl:BlogThemeURL - O -- Blog's current Theme URL -->
 	*/
 	public function BlogThemeURL($attr)
@@ -845,4 +846,14 @@
 		$f = $this->getFilters($attr);
 		return '<?php echo '.sprintf($f,'$core->blog->settings->system->themes_url."/".$core->blog->settings->system->theme').'; ?>';
+	}
+	
+	/*dtd
+	<!ELEMENT tpl:BlogParentThemeURL - O -- Blog's current Theme's parent URL -->
+	*/
+	public function BlogParentThemeURL($attr)
+	{
+		$f = $this->getFilters($attr);
+		$parent = '$core->themes->moduleInfo($core->blog->settings->system->theme,\'parent\')';
+		return '<?php echo '.sprintf($f,'$core->blog->settings->system->themes_url."/".('."$parent".' ? '."$parent".' : $core->blog->settings->system->theme)').'; ?>';
 	}
     
Index: locales/_pot/main.pot
===================================================================
--- locales/_pot/main.pot	(revision 1425)
+++ locales/_pot/main.pot	(revision 1039)
@@ -1091,5 +1091,5 @@
 
 #: admin/comments.php:214
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr ""
 
Index: locales/_pot/plugins.pot
===================================================================
--- locales/_pot/plugins.pot	(revision 1354)
+++ locales/_pot/plugins.pot	(revision 963)
@@ -2311,5 +2311,5 @@
 
 #: plugins/widgets/index.php:250
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/bn/help/blowupConfig.html
===================================================================
--- locales/bn/help/blowupConfig.html	(revision 1280)
+++ locales/bn/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/bn/main.po
===================================================================
--- locales/bn/main.po	(revision 1499)
+++ locales/bn/main.po	(revision 1039)
@@ -459,5 +459,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "আপনি বর্তমানে ব্যবহার করছেন \"%s\""
 
@@ -759,5 +759,5 @@
 msgstr "মন্তব্যের লেখক:"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "আপনার একটি স্প্যাম মন্তব্য আছে।"
 
Index: locales/bn/plugins.po
===================================================================
--- locales/bn/plugins.po	(revision 1499)
+++ locales/bn/plugins.po	(revision 1126)
@@ -838,5 +838,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr ""
 
@@ -1540,5 +1540,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/ca/help/blowupConfig.html
===================================================================
--- locales/ca/help/blowupConfig.html	(revision 1280)
+++ locales/ca/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/ca/main.po
===================================================================
--- locales/ca/main.po	(revision 1499)
+++ locales/ca/main.po	(revision 1039)
@@ -468,5 +468,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr ""
 
@@ -787,5 +787,5 @@
 msgstr "Autor del comentari:"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "Te un comentari no desitjat."
 
Index: locales/ca/plugins.po
===================================================================
--- locales/ca/plugins.po	(revision 1499)
+++ locales/ca/plugins.po	(revision 1126)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr ""
 
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/cs/help/blowupConfig.html
===================================================================
--- locales/cs/help/blowupConfig.html	(revision 1280)
+++ locales/cs/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/cs/main.po
===================================================================
--- locales/cs/main.po	(revision 1499)
+++ locales/cs/main.po	(revision 1039)
@@ -457,5 +457,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "Používáte \"%s\" vzhled"
 
@@ -764,5 +764,5 @@
 msgstr "Autor komentáře:"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "Máte jeden spam komentář."
 
Index: locales/cs/plugins.po
===================================================================
--- locales/cs/plugins.po	(revision 1499)
+++ locales/cs/plugins.po	(revision 1126)
@@ -843,5 +843,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr "Tímto naimportujete zálohu jednoho blogu jako nový obsah tohoto blogu: %s."
 
@@ -1565,5 +1565,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/da/help/blowupConfig.html
===================================================================
--- locales/da/help/blowupConfig.html	(revision 1280)
+++ locales/da/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/da/main.po
===================================================================
--- locales/da/main.po	(revision 1499)
+++ locales/da/main.po	(revision 1039)
@@ -459,5 +459,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "Du bruger lige nu \"%s\""
 
@@ -765,5 +765,5 @@
 msgstr "Kommentar ejer:"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "Du har en spam kommentar."
 
Index: locales/da/plugins.po
===================================================================
--- locales/da/plugins.po	(revision 1499)
+++ locales/da/plugins.po	(revision 1126)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr ""
 
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/de/help/blowupConfig.html
===================================================================
--- locales/de/help/blowupConfig.html	(revision 1280)
+++ locales/de/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>Du kannst ein Bild Deiner Wahl statt des Standardbildes einsetzen.</p>
 
-<p>Wenn Du  "Benutzerdefiniert..." in der Bilderliste ausw&auml;hlst, dann hast Du die M&ouml;glichkeit, Dein eigenes Bild upzuloaden. <strong>Das Dateiformat muss entweder JPG der PNG sein und es muss 800px breit sein.</strong>
+<p>Wenn Du  "Benutzerdefiniert..." in der Bilderliste ausw&auml;hlst, dann hast Du die M&ouml;glichkeit, Dein eigenes Bild upzuloaden. <strong>Das Dateiformat muss entweder JPG der PNG sein und es muss 800px breit sein.</strong></p>
 
 <p>Wenn Du ein JPG-Bild uploadest, dann wird automatisch ein Rahmen um das Bild gesetzt. Dies geschieht nicht bei der Verwendung eines PNG-Bildes und die Transparenz wird ebenfalls beibehalten.</p>
Index: locales/de/main.po
===================================================================
--- locales/de/main.po	(revision 1499)
+++ locales/de/main.po	(revision 1039)
@@ -457,5 +457,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "Du verwendest gerade \"%s\""
 
@@ -763,5 +763,5 @@
 msgstr "Autor des Kommentars"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "Du hast Spam in deinen Kommentaren."
 
Index: locales/de/plugins.po
===================================================================
--- locales/de/plugins.po	(revision 1499)
+++ locales/de/plugins.po	(revision 1126)
@@ -843,5 +843,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr "Dies wird einen einzelnen Blog als neuen Inhalt in den aktuellen Blog importieren: %s."
 
@@ -1569,5 +1569,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/en/help/post.html
===================================================================
--- locales/en/help/post.html	(revision 1459)
+++ locales/en/help/post.html	(revision 175)
@@ -88,4 +88,24 @@
 </dl>
 
+<h3>Trackback</h3>
+<p>To make a trackback, click on the <em>Ping blogs</em> link.
+You will not see this link if your entry's status is not <em>published</em>.</p>
+
+<dl>
+  <dt>URLs to ping</dt>
+  <dd>Paste here the trackback URLs you found in the posts you want to ping.</dd>
+  
+  
+  <dt>Send excerpt</dt>
+  <dd>This field defaults to your entry's first few sentences. That's wht will be
+  sent to the blog you're pinging, along with a link to your post. You can modify
+  the excerpt by editing this field.</dd>
+  
+  
+  <dt>Auto discover ping URLs</dt>
+  <dd>If your entries links specific posts and if the blog carrying those posts
+  is set to allow it, this tool will find the URLs to ping for you.</dd>
+</dl>
+
 <h3>Comments</h3>
 <dl>
Index: ocales/en/help/trackbacks.html
===================================================================
--- locales/en/help/trackbacks.html	(revision 1459)
+++ 	(revision )
@@ -1,29 +1,0 @@
-<html>
-<head>
-  <title>Editing an entry</title>
-</head>
-
-<body>
-
-<h3>Trackback</h3>
-<p>To make a trackback, click on the <em>Ping blogs</em> link.
-You will not see this link if your entry's status is not <em>published</em>.</p>
-
-<dl>
-  <dt>URLs to ping</dt>
-  <dd>Paste here the trackback URLs you found in the posts you want to ping.</dd>
-  
-  
-  <dt>Send excerpt</dt>
-  <dd>This field defaults to your entry's first few sentences. That's wht will be
-  sent to the blog you're pinging, along with a link to your post. You can modify
-  the excerpt by editing this field.</dd>
-  
-  
-  <dt>Auto discover ping URLs</dt>
-  <dd>If your entries links specific posts and if the blog carrying those posts
-  is set to allow it, this tool will find the URLs to ping for you.</dd>
-</dl>
-
-</body>
-</html>
Index: locales/en/help/user_pref.html
===================================================================
--- locales/en/help/user_pref.html	(revision 243)
+++ locales/en/help/user_pref.html	(revision 1487)
@@ -8,5 +8,5 @@
 <h3>My profile</h3>
 <dl>
-  <dt>Name, First name</dt>
+  <dt>Last name, First name</dt>
   <dd>If the display name is empty, the author's name will be displayed
   as his Firstname and Name as set here.</dd>
@@ -37,5 +37,5 @@
 <dl>  
   <dt>Preferred format</dt>
-  <dd>To choose the prefered post syntax. Wiki is a simplified syntax
+  <dd>To choose the preferred post syntax. Wiki is a simplified syntax
   and will be converted to valid xhtml&nbsp;; Unless you have a perfect
   understanding of html, we advise you to choose the wiki syntax.</dd>
@@ -59,6 +59,5 @@
   
   <dt>Activate enhanced uploader in media manager</dt>
-  <dd>This option allows you to upload several files at the same time on your server.
-  Needs the presence of Flash plugin in your browser.</dd>
+  <dd>This option allows you to upload several files at the same time on your server.</dd>
   
   <dt>Dashboard modules</dt>
Index: locales/en/main.po
===================================================================
--- locales/en/main.po	(revision 1499)
+++ locales/en/main.po	(revision 1479)
@@ -453,5 +453,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr ""
 
@@ -753,5 +753,5 @@
 msgstr ""
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr ""
 
@@ -1917,4 +1917,7 @@
 msgstr ""
 
+msgid "If this problem persists try to <a href="http://dotclear.org/download">update manually</a>."
+msgstr ""
+
 msgid "The following files of your Dotclear installation have been modified so we won't try to update your installation. Please try to <a href=\"http://dotclear.org/download\">update manually</a>."
 msgstr ""
@@ -2155,4 +2158,7 @@
 
 msgid "You have unsaved changes. Switch post format will loose these changes. Proceed anyway?"
+msgstr ""
+
+msgid "Warning: post format change will not convert existing content. You will need to apply new format by yourself. Proceed anyway?"
 msgstr ""
 
Index: locales/en/plugins.po
===================================================================
--- locales/en/plugins.po	(revision 1501)
+++ locales/en/plugins.po	(revision 1126)
@@ -280,7 +280,4 @@
 msgstr ""
 
-msgid "Attachments (%d)"
-msgstr ""
-
 msgid "remove"
 msgstr ""
@@ -855,5 +852,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr ""
 
@@ -1549,5 +1546,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/en/resources.php
===================================================================
--- locales/en/resources.php	(revision 1459)
+++ locales/en/resources.php	(revision 1179)
@@ -15,9 +15,9 @@
 
 $__resources['doc'] = array(
-	"Dotclear documentation" => 'http://dotclear.org/documentation/2.0',
-	'Dotclear presentation' => 'http://dotclear.org/documentation/2.0/overview/tour',
+	"Dotclear 2 documentation" => 'http://dotclear.org/documentation/2.0',
+	'Dotclear 2 presentation' => 'http://dotclear.org/documentation/2.0/overview/tour',
 	"User manual" => 'http://dotclear.org/documentation/2.0/usage',
 	"Installation and administration guides" => 'http://dotclear.org/documentation/2.0/admin',
-	"Dotclear support forum" => 'http://forum.dotclear.net/'
+	"Dotclear 2 support forum" => 'http://forum.dotclear.net/'
 );
 
@@ -29,5 +29,4 @@
 	'core_post' => dirname(__FILE__).'/help/post.html',
 	'core_posts' => dirname(__FILE__).'/help/posts.html',
-	'core_trackbacks' => dirname(__FILE__).'/help/trackbacks.html',
 	'core_user_pref' => dirname(__FILE__).'/help/user_pref.html',
 	'core_user' => dirname(__FILE__).'/help/user.html',
Index: locales/eo/help/blowupConfig.html
===================================================================
--- locales/eo/help/blowupConfig.html	(revision 1280)
+++ locales/eo/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/eo/main.po
===================================================================
--- locales/eo/main.po	(revision 1499)
+++ locales/eo/main.po	(revision 1039)
@@ -453,5 +453,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr ""
 
@@ -750,5 +750,5 @@
 msgstr ""
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr ""
 
Index: locales/eo/plugins.po
===================================================================
--- locales/eo/plugins.po	(revision 1499)
+++ locales/eo/plugins.po	(revision 1126)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr ""
 
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/es-ar/help/blowupConfig.html
===================================================================
--- locales/es-ar/help/blowupConfig.html	(revision 1280)
+++ locales/es-ar/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/es-ar/main.po
===================================================================
--- locales/es-ar/main.po	(revision 1499)
+++ locales/es-ar/main.po	(revision 1039)
@@ -460,5 +460,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "Actualmente usas \"%s\""
 
@@ -767,5 +767,5 @@
 msgstr "Autor del comentario:"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "Tiene un comentario no deseado."
 
Index: locales/es-ar/plugins.po
===================================================================
--- locales/es-ar/plugins.po	(revision 1499)
+++ locales/es-ar/plugins.po	(revision 1126)
@@ -844,5 +844,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr "Esto importará un archivo de resguardo de un blog individual como contenido nuevo del actual blog: %s."
 
@@ -1572,5 +1572,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/es/help/blowupConfig.html
===================================================================
--- locales/es/help/blowupConfig.html	(revision 1280)
+++ locales/es/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/es/main.po
===================================================================
--- locales/es/main.po	(revision 1499)
+++ locales/es/main.po	(revision 1039)
@@ -462,5 +462,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "Actualmente está usando «%s»"
 
@@ -769,5 +769,5 @@
 msgstr "Autor del comentario:"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "Tiene un comentario no deseado."
 
Index: locales/es/plugins.po
===================================================================
--- locales/es/plugins.po	(revision 1499)
+++ locales/es/plugins.po	(revision 1126)
@@ -849,5 +849,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr "Esto importará una copia de respaldo de un único blog como nuevo contenido del blog en uso: %s."
 
@@ -1576,5 +1576,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/eu/help/blowupConfig.html
===================================================================
--- locales/eu/help/blowupConfig.html	(revision 1280)
+++ locales/eu/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/eu/main.po
===================================================================
--- locales/eu/main.po	(revision 1499)
+++ locales/eu/main.po	(revision 1039)
@@ -453,5 +453,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr ""
 
@@ -750,5 +750,5 @@
 msgstr ""
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr ""
 
Index: locales/eu/plugins.po
===================================================================
--- locales/eu/plugins.po	(revision 1499)
+++ locales/eu/plugins.po	(revision 1126)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr ""
 
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/fr/help/blowupConfig.html
===================================================================
--- locales/fr/help/blowupConfig.html	(revision 1348)
+++ locales/fr/help/blowupConfig.html	(revision 1264)
@@ -14,5 +14,5 @@
 <p>Quand vous devez indiquer une valeur de couleur, celle-ci doit être au format
 hexadécimal. Par exemple&nbsp;: "#FF0000" donnera du rouge. Vous pouvez vous aider
-de la pipette à côté de chaque champ de couleur.</p>
+de la pipette à côté de chaque champs de couleur.</p>
 <p>Si vous manquez d'inspiration vous pouvez consulter&nbsp;:</p>
 <ul>
@@ -44,5 +44,5 @@
 <p>En choisissant "Personnalisé..." parmi la liste d'images, vous pourrez
 déposer votre propre image. <strong>Celle-ci doit être au format JPG ou PNG et
-avoir une largeur exacte de 800 pixels.</strong>
+avoir une largeur exacte de 800 pixels.</strong></p>
 
 <p>Si vous déposez une image au format JPG, un cadre sera ajouté autours de
Index: locales/fr/help/core_blog_pref.html
===================================================================
--- locales/fr/help/core_blog_pref.html	(revision 1354)
+++ locales/fr/help/core_blog_pref.html	(revision 990)
@@ -13,6 +13,5 @@
   
   <dt>Nom du blog</dt>
-  <dd>Nom du blog, obligatoire. Il peut être modifié à tout moment sans incidence sur
-  le fonctionnement du blog.</dd>
+  <dd>Nom du blog, obligatoire.</dd>
   
   <dt>URL du blog</dt>
@@ -45,5 +44,5 @@
   <dt>Nom de l'éditeur du blog</dt>
   <dd>Nom de la personne responsable du contenu du blog. Peut être le propriétaire
-  ou le directeur de publication s'il existe. Cette information sera affichée dans les
+  ou le directeur de publication s'il existe. Information affichée dans les
   informations du flux de syndication.</dd>
   
@@ -54,5 +53,5 @@
   <dd>Langue de l'interface du blog. Si cette langue existe parmi les
   traductions, l'interface sera traduite dans celle-ci, sinon elle apparaîtra
-  en anglais.</dd>
+  en Anglais.</dd>
   
   <dt>Fuseau horaire du blog</dt>
Index: locales/fr/help/core_post.html
===================================================================
--- locales/fr/help/core_post.html	(revision 1459)
+++ locales/fr/help/core_post.html	(revision 175)
@@ -94,4 +94,29 @@
 </dl>
 
+<h3>Rétroliens</h3>
+<p>Pour faire un rétrolien cliquez sur le lien <em>Faire des rétroliens</em>.
+Si vous ne voyez pas ce lien, vérifiez que votre billet est bien dans l'état
+<em>publié</em>.</p>
+
+<dl>
+  <dt>URLs à rétrolier</dt>
+  <dd>Indiquez ici la ou les URL que vous aurez relevé dans le billet vers lequel
+  vous souhaitez envoyer un rétrolien.</dd>
+  
+  
+  <dt>Envoyer l'extrait</dt>
+  <dd>Par défaut, ce champ comporte le début de votre billet. C'est ce qui sera
+  envoyé vers le blog que vous rétroliez avec un lien vers votre billet complet.
+  Vous pouvez modifier le contenu de cette "accroche" en saisissant directement le
+  texte de votre choix dans ce champ.</dd>
+  
+  
+  <dt>Découverte automatique des URLs à rétrolier</dt>
+  <dd>Si votre billet comporte des liens vers des billets précis et si la
+  plate-forme du blog destinataire est configurée pour le permettre, cette
+  fonction découvrira automatiquement les URLs spécifiques d'envoi de
+  rétrolien.</dd>
+</dl>
+
 <h3>Commentaires</h3>
 <dl>
Index: ocales/fr/help/core_trackbacks.html
===================================================================
--- locales/fr/help/core_trackbacks.html	(revision 1459)
+++ 	(revision )
@@ -1,34 +1,0 @@
-<html>
-<head>
-  <title>Rédaction d'un billet</title>
-</head>
-
-<body>
-
-<h3>Rétroliens</h3>
-<p>Pour faire un rétrolien cliquez sur le lien <em>Faire des rétroliens</em>.
-Si vous ne voyez pas ce lien, vérifiez que votre billet est bien dans l'état
-<em>publié</em>.</p>
-
-<dl>
-  <dt>URLs à rétrolier</dt>
-  <dd>Indiquez ici la ou les URL que vous aurez relevé dans le billet vers lequel
-  vous souhaitez envoyer un rétrolien.</dd>
-  
-  
-  <dt>Envoyer l'extrait</dt>
-  <dd>Par défaut, ce champ comporte le début de votre billet. C'est ce qui sera
-  envoyé vers le blog que vous rétroliez avec un lien vers votre billet complet.
-  Vous pouvez modifier le contenu de cette "accroche" en saisissant directement le
-  texte de votre choix dans ce champ.</dd>
-  
-  
-  <dt>Découverte automatique des URLs à rétrolier</dt>
-  <dd>Si votre billet comporte des liens vers des billets précis et si la
-  plate-forme du blog destinataire est configurée pour le permettre, cette
-  fonction découvrira automatiquement les URLs spécifiques d'envoi de
-  rétrolien.</dd>
-</dl>
-
-</body>
-</html>
Index: locales/fr/main.po
===================================================================
--- locales/fr/main.po	(revision 1499)
+++ locales/fr/main.po	(revision 1488)
@@ -95,5 +95,5 @@
 
 msgid "This mode allows you to login without activating any of your plugins. This may be useful to solve compatibility problems"
-msgstr "Ce mode vous permet de vous connecter sans activer de plugins. Il peut être utile pour résoudre un problème de compatibilité"
+msgstr "\"Ce mode vous permet de vous connecter sans activer de plugins. Il peut être utile pour résoudre un problème de compatibilité"
 
 msgid "Disable or delete any plugin suspected to cause trouble, then log out and log back in normally."
@@ -481,6 +481,6 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
-msgstr "Vous utilisez actuellement <strong>%s</strong>"
+msgid "You are currently using \"%s\""
+msgstr "Vous utilisez actuellement \"%s\""
 
 msgid "Use selected theme"
@@ -793,5 +793,5 @@
 msgstr "Auteur du commentaire :"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "Vous avez un commentaire indésirable."
 
@@ -1038,5 +1038,5 @@
 #, fuzzy, php-format
 msgid "Path <strong>%s</strong> is not writable."
-msgstr "Le répertoire de cache <strong>%s</strong> n'est pas accessible en écriture."
+msgstr "Le répertoire <strong>%s</strong> n'est pas accessible en écriture."
 
 #, fuzzy
@@ -1490,5 +1490,5 @@
 
 msgid "Plugins"
-msgstr "Plugins"
+msgstr "Extensions"
 
 msgid "Activated plugins"
@@ -1568,5 +1568,5 @@
 
 msgid "Search"
-msgstr "Rechercher"
+msgstr "Recherche"
 
 msgid "cancel"
@@ -1628,5 +1628,5 @@
 
 msgid "Text formating:"
-msgstr "Syntaxe de saisie :"
+msgstr "Format du texte :"
 
 msgid "Convert to XHTML"
@@ -1790,5 +1790,5 @@
 
 msgid "If you want to change your email or password you must provide your current password."
-msgstr "Si vous voulez changer votre adresse email ou votre mot de passe, vous devez indiquer votre mot de passe actuel."
+msgstr "Si vous voulez changer votre adresse email ou votre mot de passe, vous devez indiquer votre mot de passe."
 
 msgid "No favorite selected"
@@ -1826,5 +1826,5 @@
 
 msgid "If you have changed this user email or password you must provide your current password to save these modifications."
-msgstr "Si vous voulez changer votre adresse email ou votre mot de passe, vous devez indiquer votre mot de passe actuel pour enregistrer ces modifications."
+msgstr "Si vous voulez changer votre adresse email ou votre mot de passe, vous devez indiquer votre mot de passe."
 
 msgid "My options"
@@ -1923,9 +1923,9 @@
 msgstr "Requête :"
 
-msgid "Search in entries"
-msgstr "Rechercher dans les billets"
-
-msgid "Search in comments"
-msgstr "Rechercher dans les commentaires"
+msgid "Search entries"
+msgstr "Rechercher des billets"
+
+msgid "Search comments"
+msgstr "Rechercher des commentaires"
 
 msgid "schedule"
@@ -1990,4 +1990,7 @@
 msgstr "L'archive de Dotclear téléchargée semble être corrompue. Essayer de la <a %s>télécharger</a> à nouveau."
 
+msgid "If this problem persists try to <a href="http://dotclear.org/download">update manually</a>."
+msgstr "Si le problème persiste essayer de <a href="http://dotclear.org/download">mettre à jour manuellement</a>."
+
 msgid "The following files of your Dotclear installation have been modified so we won't try to update your installation. Please try to <a href=\"http://dotclear.org/download\">update manually</a>."
 msgstr "Comme les fichiers suivants de votre installation de Dotclear ont été modifiés, votre installation ne peut être mise à jour. Merci de <a href=\"http://fr.dotclear.org/download\">mettre à jour manuellement</a>."
@@ -2064,5 +2067,5 @@
 
 msgid "Mandatory for password recovering procedure."
-msgstr "Indispensable pour la procédure de récupération de mot de passe."
+msgstr "Obligatoire pour la procédure de récupération de mot de passe."
 
 msgid "Password change required to connect"
@@ -2174,7 +2177,4 @@
 msgstr "Aide"
 
-msgid "Help about this page"
-msgstr "Aide pour cette page"
-
 msgid "uncover"
 msgstr "dévoiler"
@@ -2262,5 +2262,5 @@
 
 msgid "XHTML markup validator"
-msgstr "Vérifier la validité XHTML"
+msgstr "Validation XHTML"
 
 msgid "XHTML content is valid."
@@ -2947,139 +2947,4 @@
 msgstr "Date de publication invalide"
 
-msgid "System settings"
-msgstr "Réglages système"
-
-msgid "Additional plugins"
-msgstr "Modules complémentaires"
-
-msgid "Personal notes:"
-msgstr "Notes personnelles :"
-
-msgid "New user"
-msgstr "Nouvel utilisateur"
-
-msgid "Published"
-msgstr "Publié"
-
-msgid "Unpublished"
-msgstr "Non publié"
-
-msgid "Pending"
-msgstr "En attente"
-
-msgid "Junk"
-msgstr "Indésirable"
-
-msgid "Scheduled"
-msgstr "Programmé"
-
-msgid "Protected"
-msgstr "Protégé"
-
-msgid "Publish"
-msgstr "Publier"
-
-msgid "Unpublish"
-msgstr "Mettre hors ligne"
-
-msgid "Mark as pending"
-msgstr "Mettre en attente"
-
-msgid "Mark as junk"
-msgstr "Mettre en indésirable"
-
-msgid "Next entry"
-msgstr "Billet suivant"
-
-msgid "Previous entry"
-msgstr "Billet précédent"
-
-msgid "Add an introduction to the post."
-msgstr "Ajoute une introduction au billet."
-
-msgid "Add unpublished notes."
-msgstr "Ajoute des notes non publiées."
-
-msgid "Edit basename:"
-msgstr "Modifier l'URL spécifique :"
-
-msgid "Protect with password"
-msgstr "Protéger par un mot de passe"
-
-msgid "Information collected"
-msgstr "Informations recueillies"
-
-msgid "Comment submitted"
-msgstr "Commentaire déposé"
-
-msgid "Entry status"
-msgstr "État du billet"
-
-msgid "Publication date and hour"
-msgstr "Date et heure de publication"
-
-msgid "Text formating"
-msgstr "Syntaxe de saisie"
-
-msgid "Entry lang"
-msgstr "Langue du billet"
-
-msgid "Password"
-msgstr "Mot de passe"
-
-msgid "Edit basename"
-msgstr "URL spécifique"
-
-msgid "Ordering"
-msgstr "Classement"
-
-msgid "Filter posts list"
-msgstr "Filtrer la liste des billets"
-
-msgid "entries per page"
-msgstr "billets par page"
-
-msgid "Show"
-msgstr "Afficher"
-
-msgid "Filter blogs list"
-msgstr "Filtrer la liste des blogs"
-
-msgid "blogs per page"
-msgstr "blogs par page"
-
-msgid "Filter comments and trackbacks list"
-msgstr "Filtrer la liste des commentaires et rétroliens"
-
-msgid "comments per page"
-msgstr "commentaires par page"
-
-msgid "Filter users list"
-msgstr "Filtrer la liste des utilisateurs"
-
-msgid "users per page"
-msgstr "utilisateurs par page"
-
-msgid "Available themes in your installation"
-msgstr "Thèmes disponibles sur votre installation"
-
-msgid "You can also install themes by uploading or downloading zip files."
-msgstr "Vous pouvez aussi installer des thèmes en les déposant ou en téléchargeant des fichiers zip."
-
-msgid "Add themes to your installation"
-msgstr "Ajouter des thèmes sur votre installation"
-
-msgid "Select this comment"
-msgstr "Sélectionner ce commentaire"
-
-msgid "Next page"
-msgstr "Page suivante"
-
-msgid "Previous page"
-msgstr "Page précédente"
-
-msgid "Add an introduction to the page."
-msgstr "Ajoute une introduction à la page."
-
 msgid "(No cat)"
 msgstr "(aucune)"
@@ -3103,37 +2968,4 @@
 msgstr "très fort"
 
-msgid "Confirm new password:"
-msgstr "Confirmez le nouveau mot de passe :"
-
-msgid "Not selected"
-msgstr "Non sélectionné"
-
-msgid "Back to comments list"
-msgstr "Retour à la liste des commentaires"
-
-msgid "The current blog cannot be deleted."
-msgstr "Le blog courant ne peut être détruit."
-
-msgid "Only superadmin can delete a blog."
-msgstr "Seul un superadministrateur peut supprimer un blog."
-
-msgid "Invalid publication date"
-msgstr "Date de publication invalide."
-
-msgid "Image alignment:"
-msgstr "Alignement de l'image :"
-
-msgid "Finish the update"
-msgstr "Finir la mise à jour"
-
-msgid "Information about this version"
-msgstr "Informations sur cette version"
-
-msgid "Updates and modifications"
-msgstr "Mises à jour et modifications"
-
-msgid "Back to user profile"
-msgstr "Retour au profil utilisateur"
-
-msgid "Back to Blog themes"
-msgstr "Retour à Apparence du blog"
+msgid "This category will be created when you will save your post."
+msgstr "Cette catégorie sera créée lorsque vous enregistrerez votre billet."
Index: locales/fr/plugins.po
===================================================================
--- locales/fr/plugins.po	(revision 1501)
+++ locales/fr/plugins.po	(revision 1445)
@@ -42,5 +42,5 @@
 
 msgid "blog settings"
-msgstr "paramètres du blog"
+msgstr "Réglages du blog"
 
 msgid "Value"
@@ -238,6 +238,6 @@
 
 #, php-format
-msgid "%s filter configuration"
-msgstr "Configuration du filtre %s"
+msgid "%s configuration"
+msgstr "configuration %s"
 
 msgid "Information"
@@ -301,12 +301,9 @@
 msgstr "Annexes"
 
-msgid "Attachments (%d)"
-msgstr "Annexes (%s)"
-
 msgid "remove"
 msgstr "supprimer"
 
 msgid "No attachment."
-msgstr "Pas de fichier attaché."
+msgstr "Pas de fichier attaché"
 
 msgid "Add files to this entry"
@@ -964,8 +961,8 @@
 #, php-format
 msgid ""
-"This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+"This will import a single blog backup as new content in the current blog: %s."
 msgstr ""
 "Cela importera une sauvegarde d'un blog comme nouveau contenu du blog "
-"courant : <strong>%s</strong>."
+"courant : %s."
 
 msgid "Upload a backup file"
@@ -1027,6 +1024,6 @@
 msgid ""
 "On the other hand, in WordPress, a post can not be uncategorized, and a "
-"default installation has a first category labelised <i>\"Uncategorized\"</i>."
-"If you did not change that category, you can just ignore it while "
+"default installation has a first category labelised <i>\"Uncategorized\"</"
+"i>. If you did not change that category, you can just ignore it while "
 "importing your blog, as Dotclear allows you to actually keep your posts "
 "uncategorized."
@@ -1034,5 +1031,5 @@
 "D'autre part, dans WordPress, un billet ne peut pas être sans catégorie, et "
 "une installation par défaut possède systématiquement une première catégorie "
-"nommée <i>« sans catégorie »</ i>. Si vous n'avez pas changé cette "
+"nommée <i>« sans catégorie »</i>. Si vous n'avez pas changé cette "
 "catégorie, vous pouvez simplement l'ignorer lors de l'importation sur votre "
 "blog, puisque Dotclear vous permet réellement de conserver votre message "
@@ -1134,5 +1131,5 @@
 
 msgid "Vacuum tables"
-msgstr "Vidage des tables"
+msgstr "Optimiser les tables"
 
 msgid "Counters"
@@ -1140,5 +1137,5 @@
 
 msgid "Reset comments and ping counters"
-msgstr "Remet à zéro les compteurs de commentaires et de signalements"
+msgstr "Recalculer les compteurs de commentaires et de signalements"
 
 msgid "Search engine index"
@@ -1149,8 +1146,8 @@
 
 msgid "Index all posts"
-msgstr "Indexation de tous les billets"
+msgstr "Indexer tous les billets"
 
 msgid "Index all comments"
-msgstr "Indexation de tous les commentaires"
+msgstr "Indexer tous les commentaires"
 
 msgid "Vacuum logs"
@@ -1158,5 +1155,5 @@
 
 msgid "Delete all logs"
-msgstr "Suppression de tous les journaux"
+msgstr "Supprimer tous les journaux"
 
 msgid "Empty templates cache directory"
@@ -1164,5 +1161,5 @@
 
 msgid "Empty directory"
-msgstr "Vidage du répertoire"
+msgstr "Vider le répertoire"
 
 msgid "Pages"
@@ -1250,5 +1247,5 @@
 
 msgid "Go to this page on the site"
-msgstr "Voir cette page sur le site"
+msgstr "Aller sur cette page"
 
 msgid "Page status:"
@@ -1286,5 +1283,5 @@
 
 msgid "Pings"
-msgstr "Signalements (pings)"
+msgstr "Signalements"
 
 msgid "Ping services"
@@ -1759,11 +1756,11 @@
 
 msgid "Custom sidebar"
-msgstr "Volet supplémentaire"
+msgstr "Bandeau supplémentaire"
 
 msgid "Update sidebars"
-msgstr "Mettre à jour les volets"
+msgstr "Mettre à jour les bandeaux"
 
 msgid "Reset sidebars"
-msgstr "Réinitialiser les volets"
+msgstr "Réinitialiser les bandeaux"
 
 msgid "Use of widgets"
@@ -1786,8 +1783,8 @@
 msgid ""
 "Once included in a sidebar, widgets have configuration options that you can "
-"reach by clicking on the arrow next to their name."
+"reach by clicking on the + sign next to their name."
 msgstr ""
 "Une fois inclus dans un bandeau, les widgets ont généralement des options "
-"que vous pouvez configurer. Cliquez sur la flèche à côté de leur nom pour y "
+"que vous pouvez configurer. Cliquez sur le signe + à côté de leur nom pour y "
 "accéder."
 
@@ -1922,23 +1919,2 @@
 #~ msgid "The backup file does not appear to be well formed."
 #~ msgstr "Le fichier de sauvegarde semble mal formaté."
-
-msgid "Settings for %s"
-msgstr "Réglages pour %s"
-
-msgid "Settings for %s"
-msgstr "Réglages pour %s"
-
-msgid "User preferences"
-msgstr "Préférences utilisateur"
-
-msgid "Global preferences"
-msgstr "Préférences globales"
-
-msgid "Edit theme files"
-msgstr "Modifier les fichiers du thème"
-
-msgid "Blog settings"
-msgstr "Paramètres du blog"
-
-msgid "Move widgets from this list to one of the sidebars."
-msgstr "Déplacez des widgets de cette liste vers l'un des volets."
Index: locales/fr/resources.php
===================================================================
--- locales/fr/resources.php	(revision 1343)
+++ locales/fr/resources.php	(revision 1179)
@@ -15,9 +15,9 @@
 
 $__resources['doc'] = array(
-	"Accueil de l'aide Dotclear" => 'http://fr.dotclear.org/documentation/2.0',
-	'Présentation de Dotclear' => 'http://doc.dotclear.net/2.0/overview/tour',
+	"Accueil de l'aide Dotclear 2" => 'http://doc.dotclear.net/2.0',
+	'Présentation de Dotclear 2' => 'http://doc.dotclear.net/2.0/overview/tour',
 	"Manuel de l'utilisateur" => 'http://doc.dotclear.net/2.0/usage',
 	"Guide d'installation et d'administration" => 'http://doc.dotclear.net/2.0/admin',
-	"Forum de support de Dotclear" => 'http://forum.dotclear.net/'
+	"Forum de support de Dotclear 2" => 'http://forum.dotclear.net/'
 );
 ?>
Index: locales/hu/help/blowupConfig.html
===================================================================
--- locales/hu/help/blowupConfig.html	(revision 1280)
+++ locales/hu/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/hu/main.po
===================================================================
--- locales/hu/main.po	(revision 1499)
+++ locales/hu/main.po	(revision 1039)
@@ -465,5 +465,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "A \"%s\"-t használod"
 
@@ -787,5 +787,5 @@
 msgstr "Megjegyzés szerzője:"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "Van egy spam megjegyzésed."
 
Index: locales/hu/plugins.po
===================================================================
--- locales/hu/plugins.po	(revision 1499)
+++ locales/hu/plugins.po	(revision 1126)
@@ -845,5 +845,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr "Ezzel egy egyedüli blogot fogok importálni új tartalomként ide: %s"
 
@@ -1582,5 +1582,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/it/help/blowupConfig.html
===================================================================
--- locales/it/help/blowupConfig.html	(revision 1280)
+++ locales/it/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/it/main.po
===================================================================
--- locales/it/main.po	(revision 1499)
+++ locales/it/main.po	(revision 1039)
@@ -456,5 +456,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "Attualmente è in uso \"%s\""
 
@@ -763,5 +763,5 @@
 msgstr "Autore del commento:"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "È presente un commento di spam."
 
Index: locales/it/plugins.po
===================================================================
--- locales/it/plugins.po	(revision 1499)
+++ locales/it/plugins.po	(revision 1126)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr ""
 
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/ja/help/blowupConfig.html
===================================================================
--- locales/ja/help/blowupConfig.html	(revision 1280)
+++ locales/ja/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>デフォルトで指定されているものの代わりに、リストからヘッダ画像を選ぶことができます。</p>
 
-<p>画像リストで「カスタム...」を選んだ場合、独自の画像をアップロードすることができます。 <strong>画像ファイルは JPG または PNG フォーマットで、横幅が正確に800ピクセルである必要があります。</strong>
+<p>画像リストで「カスタム...」を選んだ場合、独自の画像をアップロードすることができます。 <strong>画像ファイルは JPG または PNG フォーマットで、横幅が正確に800ピクセルである必要があります。</strong></p>
 
 <p>JPG画像がアップロードされた場合、画像に境界線が付加されます。 PNG画像の場合には付加されず、透過性も維持されます。</p>
Index: locales/ja/main.po
===================================================================
--- locales/ja/main.po	(revision 1499)
+++ locales/ja/main.po	(revision 1039)
@@ -465,5 +465,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "現在使用中のテーマ： %s"
 
@@ -772,5 +772,5 @@
 msgstr "コメントの投稿者："
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "1 のスパムコメントがあります。"
 
Index: locales/ja/plugins.po
===================================================================
--- locales/ja/plugins.po	(revision 1499)
+++ locales/ja/plugins.po	(revision 1126)
@@ -846,5 +846,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr "これは単独ブログのバックアップを、現在のブログ「%s」の新しいコンテンツとしてインポートします。"
 
@@ -1576,5 +1576,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/ko/help/blowupConfig.html
===================================================================
--- locales/ko/help/blowupConfig.html	(revision 1280)
+++ locales/ko/help/blowupConfig.html	(revision 1264)
@@ -34,5 +34,5 @@
 <p>기본이미지 대신, 목록에 있는 머리글 이미지를 쓰실 수 있습니다.</p>
 
-<p>이미지 목록에서 "개성에 맞게..."를 선택하시면, 당신 자신이 보유한 이미지를 올릴 수 있습니다. <strong>이미지 파일은 JPG나 PNG 포맷이어야하고 폭은 정확히 800px 이어야 합니다.</strong>
+<p>이미지 목록에서 "개성에 맞게..."를 선택하시면, 당신 자신이 보유한 이미지를 올릴 수 있습니다. <strong>이미지 파일은 JPG나 PNG 포맷이어야하고 폭은 정확히 800px 이어야 합니다.</strong></p>
 
 <p>JPG 이미지를 올리실 때는, 윤곽선이 추가됩니다. PNG 이미지의 경우는 해당되지 않습니다. (PNG 이미지의 투명도도 또한 유지됩니다.)</p>
Index: locales/ko/main.po
===================================================================
--- locales/ko/main.po	(revision 1499)
+++ locales/ko/main.po	(revision 1039)
@@ -464,5 +464,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "현재 사용 중인 테마 : \"%s\""
 
@@ -771,5 +771,5 @@
 msgstr "댓글 글쓴이 :"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "스팸댓글이 하나 있습니다."
 
Index: locales/ko/plugins.po
===================================================================
--- locales/ko/plugins.po	(revision 1499)
+++ locales/ko/plugins.po	(revision 1126)
@@ -846,5 +846,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr "이 과정은, 백업된 단일 블로그 내용을 현재 블로그 (%s) 의 새 내용으로 가져옵니다."
 
@@ -1583,5 +1583,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/lt/help/blowupConfig.html
===================================================================
--- locales/lt/help/blowupConfig.html	(revision 1280)
+++ locales/lt/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>Du kannst ein Bild Deiner Wahl statt des Standardbildes einsetzen.</p>
 
-<p>Wenn Du  "Benutzerdefiniert..." in der Bilderliste ausw&auml;hlst, dann hast Du die M&ouml;glichkeit, Dein eigenes Bild upzuloaden. <strong>Das Dateiformat muss entweder JPG der PNG sein und es muss 800px breit sein.</strong>
+<p>Wenn Du  "Benutzerdefiniert..." in der Bilderliste ausw&auml;hlst, dann hast Du die M&ouml;glichkeit, Dein eigenes Bild upzuloaden. <strong>Das Dateiformat muss entweder JPG der PNG sein und es muss 800px breit sein.</strong></p>
 
 <p>Wenn Du ein JPG-Bild uploadest, dann wird automatisch ein Rahmen um das Bild gesetzt. Dies geschieht nicht bei der Verwendung eines PNG-Bildes und die Transparenz wird ebenfalls beibehalten.</p>
Index: locales/lt/main.po
===================================================================
--- locales/lt/main.po	(revision 1499)
+++ locales/lt/main.po	(revision 1039)
@@ -432,5 +432,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "Šiuo metu jūs naudojate \"%s\""
 
@@ -742,5 +742,5 @@
 msgstr "Komentaro autorius:"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "Turite vieną spamo komentarą."
 
Index: locales/lt/plugins.po
===================================================================
--- locales/lt/plugins.po	(revision 1499)
+++ locales/lt/plugins.po	(revision 1126)
@@ -808,5 +808,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr "Importuojama viena blogo atsarginė kopija kaip naujas turinys jūsų bloge: %s."
 
Index: locales/nl/help/blowupConfig.html
===================================================================
--- locales/nl/help/blowupConfig.html	(revision 1280)
+++ locales/nl/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/nl/main.po
===================================================================
--- locales/nl/main.po	(revision 1499)
+++ locales/nl/main.po	(revision 1039)
@@ -454,5 +454,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "Je gebruikt nu \"%s\""
 
@@ -753,5 +753,5 @@
 msgstr ""
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr ""
 
Index: locales/nl/plugins.po
===================================================================
--- locales/nl/plugins.po	(revision 1499)
+++ locales/nl/plugins.po	(revision 1126)
@@ -836,5 +836,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr ""
 
@@ -1536,5 +1536,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/oc/help/blowupConfig.html
===================================================================
--- locales/oc/help/blowupConfig.html	(revision 1280)
+++ locales/oc/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/oc/main.po
===================================================================
--- locales/oc/main.po	(revision 1499)
+++ locales/oc/main.po	(revision 1039)
@@ -455,5 +455,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr ""
 
@@ -757,5 +757,5 @@
 msgstr ""
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr ""
 
Index: locales/oc/plugins.po
===================================================================
--- locales/oc/plugins.po	(revision 1499)
+++ locales/oc/plugins.po	(revision 1126)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr ""
 
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/pl/help/blowupConfig.html
===================================================================
--- locales/pl/help/blowupConfig.html	(revision 1280)
+++ locales/pl/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/pl/main.po
===================================================================
--- locales/pl/main.po	(revision 1499)
+++ locales/pl/main.po	(revision 1039)
@@ -455,5 +455,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "Aktualnie używasz \"%s\""
 
@@ -760,5 +760,5 @@
 msgstr "Autor komentarza:"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "Masz jeden komentarz oznaczony jako spam."
 
Index: locales/pl/plugins.po
===================================================================
--- locales/pl/plugins.po	(revision 1499)
+++ locales/pl/plugins.po	(revision 1126)
@@ -840,5 +840,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr "Zaimportuje kopię zapasową pojedynczego bloga jako nową zawartość w aktualnym blogu: %s."
 
@@ -1559,5 +1559,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/pt-br/help/blowupConfig.html
===================================================================
--- locales/pt-br/help/blowupConfig.html	(revision 1280)
+++ locales/pt-br/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/pt-br/main.po
===================================================================
--- locales/pt-br/main.po	(revision 1499)
+++ locales/pt-br/main.po	(revision 1039)
@@ -470,5 +470,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr ""
 
@@ -790,5 +790,5 @@
 msgstr "Autor do comentário:"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "Você tem um comentário indesejável."
 
Index: locales/pt-br/plugins.po
===================================================================
--- locales/pt-br/plugins.po	(revision 1499)
+++ locales/pt-br/plugins.po	(revision 1126)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr ""
 
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/pt/help/blowupConfig.html
===================================================================
--- locales/pt/help/blowupConfig.html	(revision 1280)
+++ locales/pt/help/blowupConfig.html	(revision 1264)
@@ -51,5 +51,5 @@
 <br />
 
-<em>NOTA: Uma bordura aparecera a volta da imagem o formato JPG, isto não acontece com as imagem em PNG -é a transparência dos PNGs fica efectiva-</em>
+<em>NOTA: Uma bordura aparecera a volta da imagem o formato JPG, isto não acontece com as imagem em PNG -é a transparência dos PNGs fica efectiva-</em></p>
 
 <h4>Estilos pré-definidos</h4>
Index: locales/pt/main.po
===================================================================
--- locales/pt/main.po	(revision 1499)
+++ locales/pt/main.po	(revision 1039)
@@ -461,5 +461,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "Você está a usar \"%s\""
 
@@ -768,5 +768,5 @@
 msgstr "Autor do comentário:"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "Tem um comentário de \"spam\""
 
Index: locales/pt/plugins.po
===================================================================
--- locales/pt/plugins.po	(revision 1499)
+++ locales/pt/plugins.po	(revision 1126)
@@ -849,5 +849,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr "Isto irá importar uma copia de simples blog como novo conteúdo no blog actual: %s."
 
@@ -1576,5 +1576,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/ro/help/blowupConfig.html
===================================================================
--- locales/ro/help/blowupConfig.html	(revision 1280)
+++ locales/ro/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/ro/main.po
===================================================================
--- locales/ro/main.po	(revision 1499)
+++ locales/ro/main.po	(revision 1039)
@@ -455,5 +455,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr ""
 
@@ -752,5 +752,5 @@
 msgstr ""
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr ""
 
Index: locales/ro/plugins.po
===================================================================
--- locales/ro/plugins.po	(revision 1499)
+++ locales/ro/plugins.po	(revision 1126)
@@ -845,5 +845,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr ""
 
@@ -1554,5 +1554,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/ru/main.po
===================================================================
--- locales/ru/main.po	(revision 1499)
+++ locales/ru/main.po	(revision 1039)
@@ -460,5 +460,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "В данный момент вы используете \"%s\""
 
@@ -767,5 +767,5 @@
 msgstr "Автор комментария:"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "У вас один спам комментарий."
 
Index: locales/ru/plugins.po
===================================================================
--- locales/ru/plugins.po	(revision 1499)
+++ locales/ru/plugins.po	(revision 1126)
@@ -841,5 +841,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr "Это импортирует резервный файл одного блога как новое содержимое в текущий блог: %s."
 
@@ -1565,5 +1565,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/sr/help/blowupConfig.html
===================================================================
--- locales/sr/help/blowupConfig.html	(revision 1280)
+++ locales/sr/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/sr/main.po
===================================================================
--- locales/sr/main.po	(revision 1499)
+++ locales/sr/main.po	(revision 1039)
@@ -460,5 +460,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "Vous utilisez actuellement \"%s\""
 
@@ -778,5 +778,5 @@
 msgstr "Auteur du commentaire :"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "Vous avez un commentaire indésirable."
 
Index: locales/sr/plugins.po
===================================================================
--- locales/sr/plugins.po	(revision 1499)
+++ locales/sr/plugins.po	(revision 1126)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr ""
 
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/sv/help/blowupConfig.html
===================================================================
--- locales/sv/help/blowupConfig.html	(revision 1280)
+++ locales/sv/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/sv/main.po
===================================================================
--- locales/sv/main.po	(revision 1499)
+++ locales/sv/main.po	(revision 1039)
@@ -453,5 +453,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr ""
 
@@ -750,5 +750,5 @@
 msgstr ""
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr ""
 
Index: locales/sv/plugins.po
===================================================================
--- locales/sv/plugins.po	(revision 1499)
+++ locales/sv/plugins.po	(revision 1126)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr ""
 
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/te/help/blowupConfig.html
===================================================================
--- locales/te/help/blowupConfig.html	(revision 1280)
+++ locales/te/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/te/main.po
===================================================================
--- locales/te/main.po	(revision 1499)
+++ locales/te/main.po	(revision 1039)
@@ -458,5 +458,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "మీరు ప్రస్తుతం \"%s\" ని వాడుతున్నారు"
 
@@ -775,5 +775,5 @@
 msgstr "వ్యాఖ్యాత:"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "ఒక చెత్త వ్యాఖ్య ఉంది."
 
Index: locales/te/plugins.po
===================================================================
--- locales/te/plugins.po	(revision 1499)
+++ locales/te/plugins.po	(revision 1126)
@@ -838,5 +838,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr ""
 
@@ -1558,5 +1558,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/tr/help/blowupConfig.html
===================================================================
--- locales/tr/help/blowupConfig.html	(revision 1280)
+++ locales/tr/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/tr/main.po
===================================================================
--- locales/tr/main.po	(revision 1499)
+++ locales/tr/main.po	(revision 1039)
@@ -460,5 +460,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "Şimdi \"%s\" kullanıyorsunuz."
 
@@ -761,5 +761,5 @@
 msgstr "Ahkamı yazan:"
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr ""
 
Index: locales/tr/plugins.po
===================================================================
--- locales/tr/plugins.po	(revision 1499)
+++ locales/tr/plugins.po	(revision 1126)
@@ -839,5 +839,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr ""
 
@@ -1546,5 +1546,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: locales/zh-cn/help/blowupConfig.html
===================================================================
--- locales/zh-cn/help/blowupConfig.html	(revision 1280)
+++ locales/zh-cn/help/blowupConfig.html	(revision 1264)
@@ -35,5 +35,5 @@
 <p>您可以从列表中选择一个头部图片来取代默认的。</p>
 
-<p>当您在图片列表中选择“定制...”，您将可以上传自己的图片。<strong>图片必须是 JPG 或者 PNG 格式并且必须精确等于 800 像素宽。</strong>
+<p>当您在图片列表中选择“定制...”，您将可以上传自己的图片。<strong>图片必须是 JPG 或者 PNG 格式并且必须精确等于 800 像素宽。</strong></p>
 
 <p>如果您上传一个 JPG 图片，一个边框将会被添加。而 PNG 图片不会如此(透明特性也会被保留)。</p>
Index: locales/zh-cn/main.po
===================================================================
--- locales/zh-cn/main.po	(revision 1499)
+++ locales/zh-cn/main.po	(revision 1039)
@@ -458,5 +458,5 @@
 
 #, php-format
-msgid "You are currently using <strong>%s</strong>"
+msgid "You are currently using \"%s\""
 msgstr "您正在使用“%s”"
 
@@ -765,5 +765,5 @@
 msgstr "评论作者："
 
-msgid "You have one spam comment."
+msgid "You have one spam comments."
 msgstr "您有一个垃圾评论。"
 
Index: locales/zh-cn/plugins.po
===================================================================
--- locales/zh-cn/plugins.po	(revision 1499)
+++ locales/zh-cn/plugins.po	(revision 1126)
@@ -847,5 +847,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr "这将会把一个单一博客的备份作为新内容导入到当前博客：%s。"
 
@@ -1573,5 +1573,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
 msgstr ""
 
Index: plugins/aboutConfig/_admin.php
===================================================================
--- plugins/aboutConfig/_admin.php	(revision 1294)
+++ plugins/aboutConfig/_admin.php	(revision 1179)
@@ -12,5 +12,5 @@
 if (!defined('DC_CONTEXT_ADMIN')) { return; }
 
-$_menu['System']->addItem('about:config','plugin.php?p=aboutConfig','index.php?pf=aboutConfig/icon.png',
+$_menu['Plugins']->addItem('about:config','plugin.php?p=aboutConfig','index.php?pf=aboutConfig/icon.png',
 		preg_match('/plugin.php\?p=aboutConfig(&.*)?$/',$_SERVER['REQUEST_URI']),
 		$core->auth->isSuperAdmin());
Index: plugins/aboutConfig/index.php
===================================================================
--- plugins/aboutConfig/index.php	(revision 1474)
+++ plugins/aboutConfig/index.php	(revision 1274)
@@ -85,5 +85,5 @@
 	
 	return
-	'<tr class="line">'.
+	'<tr>'.
 	'<td scope="row"><label for="s_'.$id.'">'.sprintf($slabel,html::escapeHTML($id)).'</label></td>'.
 	'<td>'.$field.'</td>'.
@@ -97,5 +97,10 @@
   <title>about:config</title>
   <?php echo dcPage::jsPageTabs($part); ?>
-  <script type="text/javascript">
+  <style type="text/css">
+  table.settings { border: 1px solid #999; margin-bottom: 2em; }
+  table.settings th { background: #f5f5f5; color: #444; padding-top: 0.3em; padding-bottom: 0.3em; }
+  p.anchor-nav {float: right; }
+  </style>
+	<script type="text/javascript">
 	//<![CDATA[
 	$(function() {
@@ -115,10 +120,4 @@
 <body>
 <?php
-echo dcPage::breadcrumb(
-	array(
-		__('System') => '',
-		html::escapeHTML($core->blog->name) => '',
-		'<span class="page-title">'.__('about:config').'</span>' => ''
-	));
 if (!empty($_GET['upd'])) {
 	dcPage::message(__('Configuration successfully updated'));
@@ -129,10 +128,10 @@
 }
 ?>
-
-<div id="local" class="multi-part" title="<?php echo sprintf(__('Settings for %s'),html::escapeHTML($core->blog->name)); ?>">
-
-
-<?php
-$table_header = '<table class="settings" id="%s"><caption class="as_h3">%s</caption>'.
+<h2><?php echo html::escapeHTML($core->blog->name); ?> &rsaquo; <span class="page-title">about:config</span></h2>
+
+<div id="local" class="multi-part" title="<?php echo __('blog settings'); ?>">
+
+<?php 
+$table_header = '<table class="settings" id="%s"><caption>%s</caption>'.
 '<thead>'.
 '<tr>'."\n".
Index: plugins/akismet/class.dc.filter.akismet.php
===================================================================
--- plugins/akismet/class.dc.filter.akismet.php	(revision 1454)
+++ plugins/akismet/class.dc.filter.akismet.php	(revision 1179)
@@ -137,6 +137,6 @@
 		$res =
 		'<form action="'.html::escapeURL($url).'" method="post" class="fieldset">'.
-		'<p><label for="ak_key" class="classic">'.__('Akismet API key:').'</label> '.
-		form::field('ak_key',12,128,$ak_key);
+		'<p><label for="ak_key" class="classic">'.__('Akismet API key:').' '.
+		form::field('ak_key',12,128,$ak_key).'</label>';
 		
 		if ($ak_verified !== null) {
Index: plugins/antispam/_admin.php
===================================================================
--- plugins/antispam/_admin.php	(revision 1499)
+++ plugins/antispam/_admin.php	(revision 1207)
@@ -59,5 +59,5 @@
 		if ($ttl != null && $ttl >=0) {
 			echo '<p>'.sprintf(__('All spam comments older than %s day(s) will be automatically deleted.'), $ttl).' '.
-			sprintf(__('You can modify this duration in the %s'),'<a href="blog_pref.php#antispam_moderation_ttl"> '.__('Blog settings').'</a>').
+			sprintf(__('You can modify this duration in the %s'),'<a href="blog_pref.php#antispam_moderation_ttl"> '.__('Blog preferences').'</a>').
 			'</p>';
 		}
@@ -68,10 +68,10 @@
 		$ttl = $settings->antispam->antispam_moderation_ttl;
 		echo
-		'<div class="fieldset"><h4>Antispam</h4>'.
+		'<fieldset><legend>Antispam</legend>'.
 		'<p><label for="antispam_moderation_ttl" class="classic">'.__('Delete junk comments older than').' '.
 		form::field('antispam_moderation_ttl', 3, 3, $ttl).
 		' '.__('days').
 		'</label></p>'.
-		'</div>';
+		'</fieldset>';
 	}
 	
Index: plugins/antispam/antispam.js
===================================================================
--- plugins/antispam/antispam.js	(revision 1423)
+++ plugins/antispam/antispam.js	(revision 1130)
@@ -6,5 +6,5 @@
 		$(this).css({'cursor':'auto'});
 	});
-	$('#filters-list-form').submit(function() {
+	$('#filters-form').submit(function() {
 		var order=[];
 		$("#filters-list tr td input.position").each(function() {
Index: plugins/antispam/filters/class.dc.filter.ip.php
===================================================================
--- plugins/antispam/filters/class.dc.filter.ip.php	(revision 1454)
+++ plugins/antispam/filters/class.dc.filter.ip.php	(revision 1179)
@@ -124,13 +124,12 @@
 
 		'<form action="'.html::escapeURL($url).'" method="post" class="fieldset">'.
-
-		'<p>'.
 		form::hidden(array('ip_type'),$type).
-		'<label class="classic" for="addip_'.$type.'">'.__('Add an IP address: ').'</label> '.
-		form::field(array('addip', 'addip_'.$type),18,255);
-			if ($core->auth->isSuperAdmin()) {
-				$res .= '<label class="classic" for="globalip_'.$type.'">'.form::checkbox(array('globalip', 'globalip_'.$type),1).' '.
-				__('Global IP (used for all blogs)').'</label> ';
-			}
+		'<label class="classic" for="addip_'.$type.'">'.__('Add an IP address: ').' '.
+		form::field(array('addip', 'addip_'.$type),18,255).
+		'</label>';
+		if ($core->auth->isSuperAdmin()) {
+			$res .= '<label class="classic" for="globalip_'.$type.'">'.form::checkbox(array('globalip', 'globalip_'.$type),1).' '.
+			__('Global IP (used for all blogs)').'</label> ';
+		}
 
 		$res .=
Index: plugins/antispam/filters/class.dc.filter.iplookup.php
===================================================================
--- plugins/antispam/filters/class.dc.filter.iplookup.php	(revision 1499)
+++ plugins/antispam/filters/class.dc.filter.iplookup.php	(revision 1361)
@@ -76,11 +76,12 @@
 
 		$res .=
-		'<form action="'.html::escapeURL($url).'" method="post" class="fieldset">'.
-		'<h3>' . __('IP Lookup servers') . '</h3>'.
-		'<p><label for="bls">'.__('Add here a coma separated list of servers.').'</label>'.
+		'<form action="'.html::escapeURL($url).'" method="post">'.
+		'<fieldset><legend>' . __('IP Lookup servers') . '</legend>'.
+		'<p><label for="bls">'.__('Add here a coma separated list of servers.').
 		form::textarea('bls',40,3,html::escapeHTML($bls),'maximal').
 		'</p>'.
-		'<p><input type="submit" value="'.__('Save').'" /></p>'.
+		'<p><input type="submit" value="'.__('Save').'" /></label></p>'.
 		$this->core->formNonce().'</p>'.
+		'</fieldset>'.
 		'</form>';
 
Index: plugins/antispam/filters/class.dc.filter.words.php
===================================================================
--- plugins/antispam/filters/class.dc.filter.words.php	(revision 1454)
+++ plugins/antispam/filters/class.dc.filter.words.php	(revision 1179)
@@ -120,9 +120,9 @@
 		$res .=
 		'<form action="'.html::escapeURL($url).'" method="post" class="fieldset">'.
-		'<p><label class="classic" for="swa">'.__('Add a word ').'</label> '.form::field('swa',20,128);
+		'<p><label class="classic" for="swa">'.__('Add a word ').' '.form::field('swa',20,128).'</label>';
 
 		if ($core->auth->isSuperAdmin()) {
-			$res .= '<label class="classic" for="globalsw">'.form::checkbox('globalsw',1).'</label> '.
-			__('Global word (used for all blogs)');
+			$res .= '<label class="classic" for="globalsw">'.form::checkbox('globalsw',1).' '.
+			__('Global word (used for all blogs)').'</label> ';
 		}
 
Index: plugins/antispam/inc/lib.dc.antispam.php
===================================================================
--- plugins/antispam/inc/lib.dc.antispam.php	(revision 1179)
+++ plugins/antispam/inc/lib.dc.antispam.php	(revision 1478)
@@ -75,5 +75,5 @@
 		if (($count = self::countSpam($core)) > 0) {
 			$str = ($count > 1) ? __('(including %d spam comments)') : __('(including %d spam comment)');
-			$icons['comments'][0] .= '</a> <br /><a href="comments.php?status=-2"><span>'.sprintf($str,$count).'</span>';
+			$icons['comments'][0] .= '</span></a> <br /><a href="comments.php?status=-2"><span>'.sprintf($str,$count);
 		}
 	}
@@ -83,5 +83,5 @@
 		if (($count = self::countSpam($core)) > 0) {
 			$str = ($count > 1) ? __('(including %d spam comments)') : __('(including %d spam comment)');
-			return '</a> <br /><a href="comments.php?status=-2"><span>'.sprintf($str,$count).'</span>';
+			return '</span></a> <br /><a href="comments.php?status=-2"><span>'.sprintf($str,$count);
 		} else {
 			return '';
Index: plugins/antispam/index.php
===================================================================
--- plugins/antispam/index.php	(revision 1474)
+++ plugins/antispam/index.php	(revision 1274)
@@ -123,10 +123,6 @@
 if ($filter_gui !== false)
 {
-	echo dcPage::breadcrumb(
-		array(
-			__('Plugins') => '',
-			$page_name => $p_url,
-			'<span class="page-title">'.sprintf(__('%s filter configuration'),$filter->name).'</span>' => ''
-		));
+	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <a href="'.$p_url.'">'.$page_name.'</a>'.
+		' &rsaquo; <span class="page-title">'.sprintf(__('%s configuration'),$filter->name).'</span></h2>';
 
 	echo $filter_gui;
@@ -134,9 +130,5 @@
 else
 {
-	echo dcPage::breadcrumb(
-		array(
-			__('Plugins') => '',
-			'<span class="page-title">'.$page_name.'</span>' => ''
-		));
+	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_name.'</span></h2>';
 
 	# Information
@@ -170,5 +162,5 @@
 	if ($moderationTTL != null && $moderationTTL >=0) {
 		echo '<p>'.sprintf(__('All spam comments older than %s day(s) will be automatically deleted.'), $moderationTTL).' '.
-		sprintf(__('You can modify this duration in the %s'),'<a href="blog_pref.php#antispam_moderation_ttl"> '.__('Blog settings').'</a>').
+		sprintf(__('You can modify this duration in the %s'),'<a href="blog_pref.php#antispam_moderation_ttl"> '.__('Blog preferences').'</a>').
 			'</p>';
 	}
@@ -178,5 +170,5 @@
 	# Filters
 	echo
-	'<form action="'.$p_url.'" method="post" id="filters-list-form">';
+	'<form action="'.$p_url.'" method="post" class="fieldset" id="filters-form">';
 
 	if (!empty($_GET['upd'])) {
@@ -186,5 +178,5 @@
 	echo
 	'<table class="dragable">'.
-	'<caption class="as_h3">'.__('Available spam filters').'</caption>'.
+	'<caption>'.__('Available spam filters').'</caption>'.
 	'<thead><tr>'.
 	'<th>'.__('Order').'</th>'.
Index: plugins/antispam/style.css
===================================================================
--- plugins/antispam/style.css	(revision 1330)
+++ plugins/antispam/style.css	(revision 0)
@@ -8,4 +8,5 @@
 	margin: 0.5em 0;
 	padding-left: 16px;
+	/*background: url(index.php?pf=antispam/feed.png) no-repeat center left;*/
 	background-color: transparent;
 	background-position: center left;
Index: plugins/attachments/_admin.php
===================================================================
--- plugins/attachments/_admin.php	(revision 1501)
+++ plugins/attachments/_admin.php	(revision 1467)
@@ -12,16 +12,10 @@
 if (!defined('DC_CONTEXT_ADMIN')) { return; }
 
-$core->addBehavior ('adminPostFormItems',array('attachmentAdmin','adminPostFormItems'));
+$core->addBehavior ('adminPostFormSidebar',array('attachmentAdmin','adminPostFormSidebar'));
 $core->addBehavior ('adminPostAfterForm',array('attachmentAdmin','adminPostAfterForm'));
-$core->addBehavior('adminPostHeaders',array('attachmentAdmin','postHeaders'));
 
 class attachmentAdmin
 {
-	public static function postHeaders()
-	{
-		return 
-		'<script type="text/javascript" src="index.php?pf=attachments/js/post.js"></script>';
-	}
-	public static function adminPostFormItems($main,$sidebar,$post) 
+	public static function adminPostFormSidebar($post) 
 	{
 		if ($post !== null)
@@ -29,7 +23,6 @@
 			$core =& $GLOBALS['core'];
 			$post_media = $core->media->getPostMedia($post->post_id);
-			$nb_media = count($post_media);
-			$title = !$nb_media ? __('Attachments') : sprintf(__('Attachments (%d)'),$nb_media);
-			$item = '<h5 class="clear s-attachments">'.$title.'</h5>';
+			echo
+			'<h3 class="clear">'.__('Attachments').'</h3>';
 			foreach ($post_media as $f)
 			{
@@ -38,6 +31,6 @@
 					$ftitle = substr($ftitle,0,16).'...';
 				}
-				$item .=
-				'<div class="media-item s-attachments">'.
+				echo
+				'<div class="media-item">'.
 				'<a class="media-icon" href="media_item.php?id='.$f->media_id.'">'.
 				'<img src="'.$f->media_icon.'" alt="" title="'.$f->basename.'" /></a>'.
@@ -60,8 +53,8 @@
 			
 			if (empty($post_media)) {
-				$item .= '<p class="form-note s-attachments">'.__('No attachment.').'</p>';
-			} 
-			$item .= '<p class="s-attachments"><a class="button" href="media.php?post_id='.$post->post_id.'">'.__('Add files to this entry').'</a></p>';
-			$sidebar['metas-box']['items']['attachments']= $item;
+				echo '<p>'.__('No attachment.').'</p>';
+			} else {
+			}
+			echo '<p><a class="button" href="media.php?post_id='.$post->post_id.'">'.__('Add files to this entry').'</a></p>';
 		}
 	}
Index: plugins/attachments/_public.php
===================================================================
--- plugins/attachments/_public.php	(revision 1280)
+++ plugins/attachments/_public.php	(revision 1266)
@@ -40,12 +40,16 @@
 		"<?php\n".
 		'if ($_ctx->posts !== null && $core->media) {'."\n".
-			'$_ctx->attachments = new ArrayObject($core->media->getPostMedia($_ctx->posts->post_id));'."\n".
+		'$_ctx->attachments = $core->media->getPostMedia($_ctx->posts->post_id, null, true);'."\n".
 		"?>\n".
 		
-		'<?php foreach ($_ctx->attachments as $attach_i => $attach_f) : '.
-		'$GLOBALS[\'attach_i\'] = $attach_i; $GLOBALS[\'attach_f\'] = $attach_f;'.
-		'$_ctx->file_url = $attach_f->file_url; ?>'.
+		'<?php $attach_i = 0; ?>'. // LEGACY
+		'<?php while ($_ctx->attachments->fetch()) : ?>'.
+		
+		'<?php $GLOBALS[\'attach_i\'] = $attach_i; $attach_f = $_ctx->attachments; $GLOBALS[\'attach_f\'] = $attach_f;'. // LEGACY
+		'$_ctx->file_url = $attach_f->file_url; ?>'. // LEGACY
 		$content.
-		'<?php endforeach; $_ctx->attachments = null; unset($attach_i,$attach_f,$_ctx->file_url); ?>'.
+		'<?php $attach_i++; ?>'. // LEGACY
+		'<?php endwhile; '.
+		'$_ctx->attachments = null; ?>'.
 		
 		"<?php } ?>\n";
@@ -60,5 +64,5 @@
 	{
 		return
-		"<?php if (\$attach_i == 0) : ?>".
+		"<?php if (\$_ctx->attachments->isStart()) : ?>".
 		$content.
 		"<?php endif; ?>";
@@ -71,5 +75,5 @@
 	{
 		return
-		"<?php if (\$attach_i+1 == count(\$_ctx->attachments)) : ?>".
+		"<?php if (\$_ctx->attachments->isEnd()) : ?>".
 		$content.
 		"<?php endif; ?>";
@@ -93,15 +97,15 @@
 		if (isset($attr['is_image'])) {
 			$sign = (boolean) $attr['is_image'] ? '' : '!';
-			$if[] = $sign.'$attach_f->media_image';
+			$if[] = $sign.'$_ctx->attachments->media_image';
 		}
 		
 		if (isset($attr['has_thumb'])) {
 			$sign = (boolean) $attr['has_thumb'] ? '' : '!';
-			$if[] = $sign.'isset($attach_f->media_thumb[\'sq\'])';
+			$if[] = $sign.'isset($_ctx->attachments->media_thumb[\'sq\'])';
 		}
 		
 		if (isset($attr['is_mp3'])) {
 			$sign = (boolean) $attr['is_mp3'] ? '==' : '!=';
-			$if[] = '$attach_f->type '.$sign.' "audio/mpeg3"';
+			$if[] = '$_ctx->attachments->type '.$sign.' "audio/mpeg3"';
 		}
 		
@@ -109,7 +113,7 @@
 			$sign = (boolean) $attr['is_flv'] ? '' : '!';
 			$if[] = $sign.
-				'($attach_f->type == "video/x-flv" || '.
-				'$attach_f->type == "video/mp4" || '.
-				'$attach_f->type == "video/x-m4v")';
+				'($_ctx->attachments->type == "video/x-flv" || '.
+				'$_ctx->attachments->type == "video/mp4" || '.
+				'$_ctx->attachments->type == "video/x-m4v")';
 		}
 		
@@ -127,5 +131,5 @@
 	{
 		$f = $GLOBALS['core']->tpl->getFilters($attr);
-		return '<?php echo '.sprintf($f,'$attach_f->type').'; ?>';
+		return '<?php echo '.sprintf($f,'$_ctx->attachments->type').'; ?>';
 	}
 	
@@ -136,5 +140,5 @@
 	{
 		$f = $GLOBALS['core']->tpl->getFilters($attr);
-		return '<?php echo '.sprintf($f,'$attach_f->media_type').'; ?>';
+		return '<?php echo '.sprintf($f,'$_ctx->attachments->media_type').'; ?>';
 	}
 	
@@ -145,5 +149,5 @@
 	{
 		$f = $GLOBALS['core']->tpl->getFilters($attr);
-		return '<?php echo '.sprintf($f,'$attach_f->basename').'; ?>';
+		return '<?php echo '.sprintf($f,'$_ctx->attachments->basename').'; ?>';
 	}
 	
@@ -158,7 +162,7 @@
 		$f = $GLOBALS['core']->tpl->getFilters($attr);
 		if (!empty($attr['full'])) {
-			return '<?php echo '.sprintf($f,'$attach_f->size').'; ?>';
-		}
-		return '<?php echo '.sprintf($f,'files::size($attach_f->size)').'; ?>';
+			return '<?php echo '.sprintf($f,'$_ctx->attachments->size').'; ?>';
+		}
+		return '<?php echo '.sprintf($f,'files::size($_ctx->attachments->size)').'; ?>';
 	}
 	
@@ -169,5 +173,5 @@
 	{
 		$f = $GLOBALS['core']->tpl->getFilters($attr);
-		return '<?php echo '.sprintf($f,'$attach_f->media_title').'; ?>';
+		return '<?php echo '.sprintf($f,'$_ctx->attachments->media_title').'; ?>';
 	}
 	
@@ -180,6 +184,6 @@
 		return
 		'<?php '.
-		'if (isset($attach_f->media_thumb[\'sq\'])) {'.
-			'echo '.sprintf($f,'$attach_f->media_thumb[\'sq\']').';'.
+		'if (isset($_ctx->attachments->media_thumb[\'sq\'])) {'.
+			'echo '.sprintf($f,'$_ctx->attachments->media_thumb[\'sq\']').';'.
 		'}'.
 		'?>';
@@ -192,5 +196,5 @@
 	{
 		$f = $GLOBALS['core']->tpl->getFilters($attr);
-		return '<?php echo '.sprintf($f,'$attach_f->file_url').'; ?>';
+		return '<?php echo '.sprintf($f,'$_ctx->attachments->file_url').'; ?>';
 	}
 	
Index: lugins/attachments/js/post.js
===================================================================
--- plugins/attachments/js/post.js	(revision 1393)
+++ 	(revision )
@@ -1,5 +1,0 @@
-$(function() {
-	$('h5.s-attachments').toggleWithLegend($('.s-attachments').not('h5'),{
-		cookie: 'dcx_attachments'
-	});
-});
Index: plugins/blogroll/_admin.php
===================================================================
--- plugins/blogroll/_admin.php	(revision 1502)
+++ plugins/blogroll/_admin.php	(revision 1179)
@@ -14,6 +14,4 @@
 $core->addBehavior('adminDashboardIcons','blogroll_dashboard');
 $core->addBehavior('adminDashboardFavs','blogroll_dashboard_favs');
-$core->addBehavior('adminUsersActionsHeaders','blogroll_users_actions_headers');
-
 function blogroll_dashboard($core,$icons)
 {
@@ -26,10 +24,6 @@
 		'usage,contentadmin',null,null));
 }
-function blogroll_users_actions_headers()
-{
-	return dcPage::jsLoad('index.php?pf=blogroll/_users_actions.js');
-}
 
-$_menu['Blog']->addItem(__('Blogroll'),'plugin.php?p=blogroll','index.php?pf=blogroll/icon-small.png',
+$_menu['Plugins']->addItem(__('Blogroll'),'plugin.php?p=blogroll','index.php?pf=blogroll/icon-small.png',
                 preg_match('/plugin.php\?p=blogroll(&.*)?$/',$_SERVER['REQUEST_URI']),
                 $core->auth->check('usage,contentadmin',$core->blog->id));
Index: lugins/blogroll/_users_actions.js
===================================================================
--- plugins/blogroll/_users_actions.js	(revision 1502)
+++ 	(revision )
@@ -1,47 +1,0 @@
-jQuery.fn.updateBlogrollPermissionsForm = function() {
-	return this.each(function() {
-		
-		var perms = {};
-		var re = /^perm\[(.+?)\]\[(.+?)\]$/;
-		var e,prop;
-		
-		// Building a nice object of form elements
-		for (var i=0; i<this.elements.length; i++) {
-			e = this.elements[i];
-			
-			if (e.name == undefined) {
-				continue;
-			}
-			var prop;
-			prop = e.name.match(re);
-			if (!prop) {
-				continue;
-			}
-			if (perms[prop[1]] == undefined) {
-				perms[prop[1]] = {};
-			}
-			perms[prop[1]][prop[2]] = e;
-			
-			// select related permissions for admin
-			if (prop[2] == 'admin') {
-				if (e.checked) {
-					admin(e,perms,re);
-				}
-				$(e).click(function(){
-					admin(this,perms,re);
-				});
-			}
-		}
-		
-		function admin(E,perms,re) {
-					P = E.name.match(re);
-					
-					perms[P[1]]['blogroll'].checked = E.checked;
-					perms[P[1]]['blogroll'].disabled = E.checked;
-		}
-	});
-};
-
-$(function() {
-	$('#permissions-form').updateBlogrollPermissionsForm();
-});
Index: plugins/blogroll/edit.php
===================================================================
--- plugins/blogroll/edit.php	(revision 1466)
+++ plugins/blogroll/edit.php	(revision 1179)
@@ -95,13 +95,5 @@
 
 <body>
-<?php
-	echo dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			'<span class="page-title">'.__('Blogroll').'</span>' => $p_url
-		));
-?>
-
-<?php echo '<p><a class="back" href="'.$p_url.'">'.__('Return to blogroll').'</a></p>'; ?>
+<?php echo '<p><a href="'.$p_url.'">'.__('Return to blogroll').'</a></p>'; ?>
 
 <?php
@@ -114,8 +106,8 @@
 	echo
 	'<form action="'.$p_url.'" method="post">'.
-	'<h3>'.__('Edit category').'</h3>'.
-	
-	'<p><label for="link_desc" class="required classic"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label> '.
-	form::field('link_desc',30,255,html::escapeHTML($link_desc)).
+	'<fieldset><legend>'.__('Edit category').'</legend>'.
+	
+	'<p><label for="link_desc" class="required classic"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').' '.
+	form::field('link_desc',30,255,html::escapeHTML($link_desc)).'</label> '.
 	
 	form::hidden('edit',1).
@@ -123,4 +115,5 @@
 	$core->formNonce().
 	'<input type="submit" name="edit_cat" value="'.__('Save').'"/></p>'.
+	'</fieldset>'.
 	'</form>';
 }
@@ -132,29 +125,32 @@
 	
 	echo
-	'<form action="plugin.php" method="post" class="two-cols fieldset">'.
-
-	'<div class="col30 first-col">'.
-	'<h3>'.__('Edit link').'</h3>'.
-	
-	'<p><label for="link_title" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label> '.
-	form::field('link_title',30,255,html::escapeHTML($link_title)).'</p>'.
-	
-	'<p><label for="link_href" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('URL:').'</label> '.
-	form::field('link_href',30,255,html::escapeHTML($link_href)).'</p>'.
-	
-	'<p><label for="link_desc">'.__('Description:').'</label> '.
-	form::field('link_desc',30,255,html::escapeHTML($link_desc)).'</p>'.
-	
-	'<p><label for="link_lang">'.__('Language:').'</label> '.
-	form::field('link_lang',5,5,html::escapeHTML($link_lang)).'</p>'.
-	'</div>'.
+	'<form action="plugin.php" method="post">'.
+	'<fieldset class="two-cols"><legend>'.__('Edit link').'</legend>'.
+	
+	'<p class="col"><label for="link_title" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').' '.
+	form::field('link_title',30,255,html::escapeHTML($link_title)).'</label></p>'.
+	
+	'<p class="col"><label for="link_href" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('URL:').' '.
+	form::field('link_href',30,255,html::escapeHTML($link_href)).'</label></p>'.
+	
+	'<p class="col"><label for="link_desc">'.__('Description:').' '.
+	form::field('link_desc',30,255,html::escapeHTML($link_desc)).'</label></p>'.
+	
+	'<p class="col"><label for="link_lang">'.__('Language:').' '.
+	form::field('link_lang',5,5,html::escapeHTML($link_lang)).'</label></p>'.
+	
+	'<p>'.form::hidden('p','blogroll').
+	form::hidden('edit',1).
+	form::hidden('id',$id).
+	$core->formNonce().
+	'<input type="submit" name="edit_link" value="'.__('Save').'"/></p>'.
+	'</fieldset>'.
 	
 	
 	# XFN nightmare
-	'<div class="col70 last-col">'.
-	'<h3>'.__('XFN informations').'</h3>'.
+	'<fieldset><legend>'.__('XFN').'</legend>'.
 	'<table class="noborder">'.
 	
-	'<tr class="line">'.
+	'<tr>'.
 	'<th>'.__('_xfn_Me').'</th>'.
 	'<td><p>'.'<label class="classic">'.
@@ -163,5 +159,5 @@
 	'</tr>'.
 	
-	'<tr class="line">'.
+	'<tr>'.
 	'<th>'.__('_xfn_Friendship').'</th>'.
 	'<td><p>'.
@@ -176,5 +172,5 @@
 	'</tr>'.
 	
-	'<tr class="line">'.
+	'<tr>'.
 	'<th>'.__('_xfn_Physical').'</th>'.
 	'<td><p>'.
@@ -184,5 +180,5 @@
 	'</tr>'.
 	
-	'<tr class="line">'.
+	'<tr>'.
 	'<th>'.__('_xfn_Professional').'</th>'.
 	'<td><p>'.
@@ -194,5 +190,5 @@
 	'</tr>'.
 	
-	'<tr class="line">'.
+	'<tr>'.
 	'<th>'.__('_xfn_Geographical').'</th>'.
 	'<td><p>'.
@@ -205,5 +201,5 @@
 	'</tr>'.
 	
-	'<tr class="line">'.
+	'<tr>'.
 	'<th>'.__('_xfn_Family').'</th>'.
 	'<td><p>'.
@@ -222,5 +218,5 @@
 	'</tr>'.
 	
-	'<tr class="line">'.
+	'<tr>'.
 	'<th>'.__('_xfn_Romantic').'</th>'.
 	'<td><p>'.
@@ -237,10 +233,5 @@
 	'</table>'.
 	
-	'</div>'.
-	'<p class="clear">'.form::hidden('p','blogroll').
-	form::hidden('edit',1).
-	form::hidden('id',$id).
-	$core->formNonce().
-	'<input type="submit" name="edit_link" value="'.__('Save').'"/></p>'.
+	'</fieldset>'.
 	
 	'</form>';
Index: plugins/blogroll/index.php
===================================================================
--- plugins/blogroll/index.php	(revision 1454)
+++ plugins/blogroll/index.php	(revision 1504)
@@ -177,11 +177,5 @@
 
 <body>
-<?php
-	echo dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			'<span class="page-title">'.__('Blogroll').'</span>' => ''
-		));
-?>
+<h2><?php echo html::escapeHTML($core->blog->name); ?> &rsaquo; <span class="page-title"><?php echo __('Blogroll'); ?></span></h2>
 
 <?php
@@ -208,4 +202,7 @@
 
 <div class="multi-part" title="<?php echo __('Blogroll'); ?>">
+
+<?php if (!$rs->isEmpty()) { ?>
+
 <form action="plugin.php" method="post" id="links-form">
 <table class="maximal dragable">
@@ -251,24 +248,27 @@
 </tbody>
 </table>
-<?php
-	if (!$rs->isEmpty()) {
-		echo
-		'<div class="two-cols">'.
-		'<p class="col">'.form::hidden('links_order','').
-		form::hidden(array('p'),'blogroll').
-		$core->formNonce().
-		'<input type="submit" name="saveorder" value="'.__('Save order').'" /></p>'.
-		
-		'<p class="col right"><input type="submit" class="delete" name="removeaction"'.
-		' value="'.__('Delete selected links').'" '.
-		'onclick="return window.confirm(\''.html::escapeJS(
-			__('Are you sure you want to delete selected links?')).'\');" /></p>'.
-		'</div>';
-	} else {
-		echo
-		'<div><p>'.__('The link list is empty.').'</p></div>';
-	}
-?>
+
+<div class="two-cols">
+<p class="col">
+<?php
+	echo 
+	form::hidden('links_order','').
+	form::hidden(array('p'),'blogroll').
+	$core->formNonce();
+?>
+<input type="submit" name="saveorder" value="<?php echo __('Save order'); ?>" /></p>
+<p class="col right"><input type="submit" class="delete" name="removeaction"
+	 value="<?php echo __('Delete selected links'); ?>" 
+	 onclick="return window.confirm('
+	 <?php echo html::escapeJS(__('Are you sure you want to delete selected links?')); ?>');" /></p>
+</div>
 </form>
+
+<?php
+} else {
+	echo '<div><p>'.__('The link list is empty.').'</p></div>';
+}
+?>
+
 </div>
 
@@ -277,23 +277,24 @@
 '<div class="multi-part clear" id="add-link" title="'.__('Add a link').'">'.
 '<form action="plugin.php" method="post" id="add-link-form">'.
-'<h3>'.__('Add a new link').'</h3>'.
-'<p class="col"><label for="link_title" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label> '.
+'<fieldset><legend>'.__('Add a new link').'</legend>'.
+'<p class="col"><label for="link_title" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').' '.
 form::field('link_title',30,255,$link_title).
-'</p>'.
-
-'<p class="col"><label for="link_href" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('URL:').'</label> '.
+'</label></p>'.
+
+'<p class="col"><label for="link_href" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('URL:').' '.
 form::field('link_href',30,255,$link_href).
-'</p>'.
-
-'<p class="col"><label for="link_desc">'.__('Description:').'</label> '.
+'</label></p>'.
+
+'<p class="col"><label for="link_desc">'.__('Description:').' '.
 form::field('link_desc',30,255,$link_desc).
-'</p>'.
-
-'<p class="col"><label for="link_lang">'.__('Language:').'</label> '.
+'</label></p>'.
+
+'<p class="col"><label for="link_lang">'.__('Language:').' '.
 form::field('link_lang',5,5,$link_lang).
-'</p>'.
+'</label></p>'.
 '<p>'.form::hidden(array('p'),'blogroll').
 $core->formNonce().
 '<input type="submit" name="add_link" value="'.__('Save').'" /></p>'.
+'</fieldset>'.
 '</form>'.
 '</div>';
@@ -302,10 +303,11 @@
 '<div class="multi-part" id="add-cat" title="'.__('Add a category').'">'.
 '<form action="plugin.php" method="post" id="add-category-form">'.
-'<h3>'.__('Add a new category').'</h3>'.
-'<p><label for="cat_title" class=" classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label> '.
-form::field('cat_title',30,255,$cat_title).' '.
+'<fieldset><legend>'.__('Add a new category').'</legend>'.
+'<p><label for="cat_title" class=" classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').' '.
+form::field('cat_title',30,255,$cat_title).'</label> '.
 form::hidden(array('p'),'blogroll').
 $core->formNonce().
 '<input type="submit" name="add_cat" value="'.__('Save').'" /></p>'.
+'</fieldset>'.
 '</form>'.
 '</div>';
@@ -316,10 +318,11 @@
 	echo
 	'<form action="plugin.php" method="post" id="import-links-form" enctype="multipart/form-data">'.
-	'<h3>'.__('Import links').'</h3>'.
-	'<p><label for="links_file" class=" classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('OPML or XBEL File:').'</label> '.
-	'<input type="file" id="links_file" name="links_file" /></p>'.
+	'<fieldset><legend>'.__('Import links').'</legend>'.
+	'<p><label for="links_file" class=" classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('OPML or XBEL File:').' '.
+	'<input type="file" id="links_file" name="links_file" /></label></p>'.
 	'<p>'.form::hidden(array('p'),'blogroll').
 	$core->formNonce().
 	'<input type="submit" name="import_links" value="'.__('Import').'" /></p>'.
+	'</fieldset>'.
 	'</form>';
 }
@@ -327,5 +330,5 @@
 	echo
 	'<form action="plugin.php" method="post" id="import-links-form">'.
-	'<h3>'.__('Import links').'</h3>';
+	'<fieldset><legend>'.__('Import links').'</legend>';
 	if (empty($imported)) {
 		echo '<p>'.__('Nothing to import').'</p>';
@@ -368,4 +371,5 @@
 	}
 	echo
+	'</fieldset>'.
 	'</form>';
 }
Index: plugins/blowupConfig/_public.php
===================================================================
--- plugins/blowupConfig/_public.php	(revision 1436)
+++ plugins/blowupConfig/_public.php	(revision 1179)
@@ -23,7 +23,172 @@
 	public static function publicHeadContent($core)
 	{
-		$url = blowupConfig::publicCssUrlHelper();
-		if ($url) {
-			echo '<link rel="stylesheet" href="'.$url.'" type="text/css" />';
+		echo '<style type="text/css">'."\n".self::blowUpStyleHelper()."\n</style>\n";
+	}
+
+	public static function blowUpStyleHelper()
+	{
+		$s = $GLOBALS['core']->blog->settings->themes->blowup_style;
+
+		if ($s === null) {
+			return;
+		}
+
+		$s = @unserialize($s);
+		if (!is_array($s)) {
+			return;
+		}
+
+		$css = array();
+
+		/* Sidebar position
+		---------------------------------------------- */
+		if ($s['sidebar_position'] == 'left') {
+			$css['#wrapper']['background-position'] = '-300px 0';
+			$css['#main']['float'] = 'right';
+			$css['#sidebar']['float'] = 'left';
+		}
+
+		/* Properties
+		---------------------------------------------- */
+		self::prop($css,'body','background-color',$s['body_bg_c']);
+
+		self::prop($css,'body','color',$s['body_txt_c']);
+		self::prop($css,'.post-tags li a:link, .post-tags li a:visited, .post-info-co a:link, .post-info-co a:visited','color',$s['body_txt_c']);
+		self::prop($css,'#page','font-size',$s['body_txt_s']);
+		self::prop($css,'body','font-family',blowupConfig::fontDef($s['body_txt_f']));
+
+		self::prop($css,'.post-content, .post-excerpt, #comments dd, #pings dd, dd.comment-preview','line-height',$s['body_line_height']);
+
+		if (!$s['blog_title_hide'])
+		{
+			self::prop($css,'#top h1 a','color',$s['blog_title_c']);
+			self::prop($css,'#top h1','font-size',$s['blog_title_s']);
+			self::prop($css,'#top h1','font-family',blowupConfig::fontDef($s['blog_title_f']));
+
+			if ($s['blog_title_a'] == 'right' || $s['blog_title_a'] == 'left') {
+				$css['#top h1'][$s['blog_title_a']] = '0px';
+				$css['#top h1']['width'] = 'auto';
+			}
+
+			if ($s['blog_title_p'])
+			{
+				$_p = explode(':',$s['blog_title_p']);
+				$css['#top h1']['top'] = $_p[1].'px';
+				if ($s['blog_title_a'] != 'center') {
+					$_a = $s['blog_title_a'] == 'right' ? 'right' : 'left';
+					$css['#top h1'][$_a] = $_p[0].'px';
+				}
+			}
+		}
+		else
+		{
+			self::prop($css,'#top h1 span','text-indent','-5000px');
+			self::prop($css,'#top h1','top','0px');
+			$css['#top h1 a'] = array(
+				'display' => 'block',
+				'height' => $s['top_height'] ? ($s['top_height']-10).'px' : '120px',
+				'width' => '800px'
+			);
+		}
+		self::prop($css,'#top','height',$s['top_height']);
+
+		self::prop($css,'.day-date','color',$s['date_title_c']);
+		self::prop($css,'.day-date','font-family',blowupConfig::fontDef($s['date_title_f']));
+		self::prop($css,'.day-date','font-size',$s['date_title_s']);
+
+		self::prop($css,'a','color',$s['body_link_c']);
+		self::prop($css,'a:visited','color',$s['body_link_v_c']);
+		self::prop($css,'a:hover, a:focus, a:active','color',$s['body_link_f_c']);
+
+		self::prop($css,'#comment-form input, #comment-form textarea','color',$s['body_link_c']);
+		self::prop($css,'#comment-form input.preview','color',$s['body_link_c']);
+		self::prop($css,'#comment-form input.preview:hover','background',$s['body_link_f_c']);
+		self::prop($css,'#comment-form input.preview:hover','border-color',$s['body_link_f_c']);
+		self::prop($css,'#comment-form input.submit','color',$s['body_link_c']);
+		self::prop($css,'#comment-form input.submit:hover','background',$s['body_link_f_c']);
+		self::prop($css,'#comment-form input.submit:hover','border-color',$s['body_link_f_c']);
+
+		self::prop($css,'#sidebar','font-family',blowupConfig::fontDef($s['sidebar_text_f']));
+		self::prop($css,'#sidebar','font-size',$s['sidebar_text_s']);
+		self::prop($css,'#sidebar','color',$s['sidebar_text_c']);
+
+		self::prop($css,'#sidebar h2','font-family',blowupConfig::fontDef($s['sidebar_title_f']));
+		self::prop($css,'#sidebar h2','font-size',$s['sidebar_title_s']);
+		self::prop($css,'#sidebar h2','color',$s['sidebar_title_c']);
+
+		self::prop($css,'#sidebar h3','font-family',blowupConfig::fontDef($s['sidebar_title2_f']));
+		self::prop($css,'#sidebar h3','font-size',$s['sidebar_title2_s']);
+		self::prop($css,'#sidebar h3','color',$s['sidebar_title2_c']);
+
+		self::prop($css,'#sidebar ul','border-top-color',$s['sidebar_line_c']);
+		self::prop($css,'#sidebar li','border-bottom-color',$s['sidebar_line_c']);
+		self::prop($css,'#topnav ul','border-bottom-color',$s['sidebar_line_c']);
+
+		self::prop($css,'#sidebar li a','color',$s['sidebar_link_c']);
+		self::prop($css,'#sidebar li a:visited','color',$s['sidebar_link_v_c']);
+		self::prop($css,'#sidebar li a:hover, #sidebar li a:focus, #sidebar li a:active','color',$s['sidebar_link_f_c']);
+		self::prop($css,'#search input','color',$s['sidebar_link_c']);
+		self::prop($css,'#search .submit','color',$s['sidebar_link_c']);
+		self::prop($css,'#search .submit:hover','background',$s['sidebar_link_f_c']);
+		self::prop($css,'#search .submit:hover','border-color',$s['sidebar_link_f_c']);
+
+		self::prop($css,'.post-title','color',$s['post_title_c']);
+		self::prop($css,'.post-title a, .post-title a:visited','color',$s['post_title_c']);
+		self::prop($css,'.post-title','font-family',blowupConfig::fontDef($s['post_title_f']));
+		self::prop($css,'.post-title','font-size',$s['post_title_s']);
+
+		self::prop($css,'#comments dd','background-color',$s['post_comment_bg_c']);
+		self::prop($css,'#comments dd','color',$s['post_comment_c']);
+		self::prop($css,'#comments dd.me','background-color',$s['post_commentmy_bg_c']);
+		self::prop($css,'#comments dd.me','color',$s['post_commentmy_c']);
+
+		self::prop($css,'#prelude, #prelude a','color',$s['prelude_c']);
+
+		self::prop($css,'#footer p','background-color',$s['footer_bg_c']);
+		self::prop($css,'#footer p','color',$s['footer_c']);
+		self::prop($css,'#footer p','font-size',$s['footer_s']);
+		self::prop($css,'#footer p','font-family',blowupConfig::fontDef($s['footer_f']));
+		self::prop($css,'#footer p a','color',$s['footer_l_c']);
+
+		/* Images
+		------------------------------------------------------ */
+		self::backgroundImg($css,'body',$s['body_bg_c'],'body-bg.png');
+		self::backgroundImg($css,'body',$s['body_bg_g'] != 'light','body-bg.png');
+		self::backgroundImg($css,'body',$s['prelude_c'],'body-bg.png');
+		self::backgroundImg($css,'#top',$s['body_bg_c'],'page-t.png');
+		self::backgroundImg($css,'#top',$s['body_bg_g'] != 'light','page-t.png');
+		self::backgroundImg($css,'#top',$s['uploaded'] || $s['top_image'],'page-t.png');
+		self::backgroundImg($css,'#footer',$s['body_bg_c'],'page-b.png');
+		self::backgroundImg($css,'#comments dt',$s['post_comment_bg_c'],'comment-t.png');
+		self::backgroundImg($css,'#comments dd',$s['post_comment_bg_c'],'comment-b.png');
+		self::backgroundImg($css,'#comments dt.me',$s['post_commentmy_bg_c'],'commentmy-t.png');
+		self::backgroundImg($css,'#comments dd.me',$s['post_commentmy_bg_c'],'commentmy-b.png');
+
+		$res = '';
+		foreach ($css as $selector => $values) {
+			$res .= $selector." {\n";
+			foreach ($values as $k => $v) {
+				$res .= $k.':'.$v.";\n";
+			}
+			$res .= "}\n";
+		}
+
+		$res .= $s['extra_css'];
+
+		return $res;
+	}
+
+	protected static function prop(&$css,$selector,$prop,$value)
+	{
+		if ($value) {
+			$css[$selector][$prop] = $value;
+		}
+	}
+
+	protected static function backgroundImg(&$css,$selector,$value,$image)
+	{
+		$file = blowupConfig::imagesPath().'/'.$image;
+		if ($value && file_exists($file)){
+			$css[$selector]['background-image'] = 'url('.blowupConfig::imagesURL().'/'.$image.')';
 		}
 	}
Index: plugins/blowupConfig/config.js
===================================================================
--- plugins/blowupConfig/config.js	(revision 1499)
+++ plugins/blowupConfig/config.js	(revision 89)
@@ -49,5 +49,5 @@
 	
 	$('#theme_config').prepend(styles_combo);
-	$(styles_combo).wrap('<div class="fieldset"></div>').before('<h3>' + dotclear.msg.predefined_styles + '</h3>').wrap('<p></p>');
+	$(styles_combo).wrap('<fieldset></fieldset>').before('<legend>' + dotclear.msg.predefined_styles + '</legend>').wrap('<p></p>');
 	
 	$(styles_combo).change(function() {
@@ -62,5 +62,5 @@
 	
 	// Code import
-	var e = $('#bu_export_content');
+	var e = $('#bu_export ~ fieldset:first');
 	e.toggle();
 	
Index: plugins/blowupConfig/index.php
===================================================================
--- plugins/blowupConfig/index.php	(revision 1499)
+++ plugins/blowupConfig/index.php	(revision 1179)
@@ -15,5 +15,4 @@
 
 $can_write_images = blowupConfig::canWriteImages();
-$can_write_css = blowupConfig::canWriteCss();
 
 if ($core->error->flag()) {
@@ -189,9 +188,4 @@
 			$blowup_user['prelude_c'] = blowupConfig::adjustColor($_POST['prelude_c']);
 			blowupConfig::createImages($blowup_user,$uploaded);
-		}
-
-		if ($can_write_css)
-		{
-			blowupConfig::createCss($blowup_user);
 		}
 
@@ -227,13 +221,8 @@
 <body>
 <?php
-echo dcPage::breadcrumb(
-	array(
-		html::escapeHTML($core->blog->name) => '',
-		__('Blog appearance') => 'blog_theme.php',
-		'<span class="page-title">'.__('Blowup configuration').'</span>' => ''
-	));
-
-echo
-'<p><a class="back" href="blog_theme.php">'.__('Back to Blog themes').'</a></p>';
+echo
+'<h2>'.html::escapeHTML($core->blog->name).
+' &rsaquo; <a href="blog_theme.php">'.__('Blog appearance').'</a> &rsaquo; <span class="page-title">'.__('Blowup configuration').'</span></h2>'.
+'<p><a class="back" href="blog_theme.php">'.__('back').'</a></p>';
 
 
@@ -249,45 +238,46 @@
 echo '<form id="theme_config" action="'.$p_url.'" method="post" enctype="multipart/form-data">';
 
-echo '<div class="fieldset"><h3>'.__('Customization').'</h3>'.
-'<h4>'.__('General').'</h4>';
+echo '<fieldset><legend>'.__('General').'</legend>';
 
 if ($can_write_images) {
 	echo
-	'<p class="field"><label for="body_bg_c">'.__('Background color:').'</label> '.
-	form::field('body_bg_c',7,7,$blowup_user['body_bg_c'],'colorpicker').'</p>'.
-
-	'<p class="field"><label for="body_bg_g">'.__('Background color fill:').'</label> '.
-	form::combo('body_bg_g',$gradient_types,$blowup_user['body_bg_g']).'</p>';
-}
-
-echo
-'<p class="field"><label for="body_txt_f">'.__('Main text font:').'</label> '.
-form::combo('body_txt_f',blowupConfig::fontsList(),$blowup_user['body_txt_f']).'</p>'.
-
-'<p class="field"><label for="body_txt_s">'.__('Main text font size:').'</label> '.
-form::field('body_txt_s',7,7,$blowup_user['body_txt_s']).'</p>'.
-
-'<p class="field"><label for="body_txt_c">'.__('Main text color:').'</label> '.
-form::field('body_txt_c',7,7,$blowup_user['body_txt_c'],'colorpicker').'</p>'.
-
-'<p class="field"><label for="body_line_height">'.__('Text line height:').'</label> '.
-form::field('body_line_height',7,7,$blowup_user['body_line_height']).'</p>'.
-
-'<h4 class="border-top">'.__('Links').'</h4>'.
-'<p class="field"><label for="body_link_c">'.__('Links color:').'</label> '.
-form::field('body_link_c',7,7,$blowup_user['body_link_c'],'colorpicker').'</p>'.
-
-'<p class="field"><label for="body_link_v_c">'.__('Visited links color:').'</label> '.
-form::field('body_link_v_c',7,7,$blowup_user['body_link_v_c'],'colorpicker').'</p>'.
-
-'<p class="field"><label for="body_link_f_c">'.__('Focus links color:').'</label> '.
-form::field('body_link_f_c',7,7,$blowup_user['body_link_f_c'],'colorpicker').'</p>'.
-
-'<h4 class="border-top">'.__('Page top').'</h4>';
+	'<p class="field"><label for="body_bg_c">'.__('Background color:').' '.
+	form::field('body_bg_c',7,7,$blowup_user['body_bg_c'],'colorpicker').'</label></p>'.
+
+	'<p class="field"><label for="body_bg_g">'.__('Background color fill:').' '.
+	form::combo('body_bg_g',$gradient_types,$blowup_user['body_bg_g']).'</label></p>';
+}
+
+echo
+'<p class="field"><label for="body_txt_f">'.__('Main text font:').' '.
+form::combo('body_txt_f',blowupConfig::fontsList(),$blowup_user['body_txt_f']).'</label></p>'.
+
+'<p class="field"><label for="body_txt_s">'.__('Main text font size:').' '.
+form::field('body_txt_s',7,7,$blowup_user['body_txt_s']).'</label></p>'.
+
+'<p class="field"><label for="body_txt_c">'.__('Main text color:').' '.
+form::field('body_txt_c',7,7,$blowup_user['body_txt_c'],'colorpicker').'</label></p>'.
+
+'<p class="field"><label for="body_line_height">'.__('Text line height:').' '.
+form::field('body_line_height',7,7,$blowup_user['body_line_height']).'</label></p>'.
+'</fieldset>'.
+
+'<fieldset><legend>'.__('Links').'</legend>'.
+'<p class="field"><label for="body_link_c">'.__('Links color:').' '.
+form::field('body_link_c',7,7,$blowup_user['body_link_c'],'colorpicker').'</label></p>'.
+
+'<p class="field"><label for="body_link_v_c">'.__('Visited links color:').' '.
+form::field('body_link_v_c',7,7,$blowup_user['body_link_v_c'],'colorpicker').'</label></p>'.
+
+'<p class="field"><label for="body_link_f_c">'.__('Focus links color:').' '.
+form::field('body_link_f_c',7,7,$blowup_user['body_link_f_c'],'colorpicker').'</label></p>'.
+'</fieldset>'.
+
+'<fieldset><legend>'.__('Page top').'</legend>';
 
 if ($can_write_images) {
 	echo
-	'<p class="field"><label for="prelude_c">'.__('Prelude color:').'</label> '.
-	form::field('prelude_c',7,7,$blowup_user['prelude_c'],'colorpicker').'</p>';
+	'<p class="field"><label for="prelude_c">'.__('Prelude color:').' '.
+	form::field('prelude_c',7,7,$blowup_user['prelude_c'],'colorpicker').'</label></p>';
 }
 
@@ -296,18 +286,19 @@
 form::checkbox('blog_title_hide',1,$blowup_user['blog_title_hide']).'</label></p>'.
 
-'<p class="field"><label for="blog_title_f">'.__('Main title font:').'</label> '.
-form::combo('blog_title_f',blowupConfig::fontsList(),$blowup_user['blog_title_f']).'</p>'.
-
-'<p class="field"><label for="blog_title_s">'.__('Main title font size:').'</label> '.
-form::field('blog_title_s',7,7,$blowup_user['blog_title_s']).'</p>'.
-
-'<p class="field"><label for="blog_title_c">'.__('Main title color:').'</label> '.
-form::field('blog_title_c',7,7,$blowup_user['blog_title_c'],'colorpicker').'</p>'.
-
-'<p class="field"><label for="blog_title_a">'.__('Main title alignment:').'</label> '.
-form::combo('blog_title_a',array(__('center')=>'center',__('left')=>'left',__('right')=>'right'),$blowup_user['blog_title_a']).'</p>'.
-
-'<p class="field"><label for="blog_title_p">'.__('Main title position (x:y)').'</label> '.
-form::field('blog_title_p',7,7,$blowup_user['blog_title_p']).'</p>';
+'<p class="field"><label for="blog_title_f">'.__('Main title font:').' '.
+form::combo('blog_title_f',blowupConfig::fontsList(),$blowup_user['blog_title_f']).'</label></p>'.
+
+'<p class="field"><label for="blog_title_s">'.__('Main title font size:').' '.
+form::field('blog_title_s',7,7,$blowup_user['blog_title_s']).'</label></p>'.
+
+'<p class="field"><label for="blog_title_c">'.__('Main title color:').' '.
+form::field('blog_title_c',7,7,$blowup_user['blog_title_c'],'colorpicker').'</label></p>'.
+
+'<p class="field"><label for="blog_title_a">'.__('Main title alignment:').' '.
+form::combo('blog_title_a',array(__('center')=>'center',__('left')=>'left',__('right')=>'right'),$blowup_user['blog_title_a']).'</label></p>'.
+
+'<p class="field"><label for="blog_title_p">'.__('Main title position (x:y)').' '.
+form::field('blog_title_p',7,7,$blowup_user['blog_title_p']).'</label></p>'.
+'</fieldset>';
 
 if ($can_write_images) {
@@ -319,126 +310,129 @@
 
 	echo
-	'<h4 class="border-top">'.__('Top image').'</h4>'.
-	'<p class="field"><label for="top_image">'.__('Top image').'</label> '.
-	form::combo('top_image',$top_images,($blowup_user['top_image'] ? $blowup_user['top_image'] : 'default')).'</p>'.
+	'<fieldset><legend>'.__('Top image').'</legend>'.
+	'<p class="field"><label for="top_image">'.__('Top image').
+	form::combo('top_image',$top_images,($blowup_user['top_image'] ? $blowup_user['top_image'] : 'default')).'</label></p>'.
 	'<p>'.__('Choose "Custom..." to upload your own image.').'</p>'.
 
-	'<p id="uploader"><label for="upfile">'.__('Add your image:').'</label> '.
+	'<p id="uploader"><label for="upfile">'.__('Add your image:').
 	' ('.sprintf(__('JPEG or PNG file, 800 pixels wide, maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')'.
 	'<input type="file" name="upfile" id="upfile" size="35" />'.
-	'</p>'.
-
-	'<h5>'.__('Preview').'</h5>'.
+	'</label></p>'.
+
+	'<h3>'.__('Preview').'</h3>'.
 	'<div class="grid" style="width:800px;border:1px solid #ccc;">'.
 	'<img style="display:block;" src="'.$preview_image.'" alt="" id="image-preview" />'.
-	'</div>';
-}
-
-echo
-'<h4 class="border-top">'.__('Sidebar').'</h4>'.
-'<p class="field"><label for="sidebar_position">'.__('Sidebar position:').'</label> '.
-form::combo('sidebar_position',array(__('right')=>'right',__('left')=>'left'),$blowup_user['sidebar_position']).'</p>'.
-
-'<p class="field"><label for="sidebar_text_f">'.__('Sidebar text font:').'</label> '.
-form::combo('sidebar_text_f',blowupConfig::fontsList(),$blowup_user['sidebar_text_f']).'</p>'.
-
-'<p class="field"><label for="sidebar_text_s">'.__('Sidebar text font size:').'</label> '.
-form::field('sidebar_text_s',7,7,$blowup_user['sidebar_text_s']).'</p>'.
-
-'<p class="field"><label for="sidebar_text_c">'.__('Sidebar text color:').'</label> '.
-form::field('sidebar_text_c',7,7,$blowup_user['sidebar_text_c'],'colorpicker').'</p>'.
-
-'<p class="field"><label for="sidebar_title_f">'.__('Sidebar titles font:').'</label> '.
-form::combo('sidebar_title_f',blowupConfig::fontsList(),$blowup_user['sidebar_title_f']).'</p>'.
-
-'<p class="field"><label for="sidebar_title_s">'.__('Sidebar titles font size:').'</label> '.
-form::field('sidebar_title_s',7,7,$blowup_user['sidebar_title_s']).'</p>'.
-
-'<p class="field"><label for="sidebar_title_c">'.__('Sidebar titles color:').'</label> '.
-form::field('sidebar_title_c',7,7,$blowup_user['sidebar_title_c'],'colorpicker').'</p>'.
-
-'<p class="field"><label for="sidebar_title2_f">'.__('Sidebar 2nd level titles font:').'</label> '.
-form::combo('sidebar_title2_f',blowupConfig::fontsList(),$blowup_user['sidebar_title2_f']).'</p>'.
-
-'<p class="field"><label for="sidebar_title2_s">'.__('Sidebar 2nd level titles font size:').'</label> '.
-form::field('sidebar_title2_s',7,7,$blowup_user['sidebar_title2_s']).'</p>'.
-
-'<p class="field"><label for="sidebar_title2_c">'.__('Sidebar 2nd level titles color:').'</label> '.
-form::field('sidebar_title2_c',7,7,$blowup_user['sidebar_title2_c'],'colorpicker').'</p>'.
-
-'<p class="field"><label for="sidebar_line_c">'.__('Sidebar lines color:').'</label> '.
-form::field('sidebar_line_c',7,7,$blowup_user['sidebar_line_c'],'colorpicker').'</p>'.
-
-'<p class="field"><label for="sidebar_link_c">'.__('Sidebar links color:').'</label> '.
-form::field('sidebar_link_c',7,7,$blowup_user['sidebar_link_c'],'colorpicker').'</p>'.
-
-'<p class="field"><label for="sidebar_link_v_c">'.__('Sidebar visited links color:').'</label> '.
-form::field('sidebar_link_v_c',7,7,$blowup_user['sidebar_link_v_c'],'colorpicker').'</p>'.
-
-'<p class="field"><label for="sidebar_link_f_c">'.__('Sidebar focus links color:').'</label> '.
-form::field('sidebar_link_f_c',7,7,$blowup_user['sidebar_link_f_c'],'colorpicker').'</p>'.
+	'</div>'.
+	'</fieldset>';
+}
+
+echo
+'<fieldset><legend>'.__('Sidebar').'</legend>'.
+'<p class="field"><label for="sidebar_position">'.__('Sidebar position:').' '.
+form::combo('sidebar_position',array(__('right')=>'right',__('left')=>'left'),$blowup_user['sidebar_position']).'</label></p>'.
+
+'<p class="field"><label for="sidebar_text_f">'.__('Sidebar text font:').' '.
+form::combo('sidebar_text_f',blowupConfig::fontsList(),$blowup_user['sidebar_text_f']).'</label></p>'.
+
+'<p class="field"><label for="sidebar_text_s">'.__('Sidebar text font size:').' '.
+form::field('sidebar_text_s',7,7,$blowup_user['sidebar_text_s']).'</label></p>'.
+
+'<p class="field"><label for="sidebar_text_c">'.__('Sidebar text color:').' '.
+form::field('sidebar_text_c',7,7,$blowup_user['sidebar_text_c'],'colorpicker').'</label></p>'.
+
+'<p class="field"><label for="sidebar_title_f">'.__('Sidebar titles font:').' '.
+form::combo('sidebar_title_f',blowupConfig::fontsList(),$blowup_user['sidebar_title_f']).'</label></p>'.
+
+'<p class="field"><label for="sidebar_title_s">'.__('Sidebar titles font size:').' '.
+form::field('sidebar_title_s',7,7,$blowup_user['sidebar_title_s']).'</label></p>'.
+
+'<p class="field"><label for="sidebar_title_c">'.__('Sidebar titles color:').' '.
+form::field('sidebar_title_c',7,7,$blowup_user['sidebar_title_c'],'colorpicker').'</label></p>'.
+
+'<p class="field"><label for="sidebar_title2_f">'.__('Sidebar 2nd level titles font:').' '.
+form::combo('sidebar_title2_f',blowupConfig::fontsList(),$blowup_user['sidebar_title2_f']).'</label></p>'.
+
+'<p class="field"><label for="sidebar_title2_s">'.__('Sidebar 2nd level titles font size:').' '.
+form::field('sidebar_title2_s',7,7,$blowup_user['sidebar_title2_s']).'</label></p>'.
+
+'<p class="field"><label for="sidebar_title2_c">'.__('Sidebar 2nd level titles color:').' '.
+form::field('sidebar_title2_c',7,7,$blowup_user['sidebar_title2_c'],'colorpicker').'</label></p>'.
+
+'<p class="field"><label for="sidebar_line_c">'.__('Sidebar lines color:').' '.
+form::field('sidebar_line_c',7,7,$blowup_user['sidebar_line_c'],'colorpicker').'</label></p>'.
+
+'<p class="field"><label for="sidebar_link_c">'.__('Sidebar links color:').' '.
+form::field('sidebar_link_c',7,7,$blowup_user['sidebar_link_c'],'colorpicker').'</label></p>'.
+
+'<p class="field"><label for="sidebar_link_v_c">'.__('Sidebar visited links color:').' '.
+form::field('sidebar_link_v_c',7,7,$blowup_user['sidebar_link_v_c'],'colorpicker').'</label></p>'.
+
+'<p class="field"><label for="sidebar_link_f_c">'.__('Sidebar focus links color:').' '.
+form::field('sidebar_link_f_c',7,7,$blowup_user['sidebar_link_f_c'],'colorpicker').'</label></p>'.
 '</fieldset>'.
 
-'<h4 class="border-top">'.__('Entries').'</h4>'.
-'<p class="field"><label for="date_title_f">'.__('Date title font:').'</label> '.
-form::combo('date_title_f',blowupConfig::fontsList(),$blowup_user['date_title_f']).'</p>'.
-
-'<p class="field"><label for="date_title_s">'.__('Date title font size:').'</label> '.
-form::field('date_title_s',7,7,$blowup_user['date_title_s']).'</p>'.
-
-'<p class="field"><label for="date_title_c">'.__('Date title color:').'</label> '.
-form::field('date_title_c',7,7,$blowup_user['date_title_c'],'colorpicker').'</p>'.
-
-'<p class="field"><label for="post_title_f">'.__('Entry title font:').'</label> '.
-form::combo('post_title_f',blowupConfig::fontsList(),$blowup_user['post_title_f']).'</p>'.
-
-'<p class="field"><label for="post_title_s">'.__('Entry title font size:').'</label> '.
-form::field('post_title_s',7,7,$blowup_user['post_title_s']).'</p>'.
-
-'<p class="field"><label for="post_title_c">'.__('Entry title color:').'</label> '.
-form::field('post_title_c',7,7,$blowup_user['post_title_c'],'colorpicker').'</p>';
+'<fieldset><legend>'.__('Entries').'</legend>'.
+'<p class="field"><label for="date_title_f">'.__('Date title font:').' '.
+form::combo('date_title_f',blowupConfig::fontsList(),$blowup_user['date_title_f']).'</label></p>'.
+
+'<p class="field"><label for="date_title_s">'.__('Date title font size:').' '.
+form::field('date_title_s',7,7,$blowup_user['date_title_s']).'</label></p>'.
+
+'<p class="field"><label for="date_title_c">'.__('Date title color:').' '.
+form::field('date_title_c',7,7,$blowup_user['date_title_c'],'colorpicker').'</label></p>'.
+
+'<p class="field"><label for="post_title_f">'.__('Entry title font:').' '.
+form::combo('post_title_f',blowupConfig::fontsList(),$blowup_user['post_title_f']).'</label></p>'.
+
+'<p class="field"><label for="post_title_s">'.__('Entry title font size:').' '.
+form::field('post_title_s',7,7,$blowup_user['post_title_s']).'</label></p>'.
+
+'<p class="field"><label for="post_title_c">'.__('Entry title color:').' '.
+form::field('post_title_c',7,7,$blowup_user['post_title_c'],'colorpicker').'</label></p>';
 
 if ($can_write_images) {
 	echo
-	'<p class="field"><label for="post_comment_bg_c">'.__('Comment background color:').'</label> '.
-	form::field('post_comment_bg_c',7,7,$blowup_user['post_comment_bg_c'],'colorpicker').'</p>';
-}
-
-echo
-'<p class="field"><label for="post_comment_c">'.__('Comment text color:').'</label> '.
-form::field('post_comment_c',7,7,$blowup_user['post_comment_c'],'colorpicker').'</p>';
+	'<p class="field"><label for="post_comment_bg_c">'.__('Comment background color:').' '.
+	form::field('post_comment_bg_c',7,7,$blowup_user['post_comment_bg_c'],'colorpicker').'</label></p>';
+}
+
+echo
+'<p class="field"><label for="post_comment_c">'.__('Comment text color:').' '.
+form::field('post_comment_c',7,7,$blowup_user['post_comment_c'],'colorpicker').'</label></p>';
 
 if ($can_write_images) {
 	echo
-	'<p class="field"><label for="post_commentmy_bg_c">'.__('My comment background color:').'</label> '.
-	form::field('post_commentmy_bg_c',7,7,$blowup_user['post_commentmy_bg_c'],'colorpicker').'</p>';
-}
-
-echo
-'<p class="field"><label for="post_commentmy_c">'.__('My comment text color:').'</label> '.
-form::field('post_commentmy_c',7,7,$blowup_user['post_commentmy_c'],'colorpicker').'</p>'.
-
-'<h4 class="border-top">'.__('Footer').'</h4>'.
-'<p class="field"><label for="footer_f">'.__('Footer font:').'</label> '.
-form::combo('footer_f',blowupConfig::fontsList(),$blowup_user['footer_f']).'</p>'.
-
-'<p class="field"><label for="footer_s">'.__('Footer font size:').'</label> '.
-form::field('footer_s',7,7,$blowup_user['footer_s']).'</p>'.
-
-'<p class="field"><label for="footer_c">'.__('Footer color:').'</label> '.
-form::field('footer_c',7,7,$blowup_user['footer_c'],'colorpicker').'</p>'.
-
-'<p class="field"><label for="footer_l_c">'.__('Footer links color:').'</label> '.
-form::field('footer_l_c',7,7,$blowup_user['footer_l_c'],'colorpicker').'</p>'.
-
-'<p class="field"><label for="footer_bg_c">'.__('Footer background color:').'</label> '.
-form::field('footer_bg_c',7,7,$blowup_user['footer_bg_c'],'colorpicker').'</p>';
-
-echo
-'<h4 class="border-top">'.__('Additional CSS').'</h4>'.
-'<p><label for="extra_css">'.__('Any additional CSS styles (must be written using the CSS syntax):').'</label> '.
+	'<p class="field"><label for="post_commentmy_bg_c">'.__('My comment background color:').' '.
+	form::field('post_commentmy_bg_c',7,7,$blowup_user['post_commentmy_bg_c'],'colorpicker').'</label></p>';
+}
+
+echo
+'<p class="field"><label for="post_commentmy_c">'.__('My comment text color:').' '.
+form::field('post_commentmy_c',7,7,$blowup_user['post_commentmy_c'],'colorpicker').'</label></p>'.
+'</fieldset>'.
+
+'<fieldset><legend>'.__('Footer').'</legend>'.
+'<p class="field"><label for="footer_f">'.__('Footer font:').' '.
+form::combo('footer_f',blowupConfig::fontsList(),$blowup_user['footer_f']).'</label></p>'.
+
+'<p class="field"><label for="footer_s">'.__('Footer font size:').' '.
+form::field('footer_s',7,7,$blowup_user['footer_s']).'</label></p>'.
+
+'<p class="field"><label for="footer_c">'.__('Footer color:').' '.
+form::field('footer_c',7,7,$blowup_user['footer_c'],'colorpicker').'</label></p>'.
+
+'<p class="field"><label for="footer_l_c">'.__('Footer links color:').' '.
+form::field('footer_l_c',7,7,$blowup_user['footer_l_c'],'colorpicker').'</label></p>'.
+
+'<p class="field"><label for="footer_bg_c">'.__('Footer background color:').' '.
+form::field('footer_bg_c',7,7,$blowup_user['footer_bg_c'],'colorpicker').'</label></p>'.
+'</fieldset>';
+
+echo
+'<fieldset><legend>'.__('Additional CSS').'</legend>'.
+'<p><label for="extra_css">'.__('Any additional CSS styles (must be written using the CSS syntax):').' '.
 form::textarea('extra_css',72,5,html::escapeHTML($blowup_user['extra_css']),'maximal','',false,'title="'.__('Additional CSS').'"').
-'</p>'.
-'</div>';
+'</label></p>'.
+'</fieldset>';
 
 
@@ -456,11 +450,8 @@
 }
 echo
-'<div class="fieldset">'.
-'<h3 id="bu_export">'.__('Configuration import / export').'</h3>'.
-'<div id="bu_export_content">'.
+'<h3 id="bu_export">'.__('Configuration import / export').'</h3><fieldset>'.
 '<p>'.__('You can share your configuration using the following code. To apply a configuration, paste the code, click on "Apply code" and save.').'</p>'.
 '<p>'.form::textarea('export_code',72,5,implode('; ',$tmp_array),'maximal','',false,'title="'.__('Copy this code:').'"').'</p>'.
-'</div>'.
-'</div>';
+'</fieldset>';
 
 echo
Index: plugins/blowupConfig/lib/class.blowup.config.php
===================================================================
--- plugins/blowupConfig/lib/class.blowup.config.php	(revision 1436)
+++ plugins/blowupConfig/lib/class.blowup.config.php	(revision 1179)
@@ -141,246 +141,4 @@
 	}
 
-	public static function cssPath()
-	{
-		global $core;
-		return path::real($core->blog->public_path).'/blowup-css';
-	}
-
-	public static function cssURL()
-	{
-		global $core;
-		return $core->blog->settings->system->public_url.'/blowup-css';
-	}
-
-	public static function canWriteCss($create=false)
-	{
-		global $core;
-
-		$public = path::real($core->blog->public_path);
-		$css = self::cssPath();
-
-		if (!is_dir($public)) {
-			$core->error->add(__('The \'public\' directory does not exist.'));
-			return false;
-		}
-
-		if (!is_dir($css)) {
-			if (!is_writable($public)) {
-				$core->error->add(sprintf(__('The \'%s\' directory cannot be modified.'),'public'));
-				return false;
-			}
-			if ($create) {
-				files::makeDir($css);
-			}
-			return true;
-		}
-
-		if (!is_writable($css)) {
-			$core->error->add(sprintf(__('The \'%s\' directory cannot be modified.'),'public/blowup-css'));
-			return false;
-		}
-
-		return true;
-	}
-
-	public static function createCss($s)
-	{
-		global $core;
-		
-		if ($s === null) {
-			return;
-		}
-
-		$css = array();
-
-		/* Sidebar position
-		---------------------------------------------- */
-		if ($s['sidebar_position'] == 'left') {
-			$css['#wrapper']['background-position'] = '-300px 0';
-			$css['#main']['float'] = 'right';
-			$css['#sidebar']['float'] = 'left';
-		}
-
-		/* Properties
-		---------------------------------------------- */
-		self::prop($css,'body','background-color',$s['body_bg_c']);
-
-		self::prop($css,'body','color',$s['body_txt_c']);
-		self::prop($css,'.post-tags li a:link, .post-tags li a:visited, .post-info-co a:link, .post-info-co a:visited','color',$s['body_txt_c']);
-		self::prop($css,'#page','font-size',$s['body_txt_s']);
-		self::prop($css,'body','font-family',self::fontDef($s['body_txt_f']));
-
-		self::prop($css,'.post-content, .post-excerpt, #comments dd, #pings dd, dd.comment-preview','line-height',$s['body_line_height']);
-
-		if (!$s['blog_title_hide'])
-		{
-			self::prop($css,'#top h1 a','color',$s['blog_title_c']);
-			self::prop($css,'#top h1','font-size',$s['blog_title_s']);
-			self::prop($css,'#top h1','font-family',self::fontDef($s['blog_title_f']));
-
-			if ($s['blog_title_a'] == 'right' || $s['blog_title_a'] == 'left') {
-				$css['#top h1'][$s['blog_title_a']] = '0px';
-				$css['#top h1']['width'] = 'auto';
-			}
-
-			if ($s['blog_title_p'])
-			{
-				$_p = explode(':',$s['blog_title_p']);
-				$css['#top h1']['top'] = $_p[1].'px';
-				if ($s['blog_title_a'] != 'center') {
-					$_a = $s['blog_title_a'] == 'right' ? 'right' : 'left';
-					$css['#top h1'][$_a] = $_p[0].'px';
-				}
-			}
-		}
-		else
-		{
-			self::prop($css,'#top h1 span','text-indent','-5000px');
-			self::prop($css,'#top h1','top','0px');
-			$css['#top h1 a'] = array(
-				'display' => 'block',
-				'height' => $s['top_height'] ? ($s['top_height']-10).'px' : '120px',
-				'width' => '800px'
-			);
-		}
-		self::prop($css,'#top','height',$s['top_height']);
-
-		self::prop($css,'.day-date','color',$s['date_title_c']);
-		self::prop($css,'.day-date','font-family',self::fontDef($s['date_title_f']));
-		self::prop($css,'.day-date','font-size',$s['date_title_s']);
-
-		self::prop($css,'a','color',$s['body_link_c']);
-		self::prop($css,'a:visited','color',$s['body_link_v_c']);
-		self::prop($css,'a:hover, a:focus, a:active','color',$s['body_link_f_c']);
-
-		self::prop($css,'#comment-form input, #comment-form textarea','color',$s['body_link_c']);
-		self::prop($css,'#comment-form input.preview','color',$s['body_link_c']);
-		self::prop($css,'#comment-form input.preview:hover','background',$s['body_link_f_c']);
-		self::prop($css,'#comment-form input.preview:hover','border-color',$s['body_link_f_c']);
-		self::prop($css,'#comment-form input.submit','color',$s['body_link_c']);
-		self::prop($css,'#comment-form input.submit:hover','background',$s['body_link_f_c']);
-		self::prop($css,'#comment-form input.submit:hover','border-color',$s['body_link_f_c']);
-
-		self::prop($css,'#sidebar','font-family',self::fontDef($s['sidebar_text_f']));
-		self::prop($css,'#sidebar','font-size',$s['sidebar_text_s']);
-		self::prop($css,'#sidebar','color',$s['sidebar_text_c']);
-
-		self::prop($css,'#sidebar h2','font-family',self::fontDef($s['sidebar_title_f']));
-		self::prop($css,'#sidebar h2','font-size',$s['sidebar_title_s']);
-		self::prop($css,'#sidebar h2','color',$s['sidebar_title_c']);
-
-		self::prop($css,'#sidebar h3','font-family',self::fontDef($s['sidebar_title2_f']));
-		self::prop($css,'#sidebar h3','font-size',$s['sidebar_title2_s']);
-		self::prop($css,'#sidebar h3','color',$s['sidebar_title2_c']);
-
-		self::prop($css,'#sidebar ul','border-top-color',$s['sidebar_line_c']);
-		self::prop($css,'#sidebar li','border-bottom-color',$s['sidebar_line_c']);
-		self::prop($css,'#topnav ul','border-bottom-color',$s['sidebar_line_c']);
-
-		self::prop($css,'#sidebar li a','color',$s['sidebar_link_c']);
-		self::prop($css,'#sidebar li a:visited','color',$s['sidebar_link_v_c']);
-		self::prop($css,'#sidebar li a:hover, #sidebar li a:focus, #sidebar li a:active','color',$s['sidebar_link_f_c']);
-		self::prop($css,'#search input','color',$s['sidebar_link_c']);
-		self::prop($css,'#search .submit','color',$s['sidebar_link_c']);
-		self::prop($css,'#search .submit:hover','background',$s['sidebar_link_f_c']);
-		self::prop($css,'#search .submit:hover','border-color',$s['sidebar_link_f_c']);
-
-		self::prop($css,'.post-title','color',$s['post_title_c']);
-		self::prop($css,'.post-title a, .post-title a:visited','color',$s['post_title_c']);
-		self::prop($css,'.post-title','font-family',self::fontDef($s['post_title_f']));
-		self::prop($css,'.post-title','font-size',$s['post_title_s']);
-
-		self::prop($css,'#comments dd','background-color',$s['post_comment_bg_c']);
-		self::prop($css,'#comments dd','color',$s['post_comment_c']);
-		self::prop($css,'#comments dd.me','background-color',$s['post_commentmy_bg_c']);
-		self::prop($css,'#comments dd.me','color',$s['post_commentmy_c']);
-
-		self::prop($css,'#prelude, #prelude a','color',$s['prelude_c']);
-
-		self::prop($css,'#footer p','background-color',$s['footer_bg_c']);
-		self::prop($css,'#footer p','color',$s['footer_c']);
-		self::prop($css,'#footer p','font-size',$s['footer_s']);
-		self::prop($css,'#footer p','font-family',self::fontDef($s['footer_f']));
-		self::prop($css,'#footer p a','color',$s['footer_l_c']);
-
-		/* Images
-		------------------------------------------------------ */
-		self::backgroundImg($css,'body',$s['body_bg_c'],'body-bg.png');
-		self::backgroundImg($css,'body',$s['body_bg_g'] != 'light','body-bg.png');
-		self::backgroundImg($css,'body',$s['prelude_c'],'body-bg.png');
-		self::backgroundImg($css,'#top',$s['body_bg_c'],'page-t.png');
-		self::backgroundImg($css,'#top',$s['body_bg_g'] != 'light','page-t.png');
-		self::backgroundImg($css,'#top',$s['uploaded'] || $s['top_image'],'page-t.png');
-		self::backgroundImg($css,'#footer',$s['body_bg_c'],'page-b.png');
-		self::backgroundImg($css,'#comments dt',$s['post_comment_bg_c'],'comment-t.png');
-		self::backgroundImg($css,'#comments dd',$s['post_comment_bg_c'],'comment-b.png');
-		self::backgroundImg($css,'#comments dt.me',$s['post_commentmy_bg_c'],'commentmy-t.png');
-		self::backgroundImg($css,'#comments dd.me',$s['post_commentmy_bg_c'],'commentmy-b.png');
-
-		$res = '';
-		foreach ($css as $selector => $values) {
-			$res .= $selector." {\n";
-			foreach ($values as $k => $v) {
-				$res .= $k.':'.$v.";\n";
-			}
-			$res .= "}\n";
-		}
-
-		$res .= $s['extra_css'];
-
-		if (!self::canWriteCss(true)) {
-			throw new Exception(__('Unable to create css file.'));
-		}
-
-		# erase old css file
-		self::dropCss($core->blog->settings->system->theme);
-
-		# create new css file into public blowup-css subdirectory
-		self::writeCss($core->blog->settings->system->theme, $res);
-
-		return $res;
-	}
-
-	protected static function prop(&$css,$selector,$prop,$value)
-	{
-		if ($value) {
-			$css[$selector][$prop] = $value;
-		}
-	}
-
-	protected static function backgroundImg(&$css,$selector,$value,$image)
-	{
-		$file = self::imagesPath().'/'.$image;
-		if ($value && file_exists($file)){
-			$css[$selector]['background-image'] = 'url('.self::imagesURL().'/'.$image.')';
-		}
-	}
-
-	private static function writeCss($theme,$css)
-	{
-		file_put_contents(self::cssPath().'/'.$theme.'.css', $css);
-	}
-	
-	public static function dropCss($theme)
-	{
-		$file = path::real(self::cssPath().'/'.$theme.'.css');
-		if (is_writable(dirname($file))) {
-			@unlink($file);
-		}
-	}
-
-	public static function publicCssUrlHelper()
-	{
-		$theme = $GLOBALS['core']->blog->settings->system->theme;
-		$url = blowupConfig::cssURL();
-		$path = blowupConfig::cssPath();
-
-		if (file_exists($path.'/'.$theme.'.css')) {
-			return $url.'/'.$theme.'.css';
-		}
-
-		return null;
-	}
-
 	public static function imagesPath()
 	{
Index: plugins/daInstaller/inc/lib.da.installer.ui.php
===================================================================
--- plugins/daInstaller/inc/lib.da.installer.ui.php	(revision 1416)
+++ plugins/daInstaller/inc/lib.da.installer.ui.php	(revision 1046)
@@ -64,5 +64,5 @@
 				'</table>';
 			
-			echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 			$blocks = explode('%s',$html_block);
 			echo $blocks[0];
@@ -81,5 +81,5 @@
 			}
 			echo $blocks[1];
-			echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 		}
 	}
Index: plugins/daInstaller/index.php
===================================================================
--- plugins/daInstaller/index.php	(revision 1499)
+++ plugins/daInstaller/index.php	(revision 1237)
@@ -255,14 +255,6 @@
 '</head>'.
 '<body>'.
-
-dcPage::breadcrumb(
-	array(
-		__('System') => '',
-		'<span class="page-title">'.__('DotAddict.org Installer').'</span>' => ''
-	)).
-
-infoMessages();
-
-echo
+infoMessages().
+'<h2 class="page-title">'.__('DotAddict.org Installer').'</h2>'.
 '<p>'.__('Install and update your extensions live from DotAddict.org').'</p>';
 
@@ -298,17 +290,20 @@
 '<!-- Search -->'.
 '<div class="multi-part" id="search" title="'.__('Search').'">'.
-	'<form method="get" action="'.$p_url.'" class="fieldset">'.
-	'<h3>'.__('Search').'</h3>'.
+	'<fieldset><legend>'.__('Search options').
+	'</legend>'.
+	'<form method="get" action="'.$p_url.'">'.
 	'<p>'.form::hidden('p','daInstaller').
-	'<label for="q" class="classic">'.__('Query:').'&nbsp;</label> '.
-	form::field('q',30,255,html::escapeHTML($q)).'</p>'.
-	'<p><label for="mode" class="classic">'.
+	'<label for="q" class="classic">'.__('Query:').'&nbsp; '.
+	form::field('q',30,255,html::escapeHTML($q)).
+	'</label> '.
+	'<label for="mode" class="classic">'.
 	form::radio(array('mode','mode'),'plugins',$mode == 'plugins').
 	' '.__('Plugins').'&nbsp;</label> '.
 	'<label for="mode2" class="classic">'.
-	form::radio(array('mode','mode2'),'themes',$mode == 'themes').
-	' '.__('Themes').'&nbsp;</label></p>'.
-	'<p><input type="submit" value="'.__('Search').'" /></p>'.
-	'</form>';
+	form::radio(array('mode','mode2'),'themes',$mode == 'themes')
+	.' '.__('Themes').'&nbsp;</label> '.
+	'<input type="submit" value="'.__('Search').'" /></p>'.
+	'</form>'.
+	'</fieldset>';
 if (!empty($q)) {
 	echo '<p><strong>'.sprintf(__('%u %s found'),$s_m_nb,__($mode)).'</strong></p>';
Index: plugins/importExport/inc/class.dc.export.flat.php
===================================================================
--- plugins/importExport/inc/class.dc.export.flat.php	(revision 1499)
+++ plugins/importExport/inc/class.dc.export.flat.php	(revision 840)
@@ -191,6 +191,6 @@
 	{
 		echo
-		'<form action="'.$this->getURL(true).'" method="post" class="fieldset">'.
-		'<h3>'.__('Single blog').'</h3>'.
+		'<form action="'.$this->getURL(true).'" method="post">'.
+		'<fieldset><legend>'.__('Single blog').'</legend>'.
 		'<p>'.sprintf(__('This will create an export of your current blog: %s'),html::escapeHTML($this->core->blog->name)).'</p>'.
 		
@@ -211,4 +211,5 @@
 		$this->core->formNonce().'</p>'.
 		
+		'</fieldset>'.
 		'</form>';
 		
@@ -216,6 +217,6 @@
 		{
 			echo
-			'<form action="'.$this->getURL(true).'" method="post" class="fieldset">'.
-			'<h3>'.__('Multiple blogs').'</h3>'.
+			'<form action="'.$this->getURL(true).'" method="post">'.
+			'<fieldset><legend>'.__('Multiple blogs').'</legend>'.
 			'<p>'.__('This will create an export of all the content of your database.').'</p>'.
 			
@@ -233,4 +234,5 @@
 			$this->core->formNonce().'</p>'.
 			
+			'</fieldset>'.
 			'</form>';
 		}
Index: plugins/importExport/inc/class.dc.import.dc1.php
===================================================================
--- plugins/importExport/inc/class.dc.import.dc1.php	(revision 1454)
+++ plugins/importExport/inc/class.dc.import.dc1.php	(revision 840)
@@ -150,18 +150,18 @@
 				
 				printf($this->imForm(1,__('General information'),__('Import my blog now')),
-				'<p class="form-note info">'.__('We first need some information about your old Dotclear 1.2 installation.').'</p>'.
-				'<p><label for="db_host">'.__('Database Host Name:').'</label> '.
-				form::field('db_host',30,255,html::escapeHTML($this->vars['db_host'])).'</p>'.
-				'<p><label for="db_name">'.__('Database Name:',html::escapeHTML($this->vars['db_name'])).'</label> '.
-				form::field('db_name',30,255,html::escapeHTML($this->vars['db_name'])).'</p>'.
-				'<p><label for="db_user">'.__('Database User Name:').'</label> '.
-				form::field('db_user',30,255,html::escapeHTML($this->vars['db_user'])).'</p>'.
-				'<p><label for="db_pwd">'.__('Database Password:').'</label> '.
-				form::password('db_pwd',30,255).'</p>'.
-				'<p><label for="db_prefix">'.__('Database Tables Prefix:').'</label> '.
-				form::field('db_prefix',30,255,html::escapeHTML($this->vars['db_prefix'])).'</p>'.
+				'<h3>'.__('We first need some information about your old Dotclear 1.2 installation.').'</h3>'.
+				'<p><label for="db_host">'.__('Database Host Name:').' '.
+				form::field('db_host',30,255,html::escapeHTML($this->vars['db_host'])).'</label></p>'.
+				'<p><label for="db_name">'.__('Database Name:',html::escapeHTML($this->vars['db_name'])).' '.
+				form::field('db_name',30,255,html::escapeHTML($this->vars['db_name'])).'</label></p>'.
+				'<p><label for="db_user">'.__('Database User Name:').' '.
+				form::field('db_user',30,255,html::escapeHTML($this->vars['db_user'])).'</label></p>'.
+				'<p><label for="db_pwd">'.__('Database Password:').' '.
+				form::password('db_pwd',30,255).'</label></p>'.
+				'<p><label for="db_prefix">'.__('Database Tables Prefix:').' '.
+				form::field('db_prefix',30,255,html::escapeHTML($this->vars['db_prefix'])).'</label></p>'.
 				'<h3>'.__('Entries import options').'</h3>'.
-				'<p><label for="post_limit">'.__('Number of entries to import at once:').'</label> '.
-				form::field('post_limit',3,3,html::escapeHTML($this->vars['post_limit'])).'</p>'
+				'<p><label for="post_limit">'.__('Number of entries to import at once:').' '.
+				form::field('post_limit',3,3,html::escapeHTML($this->vars['post_limit'])).'</label></p>'
 				);
 				break;
Index: plugins/importExport/inc/class.dc.import.flat.php
===================================================================
--- plugins/importExport/inc/class.dc.import.flat.php	(revision 1499)
+++ plugins/importExport/inc/class.dc.import.flat.php	(revision 939)
@@ -180,18 +180,18 @@
 		
 		echo
-		'<form action="'.$this->getURL(true).'" method="post" enctype="multipart/form-data" class="fieldset">'.
-		'<h3>'.__('Single blog').'</h3>'.
-		'<p>'.sprintf(__('This will import a single blog backup as new content in the current blog: <strong>%s</strong>.'),html::escapeHTML($this->core->blog->name)).'</p>'.
-		
-		'<p><label for="up_single_file" class="classic">'.__('Upload a backup file').
-		' ('.sprintf(__('Maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')'.' </label>'.
-		' <input type="file" id="up_single_file" name="up_single_file" size="20" />'.
+		'<form action="'.$this->getURL(true).'" method="post" enctype="multipart/form-data">'.
+		'<fieldset><legend>'.__('Single blog').'</legend>'.
+		'<p>'.sprintf(__('This will import a single blog backup as new content in the current blog: %s.'),html::escapeHTML($this->core->blog->name)).'</p>'.
+		
+		'<p><label for="up_single_file">'.__('Upload a backup file').
+		' ('.sprintf(__('Maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')'.'</label>'.
+		'<input type="file" id="up_single_file" name="up_single_file" size="20" />'.
 		'</p>';
 		
 		if ($has_files) {
 			echo 
-			'<p><label for="public_single_file" class="classic">'.__('or pick up a local file in your public directory').'</label> '.
+			'<p><label for="public_single_file">'.__('or pick up a local file in your public directory').' '.
 			form::combo('public_single_file',$public_files).
-			'</p>';
+			'</label></p>';
 		}
 		
@@ -203,4 +203,5 @@
 		'<input type="submit" value="'.__('Import').'" /></p>'.
 		
+		'</fieldset>'.
 		'</form>';
 		
@@ -208,10 +209,10 @@
 		{
 			echo
-			'<form action="'.$this->getURL(true).'" method="post" enctype="multipart/form-data" id="formfull" class="fieldset">'.
-			'<h3>'.__('Multiple blogs').'</h3>'.
-			'<p class="warning">'.__('This will reset all the content of your database, except users.').'</p>'.
-			
-			'<p><label for="up_full_file" class="classic">'.__('Upload a backup file').' '.
-			' ('.sprintf(__('Maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')'.' </label>'.
+			'<form action="'.$this->getURL(true).'" method="post" enctype="multipart/form-data" id="formfull">'.
+			'<fieldset><legend>'.__('Multiple blogs').'</legend>'.
+			'<p>'.__('This will reset all the content of your database, except users.').'</p>'.
+			
+			'<p><label for="up_full_file">'.__('Upload a backup file').
+			' ('.sprintf(__('Maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')'.'</label>'.
 			'<input type="file" id="up_full_file" name="up_full_file" size="20" />'.
 			'</p>';
@@ -219,5 +220,5 @@
 			if ($has_files) {
 				echo 
-				'<p><label for="public_full_file" class="classic">'.__('or pick up a local file in your public directory').' </label>'.
+				'<p><label for="public_full_file">'.__('or pick up a local file in your public directory').'</label>'.
 				form::combo('public_full_file',$public_files).
 				'</p>';
@@ -234,4 +235,5 @@
 			'<input type="submit" value="'.__('Import').'" /></p>'.
 			
+			'</fieldset>'.
 			'</form>';
 		}
Index: plugins/importExport/inc/class.dc.import.wp.php
===================================================================
--- plugins/importExport/inc/class.dc.import.wp.php	(revision 1454)
+++ plugins/importExport/inc/class.dc.import.wp.php	(revision 1185)
@@ -182,15 +182,14 @@
 				printf($this->imForm(1,__('General information'),__('Import my blog now')),
 				'<h3>'.__('We first need some information about your old WordPress installation.').'</h3>'.
-				'<p><label for="db_host">'.__('Database Host Name:').'</label> '.
-				form::field('db_host',30,255,html::escapeHTML($this->vars['db_host'])).'</p>'.
-				'<p><label for="db_name">'.__('Database Name:',html::escapeHTML($this->vars['db_name'])).'</label> '.
-				form::field('db_name',30,255,html::escapeHTML($this->vars['db_name'])).'</p>'.
-				'<p><label for="db_user">'.__('Database User Name:').'</label> '.
-				form::field('db_user',30,255,html::escapeHTML($this->vars['db_user'])).'</p>'.
-				'<p><label for="db_pwd">'.__('Database Password:').'</label> '.
-				form::password('db_pwd',30,255).'</p>'.
-				'<p><label for="db_prefix">'.__('Database Tables Prefix:').'</label> '.
-				form::field('db_prefix',30,255,html::escapeHTML($this->vars['db_prefix'])).'</p>'.
-
+				'<p><label for="db_host">'.__('Database Host Name:').' '.
+				form::field('db_host',30,255,html::escapeHTML($this->vars['db_host'])).'</label></p>'.
+				'<p><label for="db_name">'.__('Database Name:',html::escapeHTML($this->vars['db_name'])).' '.
+				form::field('db_name',30,255,html::escapeHTML($this->vars['db_name'])).'</label></p>'.
+				'<p><label for="db_user">'.__('Database User Name:').' '.
+				form::field('db_user',30,255,html::escapeHTML($this->vars['db_user'])).'</label></p>'.
+				'<p><label for="db_pwd">'.__('Database Password:').' '.
+				form::password('db_pwd',30,255).'</label></p>'.
+				'<p><label for="db_prefix">'.__('Database Tables Prefix:').' '.
+				form::field('db_prefix',30,255,html::escapeHTML($this->vars['db_prefix'])).'</label></p>'.
 				'<h3>'.__('Entries import options').'</h3>'.
 				'<p>'.__('WordPress and Dotclear\'s handling of categories are quite different. '.
@@ -203,5 +202,4 @@
 				'category, you can just ignore it while importing your blog, as Dotclear allows you to '.
 				'actually keep your posts uncategorized.').'</p>'.
-
 				'<p><label for="ignore_first_cat" class="classic">'.form::checkbox('ignore_first_cat',1,$this->vars['ignore_first_cat']).' '.
 				__('Ignore the first category:').'</label></p>'.
@@ -210,15 +208,13 @@
 				'<p><label for="cat_as_tags" class="classic">'.form::checkbox('cat_as_tags',1,$this->vars['cat_as_tags']).' '.
 				__('Import all categories as tags:').'</label></p>'.
-				'<p><label for="cat_tags_prefix">'.__('Prefix such tags with:').'</label> '.
-				form::field('cat_tags_prefix',10,20,html::escapeHTML($this->vars['cat_tags_prefix'])).'</p>'.
-				'<p><label for="post_limit">'.__('Number of entries to import at once:').'</label> '.
-				form::field('post_limit',3,3,html::escapeHTML($this->vars['post_limit'])).'</p>'.
+				'<p><label for="cat_tags_prefix">'.__('Prefix such tags with:').' '.
+				form::field('cat_tags_prefix',10,20,html::escapeHTML($this->vars['cat_tags_prefix'])).'</label></p>'.
+				'<p><label for="post_limit">'.__('Number of entries to import at once:').' '.
+				form::field('post_limit',3,3,html::escapeHTML($this->vars['post_limit'])).'</label></p>'.
 				
 				'<h3>'.__('Content filters').'</h3>'.
 				'<p>'.__('You may want to process your post and/or comment content with the following filters.').'</p>'.
-				'<p><label for="post_formater">'.__('Post content formatter:').'</label> '.
-				form::combo('post_formater',$this->formaters,$this->vars['post_formater']).'</p>'.
-				'<p><label for="comment_formater">'.__('Comment content formatter:').'</label> '
-				.form::combo('comment_formater',$this->formaters,$this->vars['comment_formater']).'</label></p>'
+				'<p><label for="post_formater">'.__('Post content formatter:').' '.form::combo('post_formater',$this->formaters,$this->vars['post_formater']).'</label></p>'.
+				'<p><label for="comment_formater">'.__('Comment content formatter:').' '.form::combo('comment_formater',$this->formaters,$this->vars['comment_formater']).'</label></p>'
 				);
 				break;
Index: plugins/importExport/index.php
===================================================================
--- plugins/importExport/index.php	(revision 1358)
+++ plugins/importExport/index.php	(revision 840)
@@ -74,12 +74,7 @@
 
 if ($type && $module !== null) {
-	echo dcPage::breadcrumb(
-		array(
-			__('Plugins') => '',
-			$title => $p_url,
-			'<span class="page-title">'.html::escapeHTML($module->name).'</span>' => ''
-		));
-
 	echo
+	'<h2><a href="'.$p_url.'">'.$title.'</a>'.
+	' &rsaquo; <span class="page-title">'.html::escapeHTML($module->name).'</span></h2>'.
 	'<div id="ie-gui">';
 	
@@ -89,11 +84,6 @@
 }
 else {
-	echo dcPage::breadcrumb(
-		array(
-			__('Plugins') => '',
-			'<span class="page-title">'.$title.'</span>' => ''
-		));
-
 	echo
+	'<h2 class="page-title">'.$title.'</h2>'.
 	'<h3>'.__('Import').'</h3>'.listImportExportModules($core,$modules['import']).
 	'<h3>'.__('Export').'</h3>'.listImportExportModules($core,$modules['export']);
Index: plugins/importExport/locales/fr/main.po
===================================================================
--- plugins/importExport/locales/fr/main.po	(revision 1499)
+++ plugins/importExport/locales/fr/main.po	(revision 841)
@@ -223,5 +223,5 @@
 
 #: inc/class.dc.import.flat.php:184
-msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
+msgid "This will import a single blog backup as new content in the current blog: %s."
 msgstr "Ceci va charger une sauvegarde de blog comme un nouveau contenu dans le blog en cours : %s."
 
Index: plugins/maintenance/index.php
===================================================================
--- plugins/maintenance/index.php	(revision 1358)
+++ plugins/maintenance/index.php	(revision 1179)
@@ -69,11 +69,5 @@
 
 <body>
-<?php
-	echo dcPage::breadcrumb(
-		array(
-			__('Plugins') => '',
-			'<span class="page-title">'.__('Maintenance').'</span>' => ''
-		));
-?>
+<h2 class="page-title"><?php echo __('Maintenance'); ?></h2>
 
 <?php
Index: plugins/maintenance/locales/fr/help/maintenance.html
===================================================================
--- plugins/maintenance/locales/fr/help/maintenance.html	(revision 1280)
+++ plugins/maintenance/locales/fr/help/maintenance.html	(revision 1272)
@@ -10,8 +10,8 @@
 <dl>
   <dt>Optimiser l'espace de la base de données</dt>
-  <dd>Au fur at à mesure des suppressions ou modifications dans vos billets, les tables de la 
+  <dd>Au fur et à mesure des suppressions ou modifications dans vos billets, les tables de la 
   base de données se fragmentent. L'opération d'optimisation permet de compacter celles-ci.<br />
   Cette opération n'a aucun impact sur l'intégrité de vos données.<br />
-  Il est fortement conseillé d'optimiser la base de données avant tout export de blog</dd>
+  Il est fortement conseillé d'optimiser la base de données avant tout export de blog.</dd>
   
   <dt>Compteurs</dt>
Index: plugins/pages/_admin.php
===================================================================
--- plugins/pages/_admin.php	(revision 1503)
+++ plugins/pages/_admin.php	(revision 1179)
@@ -15,6 +15,4 @@
 $core->addBehavior('adminDashboardFavs','pages_dashboard_favs');
 $core->addBehavior('adminDashboardFavsIcon','pages_dashboard_favs_icon');
-$core->addBehavior('adminUsersActionsHeaders','pages_users_actions_headers');
-
 function pages_dashboard($core,$icons)
 {
@@ -43,8 +41,4 @@
 	}
 }
-function pages_users_actions_headers()
-{
-	return dcPage::jsLoad('index.php?pf=pages/_users_actions.js');
-}
 
 $_menu['Blog']->addItem(__('Pages'),'plugin.php?p=pages','index.php?pf=pages/icon.png',
Index: plugins/pages/_install.php
===================================================================
--- plugins/pages/_install.php	(revision 1445)
+++ plugins/pages/_install.php	(revision 1494)
@@ -20,6 +20,4 @@
 /* Create first page
 -------------------------------------------------------- */
-$core->setBlog('default');
-
 $core->blog->settings->addNamespace('pages');
 
Index: lugins/pages/_users_actions.js
===================================================================
--- plugins/pages/_users_actions.js	(revision 1503)
+++ 	(revision )
@@ -1,47 +1,0 @@
-jQuery.fn.updatePagesPermissionsForm = function() {
-	return this.each(function() {
-		
-		var perms = {};
-		var re = /^perm\[(.+?)\]\[(.+?)\]$/;
-		var e,prop;
-		
-		// Building a nice object of form elements
-		for (var i=0; i<this.elements.length; i++) {
-			e = this.elements[i];
-			
-			if (e.name == undefined) {
-				continue;
-			}
-			var prop;
-			prop = e.name.match(re);
-			if (!prop) {
-				continue;
-			}
-			if (perms[prop[1]] == undefined) {
-				perms[prop[1]] = {};
-			}
-			perms[prop[1]][prop[2]] = e;
-			
-			// select related permissions for admin
-			if (prop[2] == 'admin') {
-				if (e.checked) {
-					admin(e,perms,re);
-				}
-				$(e).click(function(){
-					admin(this,perms,re);
-				});
-			}
-		}
-		
-		function admin(E,perms,re) {
-					P = E.name.match(re);
-					
-					perms[P[1]]['pages'].checked = E.checked;
-					perms[P[1]]['pages'].disabled = E.checked;
-		}
-	});
-};
-
-$(function() {
-	$('#permissions-form').updatePagesPermissionsForm();
-});
Index: plugins/pages/list.php
===================================================================
--- plugins/pages/list.php	(revision 1464)
+++ plugins/pages/list.php	(revision 1179)
@@ -44,5 +44,5 @@
 			}
 			
-			echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 			
 			$blocks = explode('%s',$html_block);
@@ -57,5 +57,5 @@
 			echo $blocks[1];
 			
-			echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 		}
 	}
@@ -66,14 +66,14 @@
 		switch ($this->rs->post_status) {
 			case 1:
-				$img_status = sprintf($img,__('Published'),'check-on.png');
+				$img_status = sprintf($img,__('published'),'check-on.png');
 				break;
 			case 0:
-				$img_status = sprintf($img,__('Unpublished'),'check-off.png');
+				$img_status = sprintf($img,__('unpublished'),'check-off.png');
 				break;
 			case -1:
-				$img_status = sprintf($img,__('Scheduled'),'scheduled.png');
+				$img_status = sprintf($img,__('scheduled'),'scheduled.png');
 				break;
 			case -2:
-				$img_status = sprintf($img,__('Pending'),'check-wrn.png');
+				$img_status = sprintf($img,__('pending'),'check-wrn.png');
 				break;
 		}
@@ -81,10 +81,10 @@
 		$protected = '';
 		if ($this->rs->post_password) {
-			$protected = sprintf($img,__('Protected'),'locker.png');
+			$protected = sprintf($img,__('protected'),'locker.png');
 		}
 		
 		$selected = '';
 		if ($this->rs->post_selected) {
-			$selected = sprintf($img,__('Hidden'),'hidden.png');
+			$selected = sprintf($img,__('hidden'),'hidden.png');
 		}
 		
@@ -101,5 +101,5 @@
 		$res .=
 		'<td class="nowrap">'.
-		form::checkbox(array('entries[]'),$this->rs->post_id,'','','',!$this->rs->isEditable(),'title="'.__('Select this page').'"').'</td>'.
+		form::checkbox(array('entries[]'),$this->rs->post_id,'','','',!$this->rs->isEditable(),'title="'.__('select this page').'"').'</td>'.
 		'<td class="maximal"><a href="'.$this->core->getPostAdminURL($this->rs->post_type,$this->rs->post_id).'">'.
 		html::escapeHTML($this->rs->post_title).'</a></td>'.
@@ -145,15 +145,15 @@
 if ($core->auth->check('publish,contentadmin',$core->blog->id))
 {
-	$combo_action[__('Publish')] = 'publish';
-	$combo_action[__('Unpublish')] = 'unpublish';
-	$combo_action[__('Schedule')] = 'schedule';
-	$combo_action[__('Mark as pending')] = 'pending';
+	$combo_action[__('publish')] = 'publish';
+	$combo_action[__('unpublish')] = 'unpublish';
+	$combo_action[__('schedule')] = 'schedule';
+	$combo_action[__('mark as pending')] = 'pending';
 }
 if ($core->auth->check('admin',$core->blog->id)) {
-	$combo_action[__('Change author')] = 'author';
+	$combo_action[__('change author')] = 'author';
 }
 if ($core->auth->check('delete,contentadmin',$core->blog->id))
 {
-	$combo_action[__('Delete')] = 'delete';
+	$combo_action[__('delete')] = 'delete';
 }
 
@@ -177,11 +177,5 @@
 <body>
 <?php
-echo dcPage::breadcrumb(
-	array(
-		html::escapeHTML($core->blog->name) => '',
-		'<span class="page-title">'.__('Pages').'</span>' => ''
-	));
-
-echo
+echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Pages').'</span></h2>'.
 '<p class="top-add"><a class="button add" href="'.$p_url.'&amp;act=page">'.__('New page').'</a></p>';
 
Index: plugins/pages/page.php
===================================================================
--- plugins/pages/page.php	(revision 1480)
+++ plugins/pages/page.php	(revision 1239)
@@ -124,5 +124,5 @@
 		if ($next_rs !== null) {
 			$next_link = sprintf($post_link,$next_rs->post_id,
-				html::escapeHTML($next_rs->post_title),__('Next page').'&nbsp;&#187;');
+				html::escapeHTML($next_rs->post_title),__('next page').'&nbsp;&#187;');
 			$next_headlink = sprintf($post_headlink,'next',
 				html::escapeHTML($next_rs->post_title),$next_rs->post_id);
@@ -131,5 +131,5 @@
 		if ($prev_rs !== null) {
 			$prev_link = sprintf($post_link,$prev_rs->post_id,
-				html::escapeHTML($prev_rs->post_title),'&#171;&nbsp;'.__('Previous page'));
+				html::escapeHTML($prev_rs->post_title),'&#171;&nbsp;'.__('previous page'));
 			$prev_headlink = sprintf($post_headlink,'previous',
 				html::escapeHTML($prev_rs->post_title),$prev_rs->post_id);
@@ -302,4 +302,5 @@
   dcPage::jsToolBar().
   dcPage::jsModal().
+  dcPage::jsMetaEditor().
   dcPage::jsLoad('js/_post.js').
   dcPage::jsConfirmClose('entry-form','comment-form').
@@ -315,32 +316,4 @@
 <?php
 
-if ($post_id) {
-	switch ($post_status) {
-		case 1:
-			$img_status = sprintf($img_status_pattern,__('Published'),'check-on.png');
-			break;
-		case 0:
-			$img_status = sprintf($img_status_pattern,__('Unpublished'),'check-off.png');
-			break;
-		case -1:
-			$img_status = sprintf($img_status_pattern,__('Scheduled'),'scheduled.png');
-			break;
-		case -2:
-			$img_status = sprintf($img_status_pattern,__('Pending'),'check-wrn.png');
-			break;
-		default:
-			$img_status = '';
-	}
-	$edit_entry_title = '&ldquo;'.$post_title.'&rdquo;'.' '.$img_status;
-} else {
-	$edit_entry_title = $page_title;
-}
-echo dcPage::breadcrumb(
-	array(
-		html::escapeHTML($core->blog->name) => '',
-		__('Pages') => $p_url,
-		'<span class="page-title">'.$edit_entry_title.'</span>' => ''
-	));
-
 if (!empty($_GET['upd'])) {
 	dcPage::message(__('Page has been successfully updated.'));
@@ -366,6 +339,29 @@
 }
 
+echo '<h2>'.html::escapeHTML($core->blog->name).
+' &rsaquo; <a href="'.$p_url.'">'.__('Pages').'</a> &rsaquo; <span class="page-title">'.$page_title; 
+	if ($post_id) {
+		switch ($post_status) {
+			case 1:
+				$img_status = sprintf($img_status_pattern,__('published'),'check-on.png');
+				break;
+			case 0:
+				$img_status = sprintf($img_status_pattern,__('unpublished'),'check-off.png');
+				break;
+			case -1:
+				$img_status = sprintf($img_status_pattern,__('scheduled'),'scheduled.png');
+				break;
+			case -2:
+				$img_status = sprintf($img_status_pattern,__('pending'),'check-wrn.png');
+				break;
+			default:
+				$img_status = '';
+		}
+		echo ' &ldquo;'.$post_title.'&rdquo;'.' '.$img_status;
+	}
+echo	'</span></h2>';
+
 if ($post_id && $post->post_status == 1) {
-	echo '<p><a class="onblog_link" href="'.$post->getURL().'" onclick="window.open(this.href);return false;" title="'.$post_title.' ('.__('new window').')'.'">'.__('Go to this page on the site').' <img src="images/outgoing-blue.png" alt="" /></a></p>';
+	echo '<p><a href="'.$post->getURL().'" onclick="window.open(this.href);return false;" title="'.$post_title.' ('.__('new window').')'.'">'.__('Go to this page on the site').' <img src="images/outgoing-blue.png" alt="" /></a></p>';
 }
 
@@ -374,7 +370,7 @@
 if ($post_id)
 {
-	echo '<p class="nav_prevnext">';
+	echo '<p>';
 	if ($prev_link) { echo $prev_link; }
-	if ($next_link && $prev_link) { echo ' | '; }
+	if ($next_link && $prev_link) { echo ' - '; }
 	if ($next_link) { echo $next_link; }
 	
@@ -403,10 +399,9 @@
 	
 	echo
-	'<p class="col"><label for="post_title" class="required no-margin"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label>'.
+	'<p class="col"><label for="post_title" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').
 	form::field('post_title',20,255,html::escapeHTML($post_title),'maximal').
-	'</p>'.
-	
-	'<p class="area" id="excerpt-area"><label for="post_excerpt">'.__('Excerpt:').
-	'<span class="form-note">'.__('Add an introduction to the page.').'</span></label> '.
+	'</label></p>'.
+	
+	'<p class="area" id="excerpt-area"><label for="post_excerpt">'.__('Excerpt:').'</label> '.
 	form::textarea('post_excerpt',50,5,html::escapeHTML($post_excerpt)).
 	'</p>'.
@@ -418,6 +413,5 @@
 	
 	echo
-	'<p class="area" id="notes-area"><label for="post_notes">'.__('Personal notes:').
-	'<span class="form-note">'.__('Add unpublished notes.').'</span></label>'.
+	'<p class="area" id="notes-area"><label for="post_notes">'.__('Notes:').'</label>'.
 	form::textarea('post_notes',50,5,html::escapeHTML($post_notes)).
 	'</p>';
@@ -427,5 +421,5 @@
 	
 	echo
-	'<p class="border-top">'.
+	'<p>'.
 	($post_id ? form::hidden('id',$post_id) : '').
 	'<input type="submit" value="'.__('Save').' (s)" '.
@@ -455,15 +449,15 @@
 	
 	echo
-	'<p><label for="post_status" class="ib">'.__('Page status:').'</label> '.
+	'<p><label for="post_status">'.__('Page status:').
 	form::combo('post_status',$status_combo,$post_status,'','',!$can_publish).
-	'</p>'.
-	
-	'<p><label for="post_dt" class="ib">'.__('Published on:').'</label>'.
-	form::field('post_dt',16,16,$post_dt,($bad_dt ? 'invalid' : '')).'</p>'.
-	
-	'<p><label for="post_format" class="ib">'.__('Text formating:').'</label>'.
+	'</label></p>'.
+	
+	'<p><label for="post_dt">'.__('Published on:').
+	form::field('post_dt',16,16,$post_dt,($bad_dt ? 'invalid' : '')).'</label></p>'.
+	
+	'<p><label for="post_format">'.__('Text formating:').
 	form::combo('post_format',$formaters_combo,$post_format).
-	($post_id && $post_format != 'xhtml' ? '<a class="button" href="'.html::escapeURL($redir_url).'&amp;id='.$post_id.'&amp;xconv=1">'.__('Convert to XHTML').'</a>' : '').
-	'</p>'.
+	($post_id && $post_format != 'xhtml' ? '<a href="'.html::escapeURL($redir_url).'&amp;id='.$post_id.'&amp;xconv=1">'.__('Convert to XHTML').'</a>' : '').
+	'</label></p>'.
 	
 	'<p><label for="post_open_comment" class="classic">'.form::checkbox('post_open_comment',1,$post_open_comment).' '.
@@ -489,19 +483,19 @@
 	'</p>'.
 
-	'<p><label for="post_position" class="classic">'.__('Page position:').'</label> '.
+	'<p><label for="post_position" class="classic">'.__('Page position:').' '.
 	form::field('post_position',3,3,(string) $post_position).
-	'</p>'.
-	
-	'<p><label for="post_lang" class="ib">'.__('Page lang:').'</label>'.
-	form::combo('post_lang',$lang_combo,$post_lang).'</p>'.
-	
-	'<p><label for="post_password" class="ib">'.__('Page password:').'</label>'.
+	'</label></p>'.
+	
+	'<p><label for="post_lang">'.__('Page lang:').
+	form::combo('post_lang',$lang_combo,$post_lang).'</label></p>'.
+	
+	'<p><label for="post_password">'.__('Page password:').
 	form::field('post_password',10,32,html::escapeHTML($post_password),'maximal').
-	'</p>'.
-	
-	'<div class="lockable ib">'.
-	'<p><label for="post_url" class="ib">'.__('Basename:').'</label>'.
+	'</label></p>'.
+	
+	'<div class="lockable">'.
+	'<p><label for="post_url">'.__('Basename:').
 	form::field('post_url',10,255,html::escapeHTML($post_url),'maximal').
-	'</p>'.
+	'</label></p>'.
 	'<p class="form-note warn">'.
 	__('Warning: If you set the URL manually, it may conflict with another page.').
@@ -512,5 +506,5 @@
 	{
 		echo
-		'<h4 class="clear">'.__('Attachments').'</h4>';
+		'<h3 class="clear">'.__('Attachments').'</h3>';
 		foreach ($post_media as $f)
 		{
@@ -532,5 +526,5 @@
 			'<li class="media-action"><a class="attachment-remove" id="attachment-'.$f->media_id.'" '.
 			'href="post_media.php?post_id='.$post_id.'&amp;media_id='.$f->media_id.'&amp;remove=1">'.
-			'<img src="images/check-off.png" alt="'.__('Remove').'" /></a>'.
+			'<img src="images/check-off.png" alt="'.__('remove').'" /></a>'.
 			'</li>'.
 			
@@ -541,7 +535,7 @@
 		
 		if (empty($post_media)) {
-			echo '<p class="form-note">'.__('No attachment.').'</p>';
-		}
-		echo '<p><a class="button" href="media.php?post_id='.$post_id.'">'.__('Add files to this page').'</a></p>';
+			echo '<p>'.__('No attachment.').'</p>';
+		}
+		echo '<p><a href="media.php?post_id='.$post_id.'">'.__('Add files to this page').'</a></p>';
 	}
 	
@@ -579,8 +573,8 @@
 	if ($can_edit_page && $core->auth->check('publish,contentadmin',$core->blog->id))
 	{
-		$combo_action[__('Publish')] = 'publish';
-		$combo_action[__('Unpublish')] = 'unpublish';
-		$combo_action[__('Mark as pending')] = 'pending';
-		$combo_action[__('Mark as junk')] = 'junk';
+		$combo_action[__('publish')] = 'publish';
+		$combo_action[__('unpublish')] = 'unpublish';
+		$combo_action[__('mark as pending')] = 'pending';
+		$combo_action[__('mark as junk')] = 'junk';
 	}
 	
@@ -641,15 +635,15 @@
 	'<form action="comment.php" method="post" id="comment-form">'.
 	'<div class="constrained">'.
-	'<p><label for="comment_author" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Name:').'</label>'.
+	'<p><label for="comment_author" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Name:').
 	form::field('comment_author',30,255,html::escapeHTML($core->auth->getInfo('user_cn'))).
-	'</p>'.
-	
-	'<p><label for="comment_email">'.__('Email:').'</label>'.
+	'</label></p>'.
+	
+	'<p><label for="comment_email">'.__('Email:').
 	form::field('comment_email',30,255,html::escapeHTML($core->auth->getInfo('user_email'))).
-	'</p>'.
-	
-	'<p><label for="comment_site">'.__('Web site:').'</label>'.
+	'</label></p>'.
+	
+	'<p><label for="comment_site">'.__('Web site:').
 	form::field('comment_site',30,255,html::escapeHTML($core->auth->getInfo('user_url'))).
-	'</p>'.
+	'</label></p>'.
 	
 	'<p class="area"><label for="comment_content" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Comment:').'</label> '.
@@ -706,14 +700,14 @@
 		switch ($rs->comment_status) {
 			case 1:
-				$img_status = sprintf($img,__('Published'),'check-on.png');
+				$img_status = sprintf($img,__('published'),'check-on.png');
 				break;
 			case 0:
-				$img_status = sprintf($img,__('Unpublished'),'check-off.png');
+				$img_status = sprintf($img,__('unpublished'),'check-off.png');
 				break;
 			case -1:
-				$img_status = sprintf($img,__('Pending'),'check-wrn.png');
+				$img_status = sprintf($img,__('pending'),'check-wrn.png');
 				break;
 			case -2:
-				$img_status = sprintf($img,__('Junk'),'junk.png');
+				$img_status = sprintf($img,__('junk'),'junk.png');
 				break;
 		}
@@ -724,5 +718,5 @@
 		
 		'<td class="nowrap">'.
-		($has_action ? form::checkbox(array('comments[]'),$rs->comment_id,'','','',0,'title="'.__('Select this comment').'"') : '').'</td>'.
+		($has_action ? form::checkbox(array('comments[]'),$rs->comment_id,'','','',0,'title="'.__('select this comment').'"') : '').'</td>'.
 		'<td class="maximal">'.$rs->comment_author.'</td>'.
 		'<td class="nowrap">'.dt::dt2str(__('%Y-%m-%d %H:%M'),$rs->comment_dt).'</td>'.
Index: plugins/pings/_admin.php
===================================================================
--- plugins/pings/_admin.php	(revision 1398)
+++ plugins/pings/_admin.php	(revision 1179)
@@ -33,5 +33,5 @@
 
 $core->addBehavior('adminPostHeaders',array('pingsBehaviors','pingJS'));
-$core->addBehavior('adminPostFormItems',array('pingsBehaviors','pingsFormItems'));
+$core->addBehavior('adminPostFormSidebar',array('pingsBehaviors','pingsForm'));
 $core->addBehavior('adminAfterPostCreate',array('pingsBehaviors','doPings'));
 $core->addBehavior('adminAfterPostUpdate',array('pingsBehaviors','doPings'));
Index: plugins/pings/index.php
===================================================================
--- plugins/pings/index.php	(revision 1454)
+++ plugins/pings/index.php	(revision 1179)
@@ -51,10 +51,5 @@
 <body>
 <?php
-
-echo dcPage::breadcrumb(
-	array(
-		__('Plugins') => '',
-		'<span class="page-title">'.__('Pings configuration').'</span>' => ''
-	));
+echo '<h2 class="page-title">'.__('Pings configuration').'</h2>';
 
 if (!empty($_GET['up'])) {
@@ -64,6 +59,6 @@
 echo
 '<form action="'.$p_url.'" method="post">'.
-'<p><label for="pings_active" class="classic">'.form::checkbox('pings_active',1,$core->blog->settings->pings->pings_active).'</label> '.
-__('Activate pings extension').'</p>';
+'<p><label for="pings_active" class="classic">'.form::checkbox('pings_active',1,$core->blog->settings->pings->pings_active).' '.
+__('Activate pings extension').'</label></p>';
 
 $i = 0;
@@ -71,8 +66,8 @@
 {
 	echo
-	'<p><label for="pings_srv_name-'.$i.'" class="classic">'.__('Service name:').'</label> '.
-	form::field(array('pings_srv_name[]','pings_srv_name-'.$i),20,128,html::escapeHTML($n)).' '.
-	'<label for="pings_srv_uri-'.$i.'" class="classic">'.__('Service URI:').'</label> '.
-	form::field(array('pings_srv_uri[]','pings_srv_uri-'.$i),40,255,html::escapeHTML($u));
+	'<p><label for="pings_srv_name-'.$i.'" class="classic">'.__('Service name:').' '.
+	form::field(array('pings_srv_name[]','pings_srv_name-'.$i),20,128,html::escapeHTML($n)).'</label> '.
+	'<label for="pings_srv_uri-'.$i.'" class="classic">'.__('Service URI:').' '.
+	form::field(array('pings_srv_uri[]','pings_srv_uri-'.$i),40,255,html::escapeHTML($u)).'</label>';
 	
 	if (!empty($_GET['test']))
@@ -80,7 +75,7 @@
 		try {
 			pingsAPI::doPings($u,'Example site','http://example.com');
-			echo ' <img src="images/check-on.png" alt="OK" />';
+			echo ' <img src="images/check-on.png" alt="ok" />';
 		} catch (Exception $e) {
-			echo ' <img src="images/check-off.png" alt="'.__('Error').'" /> '.$e->getMessage();
+			echo ' <img src="images/check-off.png" alt="'.__('error').'" /> '.$e->getMessage();
 		}
 	}
@@ -91,8 +86,8 @@
 
 echo
-'<p><label for="pings_srv_name2" class="classic">'.__('Service name:').'</label> '.
-form::field(array('pings_srv_name[]','pings_srv_name2'),20,128).' '.
-'<label for="pings_srv_uri2" class="classic">'.__('Service URI:').'</label> '.
-form::field(array('pings_srv_uri[]','pings_srv_uri2'),40,255).
+'<p><label for="pings_srv_name2" class="classic">'.__('Service name:').' '.
+form::field(array('pings_srv_name[]','pings_srv_name2'),20,128).'</label> '.
+'<label for="pings_srv_uri2" class="classic">'.__('Service URI:').' '.
+form::field(array('pings_srv_uri[]','pings_srv_uri2'),40,255).'</label>'.
 '</p>'.
 
@@ -101,5 +96,5 @@
 '</form>';
 
-echo '<p><a class="button" href="'.$p_url.'&amp;test=1">'.__('Test ping services').'</a></p>';
+echo '<p><a href="'.$p_url.'&amp;test=1">'.__('Test ping services').'</a></p>';
 ?>
 </body>
Index: plugins/pings/lib.pings.php
===================================================================
--- plugins/pings/lib.pings.php	(revision 1398)
+++ plugins/pings/lib.pings.php	(revision 1179)
@@ -41,5 +41,5 @@
 	}
 	
-	public static function pingsFormItems($main,$sidebar,$post)
+	public static function pingsForm($post)
 	{
 		$core =& $GLOBALS['core'];
@@ -59,9 +59,9 @@
 		}
 		
-		$item = '<h5 class="ping-services">'.__('Pings').'</h5>';
+		echo '<h3 class="ping-services">'.__('Pings:').'</h3>';
 		$i = 0;
 		foreach ($pings_uris as $k => $v)
 		{
-			$item .=
+			echo
 			'<p class="ping-services"><label for="pings_do-'.$i.'" class="classic">'.
 			form::checkbox(array('pings_do[]','pings_do-'.$i),html::escapeHTML($v),in_array($v,$pings_do)).' '.
@@ -69,6 +69,4 @@
 			$i++;
 		}
-		$sidebar['options-box']['items']['pings']=$item;
-		
 	}
 	
Index: plugins/pings/post.js
===================================================================
--- plugins/pings/post.js	(revision 1365)
+++ plugins/pings/post.js	(revision 0)
@@ -12,5 +12,5 @@
 			$('p.ping-services:last').after(p.append(a));
 		}
-		$('h5.ping-services').toggleWithLegend($('p.ping-services'),{
+		$('h3.ping-services').toggleWithLegend($('p.ping-services'),{
 			cookie: 'dcx_ping_services'
 		});
Index: plugins/simpleMenu/_admin.php
===================================================================
--- plugins/simpleMenu/_admin.php	(revision 1292)
+++ plugins/simpleMenu/_admin.php	(revision 1179)
@@ -25,5 +25,5 @@
 }
 
-$_menu['Blog']->addItem(__('Simple menu'),'plugin.php?p=simpleMenu','index.php?pf=simpleMenu/icon-small.png',
+$_menu['Plugins']->addItem(__('Simple menu'),'plugin.php?p=simpleMenu','index.php?pf=simpleMenu/icon-small.png',
                 preg_match('/plugin.php\?p=simpleMenu(&.*)?$/',$_SERVER['REQUEST_URI']),
                 $core->auth->check('usage,contentadmin',$core->blog->id));
Index: plugins/simpleMenu/index.php
===================================================================
--- plugins/simpleMenu/index.php	(revision 1474)
+++ plugins/simpleMenu/index.php	(revision 1273)
@@ -233,5 +233,5 @@
 				
 					// All done successfully, return to menu items list
-					http::redirect($p_url.'&amp;added=1');
+					http::redirect($p_url.'&added=1');
 				} else {
 					throw new Exception(__('Label and URL of menu item are mandatory.'));
@@ -268,5 +268,5 @@
 				
 				// All done successfully, return to menu items list
-				http::redirect($p_url.'&amp;removed=1');
+				http::redirect($p_url.'&removed=1');
 			} else {
 				throw new Exception(__('No menu items selected.'));
@@ -302,5 +302,5 @@
 
 			// All done successfully, return to menu items list
-			http::redirect($p_url.'&amp;updated=1');
+			http::redirect($p_url.'&updated=1');
 		}
 		catch (Exception $e) {
@@ -339,5 +339,5 @@
 
 			// All done successfully, return to menu items list
-			http::redirect($p_url.'&amp;neworder=1');
+			http::redirect($p_url.'&neworder=1');
 		} 
 		catch (Exception $e) {
@@ -368,19 +368,4 @@
 <?php
 
-if ($step) {
-	echo dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			$page_title => $p_url,
-			'<span class="page-title">'.__('Add item').'</span>' => ''
-		));
-} else {
-	echo dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			'<span class="page-title">'.$page_title.'</span>' => ''
-		));
-}
-
 if (!empty($_GET['added'])) {
 	dcPage::message(__('Menu item has been successfully added.'));
@@ -396,7 +381,9 @@
 }
 
-if ($step)
+if ($step) 
 {
 	// Formulaire d'ajout d'un item
+	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <a href="'.$p_url.'">'.$page_title.'</a> &rsaquo; <span class="page-title">'.__('Add item').'</span></h2>';
+	
 	switch ($step) {
 		case 1:
@@ -467,6 +454,10 @@
 // Liste des items
 if (!$step) {
+	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_title.'</span></h2>';
+}
+
+if (!$step) {
 	echo '<form id="menuitemsappend" action="'.$p_url.'&amp;add=1" method="post">';
-	echo '<p class="top-add">'.$core->formNonce().'<input class="button add" type="submit" name="appendaction" value="'.__('Add an item').'" /></p>';
+	echo '<p>'.$core->formNonce().'<input class="add" type="submit" name="appendaction" value="'.__('Add an item').'" /></p>';
 	echo '</form>';
 }
Index: plugins/tags/_admin.php
===================================================================
--- plugins/tags/_admin.php	(revision 1471)
+++ plugins/tags/_admin.php	(revision 1239)
@@ -18,8 +18,10 @@
 require dirname(__FILE__).'/_widgets.php';
 
-$core->addBehavior('adminPostFormItems',array('tagsBehaviors','tagsField'));
+$core->addBehavior('adminPostFormSidebar',array('tagsBehaviors','tagsField'));
 
 $core->addBehavior('adminAfterPostCreate',array('tagsBehaviors','setTags'));
 $core->addBehavior('adminAfterPostUpdate',array('tagsBehaviors','setTags'));
+
+$core->addBehavior('adminPageHeaders',array('tagsBehaviors','pageHeaders'));
 
 $core->addBehavior('adminPostHeaders',array('tagsBehaviors','postHeaders'));
@@ -71,5 +73,5 @@
 	}
 	
-	public static function tagsField($main,$sidebar,$post)
+	public static function tagsField($post)
 	{
 		$meta =& $GLOBALS['core']->meta;
@@ -80,7 +82,8 @@
 			$value = ($post) ? $meta->getMetaStr($post->post_meta,'tag') : '';
 		}
-		$sidebar['metas-box']['items']['post_tags']=
-		'<h5><label class="s-tags" for="post_tags">'.__('Tags').'</label></h5>'.
-		'<div class="p s-tags" id="tags-edit">'.form::textarea('post_tags',20,3,$value,'maximal').'</div>';
+		
+		echo
+		'<h3><label for="post_tags">'.__('Tags:').'</label></h3>'.
+		'<div class="p" id="tags-edit">'.form::textarea('post_tags',20,3,$value,'maximal').'</div>';
 	}
 	
@@ -98,4 +101,33 @@
 			}
 		}
+	}
+
+	public static function pageHeaders()
+	{
+		$tag_url = $GLOBALS['core']->blog->url.$GLOBALS['core']->url->getURLFor('tag');
+		
+		$opts = $GLOBALS['core']->auth->getOptions();
+		$type = isset($opts['tag_list_format']) ? $opts['tag_list_format'] : 'more';
+		
+		return 
+		'<script type="text/javascript" src="index.php?pf=tags/js/jquery.autocomplete.js"></script>'.
+		'<script type="text/javascript" src="index.php?pf=tags/js/page.js"></script>'.
+		'<script type="text/javascript">'."\n".
+		"//<![CDATA[\n".
+		"metaEditor.prototype.meta_url = 'plugin.php?p=tags&m=tag_posts&amp;tag=';\n".
+		"metaEditor.prototype.meta_type = '".html::escapeJS($type)."';\n".
+		"metaEditor.prototype.text_confirm_remove = '".html::escapeJS(__('Are you sure you want to remove this %s?'))."';\n".
+		"metaEditor.prototype.text_add_meta = '".html::escapeJS(__('Add a %s to this entry'))."';\n".
+		"metaEditor.prototype.text_choose = '".html::escapeJS(__('Choose from list'))."';\n".
+		"metaEditor.prototype.text_all = '".html::escapeJS(__('all'))."';\n".
+		"metaEditor.prototype.text_separation = '';\n".
+		"jsToolBar.prototype.elements.tag.title = '".html::escapeJS(__('Tag'))."';\n".
+		"jsToolBar.prototype.elements.tag.url = '".html::escapeJS($tag_url)."';\n".
+		"dotclear.msg.tags_autocomplete = '".html::escapeJS(__('used in %e - frequency %p%'))."';\n".
+		"dotclear.msg.entry = '".html::escapeJS(__('entry'))."';\n".
+		"dotclear.msg.entries = '".html::escapeJS(__('entries'))."';\n".
+		"\n//]]>\n".
+		"</script>\n".
+		'<link rel="stylesheet" type="text/css" href="index.php?pf=tags/style.css" />';
 	}
 	
@@ -229,16 +261,11 @@
 		if ($action == 'tags')
 		{
-			echo dcPage::breadcrumb(
-				array(
-					html::escapeHTML($core->blog->name) => '',
-					__('Entries') => 'posts.php',
-					'<span class="page-title">'.__('Add tags to entries').'</span>' => ''
-			)).
+			echo
+			'<h2 class="page-title">'.__('Add tags to entries').'</h2>'.
 			'<form action="'.$form_uri.'" method="post">'.
-			$hidden_fields->getEntries().
 			'<div><label for="new_tags" class="area">'.__('Tags to add:').'</label> '.
 			form::textarea('new_tags',60,3).
 			'</div>'.
-			$hidden_fields->getHidden().
+			$hidden_fields.
 			$core->formNonce().
 			form::hidden(array('action'),'tags').
@@ -264,10 +291,6 @@
 				}
 			}
-			echo dcPage::breadcrumb(
-				array(
-					html::escapeHTML($core->blog->name) => '',
-					__('Entries') => 'posts.php',
-					'<span class="page-title">'.__('Remove selected tags from entries').'</span>' => ''
-			));
+			
+			echo '<h2 class="page-title">'.__('Remove selected tags from entries').'</h2>';
 			
 			if (empty($tags)) {
@@ -322,7 +345,7 @@
 		echo
 		'<fieldset><legend>'.__('Tags').'</legend>'.
-		'<p><label for="user_tag_list_format">'.__('Tags list format:').'</label> '.
+		'<p><label for="user_tag_list_format">'.__('Tags list format:').' '.
 		form::combo('user_tag_list_format',$combo,$value).
-		'</p></fieldset>';
+		'</label></p></fieldset>';
 	}
 	
Index: plugins/tags/_define.php
===================================================================
--- plugins/tags/_define.php	(revision 1392)
+++ plugins/tags/_define.php	(revision 1179)
@@ -18,6 +18,5 @@
 	/* Version */			'1.2',
 	array(
-		'permissions' =>	'usage,contentadmin',
-		'priority' =>		998
+		'permissions' =>	'usage,contentadmin'
 	)
 );
Index: plugins/tags/js/page.js
===================================================================
--- plugins/tags/js/page.js	(revision 1240)
+++ plugins/tags/js/page.js	(revision 1240)
@@ -0,0 +1,70 @@
+$(function () {
+    $('#edit-entry').onetabload(function () {
+        var tags_edit = $('#tags-edit');
+        var post_id = $('#id');
+        var meta_field = null;
+        if (tags_edit.length > 0) {
+            post_id = (post_id.length > 0) ? post_id.get(0).value : false;
+            if (post_id == false) {
+                meta_field = $('<input type="hidden" name="post_tags" />');
+                meta_field.val($('#post_tags').val());
+            }
+            var mEdit = new metaEditor(tags_edit, meta_field, 'tag');
+            mEdit.meta_url = 'plugin.php?p=tags&m=tag_posts&amp;tag=';
+            mEdit.displayMeta('tag', post_id);
+            window.dc_tag_editor = mEdit;
+        }
+    });
+});
+jsToolBar.prototype.elements.tagSpace = {
+    type: 'space'
+};
+jsToolBar.prototype.elements.tag = {
+    type: 'button',
+    title: 'Keyword',
+    fn: {}
+};
+jsToolBar.prototype.elements.tag.context = 'post';
+jsToolBar.prototype.elements.tag.icon = 'index.php?pf=tags/img/tag-add.png';
+jsToolBar.prototype.elements.tag.fn.wiki = function () {
+    this.encloseSelection('', '', function (str) {
+        if (str == '') {
+            window.alert(dotclear.msg.no_selection);
+            return '';
+        }
+        if (str.indexOf(',') != -1) {
+            return str;
+        } else {
+            return '[' + str + '|tag:' + str + ']';
+        }
+    });
+};
+jsToolBar.prototype.elements.tag.fn.xhtml = function () {
+    var url = this.elements.tag.url;
+    this.encloseSelection('', '', function (str) {
+        if (str == '') {
+            window.alert(dotclear.msg.no_selection);
+            return '';
+        }
+        if (str.indexOf(',') != -1) {
+            return str;
+        } else {
+            return '<a href="' + this.stripBaseURL(url + '/' + str) + '">' + str + '</a>';
+        }
+    });
+};
+jsToolBar.prototype.elements.tag.fn.wysiwyg = function () {
+    var t = this.getSelectedText();
+    if (t == '') {
+        window.alert(dotclear.msg.no_selection);
+        return;
+    }
+    if (t.indexOf(',') != -1) {
+        return;
+    }
+    var n = this.getSelectedNode();
+    var a = document.createElement('a');
+    a.href = this.stripBaseURL(this.elements.tag.url + '/' + t);
+    a.appendChild(n);
+    this.insertNode(a);
+};
Index: plugins/tags/js/post.js
===================================================================
--- plugins/tags/js/post.js	(revision 1392)
+++ plugins/tags/js/post.js	(revision 1112)
@@ -58,9 +58,4 @@
 		});
 	});
-			
-	$('h5 .s-tags').toggleWithLegend($('.s-tags').not('label'),{
-			cookie: 'post_tags'
-	});
-
 });
 
Index: plugins/tags/tag_posts.php
===================================================================
--- plugins/tags/tag_posts.php	(revision 1480)
+++ plugins/tags/tag_posts.php	(revision 1288)
@@ -109,12 +109,6 @@
 <body>
 
-<?php
-echo dcPage::breadcrumb(
-	array(
-		html::escapeHTML($core->blog->name) => '',
-		__('Tags') => $p_url.'&amp;m=tags',
-		'<span class="page-title">'.__('Tag').' &ldquo;'.html::escapeHTML($tag).'&rdquo;'.'</span>' => ''
-	));
-?>
+<h2><?php echo html::escapeHTML($core->blog->name); ?> &rsaquo;
+<span class="page-title"><?php echo __('Edit tag').' &ldquo;'.html::escapeHTML($tag).'&rdquo;'; ?></span></h2>
 
 <?php
@@ -130,7 +124,6 @@
 	{
 		echo
-		'<div class="fieldset">'.
 		'<form action="'.$this_url.'" method="post">'.
-		'<h3>'.__('Actions for this tag').'</h3>'.
+		'<div class="fieldset"><h3>'.__('Actions for this tag').'</h3>'.
 		'<p><label for="new_tag_id">'.__('Edit tag name:').'</label>'.
 		form::field('new_tag_id',20,255,html::escapeHTML($tag)).
@@ -162,5 +155,5 @@
 	'<p class="col right"><label for="action" class="classic">'.__('Selected entries action:').'</label> '.
 	form::combo('action',$combo_action).
-	'<input type="submit" value="'.__('OK').'" /></p>'.
+	'<input type="submit" value="'.__('ok').'" /></p>'.
 	form::hidden('post_type','').
 	form::hidden('redir',$p_url.'&amp;m=tag_posts&amp;tag='.
Index: plugins/tags/tags.php
===================================================================
--- plugins/tags/tags.php	(revision 1358)
+++ plugins/tags/tags.php	(revision 1179)
@@ -20,11 +20,6 @@
 
 <body>
-<?php
-echo dcPage::breadcrumb(
-	array(
-		html::escapeHTML($core->blog->name) => '',
-		'<span class="page-title">'.__('Tags').'</span>' => ''
-	));
-?>
+<h2><?php echo html::escapeHTML($core->blog->name); ?> &rsaquo;
+<span class="page-title"><?php echo __('Tags'); ?></span></h2>
 
 <?php
Index: plugins/themeEditor/_admin.php
===================================================================
--- plugins/themeEditor/_admin.php	(revision 1454)
+++ plugins/themeEditor/_admin.php	(revision 1179)
@@ -26,5 +26,5 @@
 	{
 		if ($id != 'default' && $core->auth->isSuperAdmin()) {
-			return '<p><a href="plugin.php?p=themeEditor" class="button">'.__('Edit theme files').'</a></p>';
+			return '<p><a href="plugin.php?p=themeEditor" class="button">'.__('Theme Editor').'</a></p>';
 		}
 	}
@@ -54,8 +54,8 @@
 		
 		'<p><label for="colorsyntax" class="classic">'.
-		form::checkbox('colorsyntax',1,$core->auth->user_prefs->interface->colorsyntax).'</label>'.
-		__('Syntax color').
+		form::checkbox('colorsyntax',1,$core->auth->user_prefs->interface->colorsyntax).' '.
+		__('Syntax color').'</label></p>'.
+
 		'<br class="clear" />'. //Opera sucks
-		'</p>'.
 		'</fieldset>';
 	}
Index: plugins/themeEditor/index.php
===================================================================
--- plugins/themeEditor/index.php	(revision 1382)
+++ plugins/themeEditor/index.php	(revision 1179)
@@ -61,5 +61,5 @@
 <html>
 <head>
-  <title><?php echo __('Edit theme files'); ?></title>
+  <title><?php echo __('Theme Editor'); ?></title>
   <link rel="stylesheet" type="text/css" href="index.php?pf=themeEditor/style.css" />
   <script type="text/javascript">
@@ -86,12 +86,6 @@
 
 <body>
-<?php
-echo dcPage::breadcrumb(
-	array(
-		html::escapeHTML($core->blog->name) => '',
-		__('Blog appearance') => 'blog_theme.php',
-		'<span class="page-title">'.__('Edit theme files').'</span>' => ''
-	));
-?>
+<?php echo '<h2>'.html::escapeHTML($core->blog->name).
+' &rsaquo; <a href="blog_theme.php">'.__('Blog appearance').'</a> &rsaquo; <span class="page-title">'.__('Theme Editor').'</span></h2>'; ?>
 
 <p><strong><?php echo sprintf(__('Your current theme on this blog is "%s".'),html::escapeHTML($T['name'])); ?></strong></p>
Index: plugins/userPref/_admin.php
===================================================================
--- plugins/userPref/_admin.php	(revision 1293)
+++ plugins/userPref/_admin.php	(revision 1179)
@@ -12,5 +12,5 @@
 if (!defined('DC_CONTEXT_ADMIN')) { return; }
 
-$_menu['System']->addItem('user:preferences','plugin.php?p=userPref','index.php?pf=userPref/icon.png',
+$_menu['Plugins']->addItem('user:preferences','plugin.php?p=userPref','index.php?pf=userPref/icon.png',
 		preg_match('/plugin.php\?p=userPref(&.*)?$/',$_SERVER['REQUEST_URI']),
 		$core->auth->isSuperAdmin());
Index: plugins/userPref/index.php
===================================================================
--- plugins/userPref/index.php	(revision 1474)
+++ plugins/userPref/index.php	(revision 1274)
@@ -81,5 +81,5 @@
 	
 	return
-	'<tr class="line">'.
+	'<tr>'.
 	'<td scope="row"><label for="s_'.$id.'">'.sprintf($slabel,html::escapeHTML($id)).'</label></td>'.
 	'<td>'.$field.'</td>'.
@@ -93,4 +93,9 @@
   <title>user:preferences</title>
   <?php echo dcPage::jsPageTabs($part); ?>
+  <style type="text/css">
+	table.prefs { border: 1px solid #999; margin-bottom: 2em; }
+	table.prefs th { background: #f5f5f5; color: #444; padding-top: 0.3em; padding-bottom: 0.3em; }
+	p.anchor-nav {float: right; }
+  </style>
 	<script type="text/javascript">
 	//<![CDATA[
@@ -111,11 +116,4 @@
 <body>
 <?php
-echo dcPage::breadcrumb(
-	array(
-		__('System') => '',
-		html::escapeHTML($core->auth->userID()) => '',
-		'<span class="page-title">'.__('user:preferences').'</span>' => ''
-	));
-
 if (!empty($_GET['upd'])) {
 	dcPage::message(__('Preferences successfully updated'));
@@ -126,9 +124,10 @@
 }
 ?>
-
-<div id="local" class="multi-part" title="<?php echo __('User preferences'); ?>">
+<h2><?php echo html::escapeHTML($core->auth->userID()); ?> &rsaquo; <span class="page-title">user:preferences</span></h2>
+
+<div id="local" class="multi-part" title="<?php echo __('user preferences'); ?>">
 
 <?php 
-$table_header = '<table class="prefs" id="%s"><caption class="as_h3">%s</caption>'.
+$table_header = '<table class="prefs" id="%s"><caption>%s</caption>'.
 '<thead>'.
 '<tr>'."\n".
@@ -185,5 +184,5 @@
 </div>
 
-<div id="global" class="multi-part" title="<?php echo __('Global preferences'); ?>">
+<div id="global" class="multi-part" title="<?php echo __('global preferences'); ?>">
 
 <?php
Index: plugins/widgets/_widgets_functions.php
===================================================================
--- plugins/widgets/_widgets_functions.php	(revision 1280)
+++ plugins/widgets/_widgets_functions.php	(revision 1253)
@@ -29,8 +29,6 @@
 		($w->title ? '<h2><label for="q">'.html::escapeHTML($w->title).'</label></h2>' : '').
 		'<form action="'.$core->blog->url.'" method="get">'.
-		'<fieldset>'.
 		'<p><input type="text" size="10" maxlength="255" id="q" name="q" value="'.$value.'" /> '.
 		'<input type="submit" class="submit" value="ok" /></p>'.
-		'</fieldset>'.
 		'</form>'.
 		($w->content_only ? '' : '</div>');
Index: plugins/widgets/class.widgets.php
===================================================================
--- plugins/widgets/class.widgets.php	(revision 1474)
+++ plugins/widgets/class.widgets.php	(revision 1179)
@@ -238,13 +238,13 @@
 				case 'text':
 					$res .=
-					'<p><label for="'.$wfid.'">'.$s['title'].'</label> '.
+					'<p><label for="'.$wfid.'">'.$s['title'].' '.
 					form::field(array($iname,$wfid),20,255,html::escapeHTML($s['value']),'maximal').
-					'</p>';
+					'</label></p>';
 					break;
 				case 'textarea':
 					$res .=
-					'<p><label for="'.$wfid.'">'.$s['title'].'</label> '.
+					'<p><label for="'.$wfid.'">'.$s['title'].' '.
 					form::textarea(array($iname,$wfid),30,5,html::escapeHTML($s['value']),'maximal').
-					'</p>';
+					'</label></p>';
 					break;
 				case 'check':
@@ -257,7 +257,7 @@
 				case 'combo':
 					$res .=
-					'<p><label for="'.$wfid.'">'.$s['title'].'</label> '.
+					'<p><label for="'.$wfid.'">'.$s['title'].' '.
 					form::combo(array($iname,$wfid),$s['options'],$s['value']).
-					'</p>';
+					'</label></p>';
 					break;
 			}
Index: plugins/widgets/index.php
===================================================================
--- plugins/widgets/index.php	(revision 1483)
+++ plugins/widgets/index.php	(revision 1179)
@@ -188,15 +188,10 @@
 <body>
 <?php
-echo dcPage::breadcrumb(
-	array(
-		html::escapeHTML($core->blog->name) => '',
-		'<span class="page-title">'.__('Widgets').'</span>' => ''
-	));
+echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Widgets').'</span></h2>';
 
 # All widgets
 echo
 '<form id="listWidgets" action="'.$p_url.'" method="post"  class="widgets">'.
-'<h3>'.__('Available widgets').'</h3>'.
-__('Move widgets from this list to one of the sidebars.').
+'<fieldset><legend>'.__('Available widgets').'</legend>'.
 '<div id="widgets">';
 
@@ -206,7 +201,7 @@
 	'<div>'.form::hidden(array('w[void][0][id]'),html::escapeHTML($w->id())).
 	'<p class="widget-name">'.form::field(array('w[void][0][order]'),2,3,0,'hideControl').' '.
-	$w->name().($w->desc() != '' ? ' <span class="form-note">'.__($w->desc()).'</span>' : '').'</p>'.
-	'<p class="js-remove"><label class="classic">'.__('Append to:').'</label> '.
-	form::combo(array('addw['.$w->id().']'),$append_combo).'</p>'.
+	$w->name().($w->desc() != '' ? ' <span class="form-note">('.__($w->desc()).')</span>' : '').'</p>'.
+	'<p class="js-remove"><label class="classic">'.__('Append to:').' '.
+	form::combo(array('addw['.$w->id().']'),$append_combo).'</label></p>'.
 	'<div class="widgetSettings">'.$w->formSettings('w[void][0]',$j).'</div>'.
 	'</div>';
@@ -216,4 +211,5 @@
 echo
 '</div>'.
+'</fieldset>'.
 '<p><input type="submit" class="js-remove" name="append" value="'.__('Add widgets to sidebars').'" />'.
 $core->formNonce().'</p>'.
@@ -223,5 +219,5 @@
 # Nav sidebar
 echo
-'<div id="sidebarNav" class="widgets fieldset">'.
+'<div id="sidebarNav" class="widgets">'.
 sidebarWidgets('dndnav',__('Navigation sidebar'),$widgets_nav,'nav',$__default_widgets['nav'],$j).
 '</div>';
@@ -229,5 +225,5 @@
 # Extra sidebar
 echo
-'<div id="sidebarExtra" class="widgets fieldset">'.
+'<div id="sidebarExtra" class="widgets">'.
 sidebarWidgets('dndextra',__('Extra sidebar'),$widgets_extra,'extra',$__default_widgets['extra'],$j).
 '</div>';
@@ -235,5 +231,5 @@
 # Custom sidebar
 echo
-'<div id="sidebarCustom" class="widgets fieldset">'.
+'<div id="sidebarCustom" class="widgets">'.
 sidebarWidgets('dndcustom',__('Custom sidebar'),$widgets_custom,'custom',$__default_widgets['custom'],$j).
 '</div>';
@@ -252,5 +248,5 @@
 'drag it from the Available widgets list on the left to one of the sidebars on the right of this page. You can order '.
 'your widgets in a sidebar by dragging them up or down. You must update sidebars to apply your changes.').'</p>'.
-'<p>'.__('Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next '.
+'<p>'.__('Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next '.
 'to their name.').'</p>'.
 '<p>'.__('Reset sidebars to get back to default widgets installation.').'</p>'.
@@ -316,5 +312,5 @@
 function sidebarWidgets($id,$title,$widgets,$pr,$default_widgets,&$j)
 {
-	$res = '<h3>'.$title.'</h3><div id="'.$id.'">';
+	$res = '<fieldset><legend>'.$title.'</legend><div id="'.$id.'">';
 	
 	if (!($widgets instanceof dcWidgets))
@@ -335,5 +331,5 @@
 		'<div>'.form::hidden(array($iname.'[id]'),html::escapeHTML($w->id())).
 		'<p class="widget-name">'.form::field(array($iname.'[order]'),2,3,(string) $i,'js-hide','',0,'title="'.__('order').'"').' '.
-		$w->name().($w->desc() != '' ? ' <!-- <span class="form-note">'.__($w->desc()).'</span> -->' : '').'</p>'.
+		$w->name().($w->desc() != '' ? ' <span class="form-note">('.__($w->desc()).')</span>' : '').'</p>'.
 		'<p class="removeWidget js-remove"><label class="classic">'.
 		form::checkbox(array($iname.'[_rem]'),'1',0).' '.__('Remove widget').
@@ -346,5 +342,5 @@
 	}
 	
-	$res .= '</div>';
+	$res .= '</div></fieldset>';
 	
 	return $res;
Index: plugins/widgets/style.css
===================================================================
--- plugins/widgets/style.css	(revision 1483)
+++ plugins/widgets/style.css	(revision 665)
@@ -1,51 +1,53 @@
 #listWidgets {
 	float: left;
-	width: 45%;
-	background: #eee;
-	padding: 1.5em 1%; 
-	border: 1px solid #ccc;
-	margin-left: 1.5em;
-}
-#widgets .widget-name {
-	background: #fff;
-	min-height: 3em;
-}
-#listWidgets h3 {
-	color: #333;
+	width: 33%;
 }
 
 #sidebarsWidgets {
 	float: left;
-	width: 45%;
-	margin-left: 3%;
-	padding: 0 1%;
+	width: 65%;
+	margin-left: 1%;
 }
+#sidebarNav {
+	float: left;
+	width: 50%;
+	margin-left: 0%;
+}
+#sidebarExtra {
+	float: left;
+	width: 49%;
+	margin-left: 1%;
+}
+#sidebarCustom {
+	float: left;
+	width: 100%;
+}
+
 #sidebarsControl {
 	clear: left;
 }
-.widgets.fieldset {
-	margin-bottom: 2em;
-}
 
-#widgets, #dndnav, #dndextra, #dndcustom {
+#widgets, #dndnav, #dndextra {
 	padding: 1em 0;
 }
 
-.widget-name {
-	background: #eef;
+.widgets fieldset {
+	border: 1px solid #999;
+}
+.widgets legend {
+	border: 1px solid #999;
+}
+
+.widgets p.widget-name {
+	background: #E5E3DA;
 	color: #000;
-	padding: 4px 6px;
+	padding: 4px;
 	margin: 0.5em 0 0 0;
 	border-width: 1px 1px 1px 1px;
 	border-style: solid;
-	border-color: #999;
+	border-color: #666;
 	font-weight: bold;
 }
-.widget-name span {
-	display: block;
-	font-style: normal;
-	font-size: 1.1rem;
-}
-.widget-name img {
+.widgets p.widget-name img {
 	cursor: pointer;
 	margin-bottom: -1px;
@@ -56,6 +58,6 @@
 	border-style: solid;
 	border-color: #666;
-	padding: 4px 6px;
-	background: #f5f5f5;
+	padding: 4px;
+	background: #E5E3DA;
 }
 
Index: themes/customCSS/_config.php
===================================================================
--- themes/customCSS/_config.php	(revision 1454)
+++ themes/customCSS/_config.php	(revision 1179)
@@ -34,5 +34,5 @@
 
 echo
-'<p class="area"><label>'.__('Style sheet:').'</label> '.
-form::textarea('css',60,20,html::escapeHTML($css_content)).'</p>';
+'<p class="area"><label>'.__('Style sheet:').' '.
+form::textarea('css',60,20,html::escapeHTML($css_content)).'</label></p>';
 ?>
