Index: .hgsubstate
===================================================================
--- .hgsubstate	(revision 1486)
+++ .hgsubstate	(revision 1327)
@@ -1,1 +1,1 @@
-716e99c54652d08c2e4395d5179e817e0f98182d inc/libs/clearbricks
+106856ffd55945d2be60e5f623c587c3fb356447 inc/libs/clearbricks
Index: CHANGELOG
===================================================================
--- CHANGELOG	(revision 1350)
+++ CHANGELOG	(revision 1216)
@@ -1,19 +1,2 @@
-Dotclear 2.5.2 - 2013-08-14
-===========================================================
-* Security fix: Fixed potential XSS
-* Bugfix: l10n Clearbricks library
-* <tpl:LoopPosition> now works <tpl:Attachments>
-* Dotclear update check may now be forced (ignoring cache)
-* Enforce integration of daInstaller plugin
-* Tags link button is now available on page editor
-* Default cache age is now 1 week instead of 2 hours
-* Quick entry dashboard module is not activated by default on new installation
-* New template {{tpl:BlogParentThemeURL}} (return URL of parent theme of blog's theme if any, URL of blog's theme otherwise)
-* Fix post comments number on comments deletion
-* Fix order of backup files
-* Minor enhancements
-* Various bug fixes
-* Various cosmetic adjustments
-
 Dotclear 2.5.1 - 2013-07-20
 ===========================================================
Index: Makefile
===================================================================
--- Makefile	(revision 1451)
+++ Makefile	(revision 1046)
@@ -69,5 +69,4 @@
 	find $(DC)/admin/js/jquery/*.js -exec ./build-tools/min-js.php \{\} \;
 	find $(DC)/admin/js/jsToolBar/*.js -exec ./build-tools/min-js.php \{\} \;
-	find $(DC)/admin/js/jsUpload/*.js -exec ./build-tools/min-js.php \{\} \;
 	find $(DC)/admin/js/tool-man/*.js -exec ./build-tools/min-js.php \{\} \;
 	find $(DC)/plugins -name '*.js' -exec ./build-tools/min-js.php \{\} \;
Index: admin/auth.php
===================================================================
--- admin/auth.php	(revision 1484)
+++ admin/auth.php	(revision 1310)
@@ -334,5 +334,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 +343,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 +357,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 +371,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>';
 		}
@@ -404,5 +403,5 @@
 			echo 
 			form::hidden('safe_mode',1).
-			'</div>';
+			'</fieldset>';
 		}
 		else {
Index: admin/blog.php
===================================================================
--- admin/blog.php	(revision 1482)
+++ admin/blog.php	(revision 1334)
@@ -67,27 +67,27 @@
 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'));
+	
+	dcPage::breadcrumb(
+		array(
+			__('System') => '',
+			__('Blogs') => 'blogs.php',
+			'<span class="page-title">'.__('New blog').'</span>' => ''
+		));
 	
 	echo
-	'<form action="blog.php" method="post" id="blog-form">'.
+	'<form action="blog.php" method="post" id="blog-form" class="fieldset">'.
 	
-	'<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>'.
+	$core->formNonce().
+	'<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> '.
Index: admin/blog_del.php
===================================================================
--- admin/blog_del.php	(revision 1399)
+++ admin/blog_del.php	(revision 1334)
@@ -49,5 +49,8 @@
 }
 
-dcPage::open(__('Delete a blog'),'',
+dcPage::open(__('Delete a blog'));
+
+if (!$core->error->flag())
+{
 	dcPage::breadcrumb(
 		array(
@@ -55,9 +58,6 @@
 			__('Blogs') => 'blogs.php',
 			'<span class="page-title">'.__('Delete a blog').'</span>' => ''
-		))
-);
+		));
 
-if (!$core->error->flag())
-{
 	echo
 	'<p class="message">'.__('Warning').'</p>'.
@@ -69,6 +69,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 1334)
@@ -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,24 @@
 	$core->callBehavior('adminBlogPreferencesHeaders').
 	
-	dcPage::jsPageTabs(),
-	$breadcrumb
+	dcPage::jsPageTabs()
 );
 
 if ($blog_id)
 {
+	if ($standalone) {
+		dcPage::breadcrumb(
+			array(
+				html::escapeHTML($blog_name) => '',
+				'<span class="page-title">'.__('Blog settings').'</span>' => ''
+			));
+	} else {
+		dcPage::breadcrumb(
+			array(
+				__('System') => '',
+				__('Blogs') => 'blogs.php',
+				'<span class="page-title">'.__('Blog settings').' : '.html::escapeHTML($blog_name).'</span>' => ''
+			));
+	}
+	
 	if (!empty($_GET['add'])) {
 		dcPage::message(__('Blog has been successfully created.'));
@@ -303,5 +302,5 @@
 	
 	echo
-	'<div class="fieldset"><h4>'.__('Blog details').'</h4>'.
+	'<fieldset><legend>'.__('Blog details').'</legend>'.
 	$core->formNonce();
 	
@@ -309,6 +308,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 +315,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 +334,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 +392,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 +419,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 +473,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 +491,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 +498,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 +511,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 +525,5 @@
 	}
 	
-	echo '</div>';
+	echo '</fieldset>';
 	
 	
@@ -547,7 +547,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 1334)
@@ -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,18 @@
 }
 
+dcPage::open(__('Blog appearance'),
+	(!$theme_conf_mode ? dcPage::jsLoad('js/_blog_theme.js') : '').
+	dcPage::jsPageTabs($default_tab).
+	dcPage::jsColorPicker()
+);
+
 if (!$theme_conf_mode)
 {
-	$breadcrumb = dcPage::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
-);
-
-if (!$theme_conf_mode)
-{
+	
 	if (!empty($_GET['upd'])) {
 		dcPage::message(__('Theme has been successfully changed.'));
@@ -244,11 +233,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 +268,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 +285,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>';
 		}
@@ -336,4 +334,11 @@
 	$core->themes->loadModuleL10Nresources($core->blog->settings->system->theme,$_lang);
 
+	dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			__('Blog appearance') => 'blog_theme.php',
+			'<span class="page-title">'.__('Theme configuration').'</span>' => ''
+		));
+
 	echo
 	'<p><a class="back" href="blog_theme.php">'.__('back').'</a></p>';
Index: admin/blogs.php
===================================================================
--- admin/blogs.php	(revision 1426)
+++ admin/blogs.php	(revision 1334)
@@ -73,15 +73,15 @@
 	$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.'));
 }
+
+dcPage::breadcrumb(
+	array(
+		__('System') => '',
+		'<span class="page-title">'.__('List of blogs').'</span>' => ''
+	));
 
 if (!$core->error->flag())
@@ -92,29 +92,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 +131,5 @@
 		$pager->var_page = 'page';
 		
-		echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+		echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 		
 		echo
@@ -147,5 +149,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 1334)
@@ -31,5 +31,5 @@
 		$mov_cat = $mov_cat ? $mov_cat : null;
 		if ($mov_cat !== null) {
-			$c = $core->blog->getCategory((integer) $_POST['mov_cat']);
+			$c = $core->blog->getCategory((integer) $_POST['del_cat']);
 			if ($c->isEmpty()) {
 				throw new Exception(__('This category does not exist.'));
@@ -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,10 @@
 	dcPage::message(__('The category has been successfully moved.'));
 }
+
+dcPage::breadcrumb(
+	array(
+		html::escapeHTML($core->blog->name) => '',
+		'<span class="page-title">'.__('Categories').'</span>' => ''
+	));
 
 $rs = $core->blog->getCategories(array('post_type'=>'post'));
@@ -144,50 +145,66 @@
 echo '</div>';
 
-$categories_combo = array();
+echo '<div class="col">'.
+
+'<form action="category.php" method="post">'.
+'<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).'</label></p>'.
+'<p><label for="new_cat_parent">'.__('Parent:').' '.
+'<select id="new_cat_parent" name="new_cat_parent">'.
+'<option value="0">'.__('Top level').'</option>';
+while ($rs->fetch()) {
+	echo '<option value="'.$rs->cat_id.'">'.
+		str_repeat('&nbsp;&nbsp;',$rs->level-1).($rs->level-1 == 0 ? '' : '&bull; ').
+		html::escapeHTML($rs->cat_title).'</option>';
+}
+echo
+'</select></label></p>'.
+'<p><input type="submit" value="'.__('Create').'" /></p>'.
+$core->formNonce().
+'</fieldset>'.
+'</form>';
+
 if (!$rs->isEmpty())
 {
-	while ($rs->fetch()) {
-		$catparents_combo[] = $categories_combo[] = new formSelectOption(
-			str_repeat('&nbsp;&nbsp;',$rs->level-1).($rs->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($rs->cat_title),
-			$rs->cat_id
-		);
-	}
-}
-
-echo '<div class="col">'.
-
-'<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> '.
-form::combo('new_cat_parent',array_merge(array(__('(No cat)') => 0),$categories_combo),'','maximal').
-'</p>'.
-'<p><input type="submit" value="'.__('Create').'" />'.
-$core->formNonce().'</p>'.
-
-'</form>';
-
-if (!$rs->isEmpty())
-{
+	$cats = array();
+	$dest = array('&nbsp;' => '');
+	$l = $rs->level;
+	$full_name = array($rs->cat_title);
+	while ($rs->fetch())
+	{
+		if ($rs->level < $l) {
+			$full_name = array();
+		} elseif ($rs->level == $l) {
+			array_pop($full_name);
+		}
+		$full_name[] = html::escapeHTML($rs->cat_title);
+		
+		$cats[implode(' / ',$full_name)] = $rs->cat_id;
+		$dest[implode(' / ',$full_name)] = $rs->cat_id;
+		
+		$l = $rs->level;
+	}
+	
 	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',$cats).'</label></p> '.
+	'<p><label for="mov_cat">'.__('And choose the category which will receive its entries:').' '.
+	form::combo('mov_cat',$dest).'</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 1334)
@@ -157,4 +157,14 @@
 $title = $cat_id ? html::escapeHTML($cat_title) : __('New category');
 
+dcPage::open($title,
+	dcPage::jsConfirmClose('category-form').
+	dcPage::jsToolBar().
+	dcPage::jsLoad('js/_category.js')
+);
+
+if (!empty($_GET['upd'])) {
+	dcPage::message(__('Category has been successfully updated.'));
+}
+
 $elements = array(
 	html::escapeHTML($core->blog->name) => '',
@@ -167,22 +177,12 @@
 }
 $elements['<span class="page-title">'.$title.'</span>'] = '';
-
-dcPage::open($title,
-	dcPage::jsConfirmClose('category-form').
-	dcPage::jsToolBar().
-	dcPage::jsLoad('js/_category.js'),
-	dcPage::breadcrumb($elements)
-);
-
-if (!empty($_GET['upd'])) {
-	dcPage::message(__('Category has been successfully updated.'));
-}
+dcPage::breadcrumb($elements);
 
 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 +202,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 +216,5 @@
 $core->formNonce().
 '</p>'.
+'</fieldset>'.
 '</form>';
 
@@ -222,14 +222,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 +239,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 +246,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 1334)
@@ -160,6 +160,29 @@
 /* DISPLAY
 -------------------------------------------------------- */
-if ($comment_id) {
-	$breadcrumb = dcPage::breadcrumb(
+dcPage::open(__('Edit comment'),
+	dcPage::jsConfirmClose('comment-form').
+	dcPage::jsToolBar().
+	dcPage::jsLoad('js/_comment.js').
+	# --BEHAVIOR-- adminCommentHeaders
+	$core->callBehavior('adminCommentHeaders')
+);
+
+if ($comment_id)
+{
+	if (!empty($_GET['upd'])) {
+		dcPage::message(__('Comment has been successfully updated.'));
+	}
+	
+	$comment_mailto = '';
+	if ($comment_email)
+	{
+		$comment_mailto = '<a href="mailto:'.html::escapeHTML($comment_email)
+		.'?subject='.rawurlencode(sprintf(__('Your comment on my blog %s'),$core->blog->name))
+		.'&body='
+		.rawurlencode(sprintf(__("Hi!\n\nYou wrote a comment on:\n%s\n\n\n"),$rs->getPostURL()))
+		.'">'.__('Send an e-mail').'</a>';
+	}
+	
+	dcPage::breadcrumb(
 		array(
 			html::escapeHTML($core->blog->name) => '',
@@ -167,66 +190,29 @@
 			'<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').
-	dcPage::jsToolBar().
-	dcPage::jsLoad('js/_comment.js').
-	# --BEHAVIOR-- adminCommentHeaders
-	$core->callBehavior('adminCommentHeaders'),
-	$breadcrumb
-);
-
-if ($comment_id)
-{
-	if (!empty($_GET['upd'])) {
-		dcPage::message(__('Comment has been successfully updated.'));
-	}
-	
-	$comment_mailto = '';
-	if ($comment_email)
-	{
-		$comment_mailto = '<a href="mailto:'.html::escapeHTML($comment_email)
-		.'?subject='.rawurlencode(sprintf(__('Your comment on my blog %s'),$core->blog->name))
-		.'&body='
-		.rawurlencode(sprintf(__("Hi!\n\nYou wrote a comment on:\n%s\n\n\n"),$rs->getPostURL()))
-		.'">'.__('Send an e-mail').'</a>';
-	}
 
 	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 1334)
@@ -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,11 @@
 $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);
+
+dcPage::breadcrumb(
+	array(
+		html::escapeHTML($core->blog->name) => '',
+		'<span class="page-title">'.__('Comments and trackbacks').'</span>' => ''
+	));
 
 if (!$core->error->flag())
@@ -183,4 +183,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 +237,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 +246,4 @@
 		
 		echo
-			'<p class="no-margin">'.
 			$core->formNonce().
 			'<input name="delete_all_spam" class="delete" type="submit" value="'.__('Delete all spams').'" /></p>';
@@ -210,44 +254,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 +265,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 1340)
@@ -59,7 +59,7 @@
 if (!$core->auth->user_prefs->dashboard->prefExists('quickentry')) {
 	if (!$core->auth->user_prefs->dashboard->prefExists('quickentry',true)) {
-		$core->auth->user_prefs->dashboard->put('quickentry',false,'boolean','',null,true);
-	}
-	$core->auth->user_prefs->dashboard->put('quickentry',false,'boolean');
+		$core->auth->user_prefs->dashboard->put('quickentry',true,'boolean','',null,true);
+	}
+	$core->auth->user_prefs->dashboard->put('quickentry',true,'boolean');
 }
 
@@ -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,12 @@
 	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);
-	}
-}
+dcPage::breadcrumb(
+	array(
+	'<span class="page-title">'.__('Dashboard').' : '.html::escapeHTML($core->blog->name).'</span>' => ''
+	),
+	false);
 
 if ($core->auth->getInfo('user_default_blog') != $core->blog->id && $core->auth->blog_count > 1) {
@@ -268,4 +250,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 +287,5 @@
 	if ($i->count() > 0)
 	{
-		$dashboardItems .= '<div class="db-item">';
+		$dashboardItems .= '<div>';
 		foreach ($i as $v) {
 			$dashboardItems .= $v;
@@ -309,15 +308,13 @@
 	if ($core->auth->check('usage,contentadmin',$core->blog->id))
 	{
-		# Getting categories
-		$categories_combo = array(__('(No cat)') => '');
+		$categories_combo = array('&nbsp;' => '');
 		try {
 			$categories = $core->blog->getCategories(array('post_type'=>'post'));
-			if (!$categories->isEmpty()) {
-				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
-					);
-				}
+			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) { }
@@ -326,9 +323,9 @@
 		'<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> '.
@@ -337,14 +334,4 @@
 		'<p><label for="cat_id" class="classic">'.__('Category:').' '.
 		form::combo('cat_id',$categories_combo).'</label></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>'
-			: '').
 		'<p><input type="submit" value="'.__('Save').'" name="save" /> '.
 		($core->auth->check('publish',$core->blog->id)
@@ -358,4 +345,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 1280)
@@ -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 1140)
@@ -61,8 +61,4 @@
 			});
 		}
-		$('#new_cat').toggleWithLegend(
-			$('#new_cat').parent().children().not('#new_cat'),
-			{} // no cookie on new category as we don't use this every day
-		);
 	}
 
Index: admin/js/_media.js
===================================================================
--- admin/js/_media.js	(revision 1461)
+++ admin/js/_media.js	(revision 1325)
@@ -57,8 +57,5 @@
 		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();
Index: admin/js/_post.js
===================================================================
--- admin/js/_post.js	(revision 1468)
+++ admin/js/_post.js	(revision 1280)
@@ -115,8 +115,4 @@
 			hide: $('#post_notes').val() == ''
 		});
-		$('#new_cat').toggleWithLegend(
-			$('#new_cat').parent().children().not('#new_cat'),
-			{} // no cookie on new category as we don't use this every day
-		);
 		$('#post_lang').parent().toggleWithLegend($('#post_lang'),{
 			cookie: 'dcx_post_lang'
@@ -126,19 +122,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 +149,4 @@
 		var a = document.createElement('a');
 		a.href = '#';
-		a.className = 'button';
 		$(a).click(function() {
 			var params = {
Index: admin/js/_posts_actions.js
===================================================================
--- admin/js/_posts_actions.js	(revision 1419)
+++ admin/js/_posts_actions.js	(revision 1035)
@@ -6,7 +6,3 @@
 		matchContains: true
 	});
-	$('#new_cat').toggleWithLegend(
-		$('#new_cat').parent().children().not('#new_cat'),
-		{} // no cookie on new category as we don't use this every day
-	);
 });
Index: dmin/js/_update.js
===================================================================
--- admin/js/_update.js	(revision 1462)
+++ 	(revision )
@@ -1,5 +1,0 @@
-$(function() {
-	$('form input[type=submit][name=b_del]').click(function(){
- 		return window.confirm(dotclear.msg.confirm_delete_backup);
- 	});
-});
Index: admin/js/_users_actions.js
===================================================================
--- admin/js/_users_actions.js	(revision 1449)
+++ admin/js/_users_actions.js	(revision 935)
@@ -1,5 +1,4 @@
 jQuery.fn.updatePermissionsForm = function() {
 	return this.each(function() {
-		
 		var perms = {};
 		var re = /^perm\[(.+?)\]\[(.+?)\]$/;
@@ -13,5 +12,4 @@
 				continue;
 			}
-			var prop;
 			prop = e.name.match(re);
 			if (!prop) {
@@ -22,70 +20,37 @@
 			}
 			perms[prop[1]][prop[2]] = e;
-			
-			// select related permissions for admin
-			if (prop[2] == 'admin') {
-				if (e.checked) {
-					admin(e,perms,re);
+		}
+		
+		// Update elements status
+		var E;
+		for (blog in perms) {
+			for (perm in perms[blog]) {
+				E = perms[blog][perm];
+				E.onclick = function() {};
+				
+				if (perm == 'admin' && !E.disabled) {
+					perms[blog]['usage'].disabled = E.checked;
+					perms[blog]['publish'].disabled = E.checked;
+					perms[blog]['delete'].disabled = E.checked;
+					perms[blog]['contentadmin'].disabled = E.checked;
+					perms[blog]['categories'].disabled = E.checked;
+					perms[blog]['media'].disabled = E.checked;
+					perms[blog]['media_admin'].disabled = E.checked;
+					E.onclick = function() { $(this.form).updatePermissionsForm(); };
+				} else if (perm == 'contentadmin' && !E.disabled) {
+					perms[blog]['usage'].checked = E.checked;
+					perms[blog]['publish'].checked = E.checked;
+					perms[blog]['delete'].checked = E.checked;
+					perms[blog]['usage'].disabled = E.checked;
+					perms[blog]['publish'].disabled = E.checked;
+					perms[blog]['delete'].disabled = E.checked;
+					E.onclick = function() { $(this.form).updatePermissionsForm(); };
+				} else if (perm == 'media_admin' && !E.disabled) {
+					perms[blog]['media'].checked = E.checked;
+					perms[blog]['media'].disabled = E.checked;
+					E.onclick = function() { $(this.form).updatePermissionsForm(); };
 				}
-				$(e).click(function(){
-					admin(this,perms,re);
-				});
-			// select related permissions for content admin
-			} else if (prop[2] == 'contentadmin') {
-				if (e.checked) {
-					contentadmin(e,perms,re);
-				}
-				$(e).click(function(){
-					contentadmin(this,perms,re);
-				});
-			// select related permissions for media admin
-			} else if (prop[2] == 'media_admin') {
-				if (e.checked) {
-					mediaadmin(e,perms,re);
-				}
-				$(e).click(function(){
-					mediaadmin(this,perms,re);
-				});
 			}
 		}
-		
-		function admin(E,perms,re) {
-					P = E.name.match(re);
-					
-					perms[P[1]]['usage'].checked = E.checked;
-					perms[P[1]]['publish'].checked = E.checked;
-					perms[P[1]]['delete'].checked = E.checked;
-					perms[P[1]]['contentadmin'].checked = E.checked;
-					perms[P[1]]['categories'].checked = E.checked;
-					perms[P[1]]['media'].checked = E.checked;
-					perms[P[1]]['media_admin'].checked = E.checked;
-					perms[P[1]]['usage'].disabled = E.checked;
-					perms[P[1]]['publish'].disabled = E.checked;
-					perms[P[1]]['delete'].disabled = E.checked;
-					perms[P[1]]['contentadmin'].disabled = E.checked;
-					perms[P[1]]['categories'].disabled = E.checked;
-					perms[P[1]]['media'].disabled = E.checked;
-					perms[P[1]]['media_admin'].disabled = E.checked;
-		}
-		
-		function contentadmin(E,perms,re) {
-					P = E.name.match(re);
-					
-					perms[P[1]]['usage'].checked = E.checked;
-					perms[P[1]]['publish'].checked = E.checked;
-					perms[P[1]]['delete'].checked = E.checked;
-					perms[P[1]]['usage'].disabled = E.checked;
-					perms[P[1]]['publish'].disabled = E.checked;
-					perms[P[1]]['delete'].disabled = E.checked;
-		}
-		
-		function mediaadmin(E,perms,re) {
-					P = E.name.match(re);
-					
-					perms[P[1]]['media'].checked = E.checked;
-					perms[P[1]]['media'].disabled = E.checked;
-		}
-		
-		
 	});
 };
Index: admin/js/common.js
===================================================================
--- admin/js/common.js	(revision 1395)
+++ admin/js/common.js	(revision 1303)
@@ -224,5 +224,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: dmin/js/jquery/jquery.pwstrength.js
===================================================================
--- admin/js/jquery/jquery.pwstrength.js	(revision 1371)
+++ 	(revision )
@@ -1,66 +1,0 @@
-/**
- * jquery.pwstrength http://matoilic.github.com/jquery.pwstrength
- *
- * @version v0.1.1
- * @author Mato Ilic <info@matoilic.ch>
- * @copyright 2013 Mato Ilic
- *
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- */
-;(function($) {
-    $.pwstrength = function(password) {
-        var score = 0, length = password.length, upperCase, lowerCase, digits, nonAlpha;
-        
-        if(length < 5) score += 0;
-        else if(length < 8) score += 5;
-        else if(length < 16) score += 10;
-        else score += 15;
-        
-        lowerCase = password.match(/[a-z]/g);
-        if(lowerCase) score += 1;
-        
-        upperCase = password.match(/[A-Z]/g);
-        if(upperCase) score += 5;
-        
-        if(upperCase && lowerCase) score += 2;
-        
-        digits = password.match(/\d/g);
-        if(digits && digits.length > 1) score += 5;
-        
-        nonAlpha = password.match(/\W/g)
-        if(nonAlpha) score += (nonAlpha.length > 1) ? 15 : 10;
-        
-        if(upperCase && lowerCase && digits && nonAlpha) score += 15;
-
-        if(password.match(/\s/)) score += 10;
-
-        if(score < 15) return 0;
-        if(score < 20) return 1;
-        if(score < 35) return 2;
-        if(score < 50) return 3;
-        return 4;
-    };
-    
-    function updateIndicator(event) {
-        var strength = $.pwstrength($(this).val()), options = event.data, klass;
-        klass = options.classes[strength];
-        
-        options.indicator.removeClass(options.indicator.data('pwclass'));
-        options.indicator.data('pwclass', klass);
-        options.indicator.addClass(klass);
-        options.indicator.find(options.label).html(options.texts[strength]);
-    }
-    
-    $.fn.pwstrength = function(options) {
-        var options = $.extend({
-            label: '.label',
-            classes: ['pw-very-weak', 'pw-weak', 'pw-mediocre', 'pw-strong', 'pw-very-strong'],
-            texts: ['very weak', 'weak', 'mediocre', 'strong', 'very strong']
-        }, options || {});
-        options.indicator = $('#' + this.data('indicator'));
-        
-        return this.keyup(options, updateIndicator);
-    };
-})(jQuery);
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 1334)
@@ -129,11 +129,12 @@
 -------------------------------------------------------- */
 dcPage::open(__('Languages management'),
-	dcPage::jsLoad('js/_langs.js'),
-	dcPage::breadcrumb(
+	dcPage::jsLoad('js/_langs.js')
+);
+
+dcPage::breadcrumb(
 	array(
 		__('System') => '',
 		'<span class="page-title">'.__('Languages management').'</span>' => ''
-	))
-);
+	));
 
 if (!empty($_GET['removed'])) {
@@ -222,15 +223,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 +242,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 1334)
@@ -203,12 +203,12 @@
 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'));
+	
+	dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			__('Media manager') => '',
+			'<span class="page-title">'.__('confirm removal').'</span>' => ''
+		));
 	
 	echo
@@ -232,57 +232,55 @@
 $user_ui_enhanceduploader = $core->auth->user_prefs->interface->enhanceduploader;
 
+call_user_func($open_f,__('Media manager'),
+	dcPage::jsLoad('js/_media.js').
+	($core_media_writable ? dcPage::jsUpload(array('d='.$d)) : '')
+	);
+
+if (!empty($_GET['mkdok'])) {
+	dcPage::message(__('Directory has been successfully created.'));
+}
+
+if (!empty($_GET['upok'])) {
+	dcPage::message(__('Files have been successfully uploaded.'));
+}
+
+if (!empty($_GET['rmfok'])) {
+	dcPage::message(__('File has been successfully removed.'));
+}
+
+if (!empty($_GET['rmdok'])) {
+	dcPage::message(__('Directory has been successfully removed.'));
+}
+
+if (!empty($_GET['rebuildok'])) {
+	dcPage::message(__('Directory has been successfully rebuilt.'));
+}
+
+if (!empty($_GET['unzipok'])) {
+	dcPage::message(__('Zip file has been successfully extracted.'));
+}
 
 if (!isset($core->media)) {
-	$breadcrumb = dcPage::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(
+	$breadcrumb = $core->media->breadCrumb(html::escapeURL($page_url).'&amp;d=%s','<span class="page-title">%s</span>');
+	if ($breadcrumb == '') {
+		dcPage::breadcrumb(
 			array(
 				html::escapeHTML($core->blog->name) => '',
 				'<span class="page-title">'.__('Media manager').'</span>' => ''
-			),!$popup);
+			));
 	} else {
-		$breadcrumb = dcPage::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
-	);
-
-if (!empty($_GET['mkdok'])) {
-	dcPage::message(__('Directory has been successfully created.'));
-}
-
-if (!empty($_GET['upok'])) {
-	dcPage::message(__('Files have been successfully uploaded.'));
-}
-
-if (!empty($_GET['rmfok'])) {
-	dcPage::message(__('File has been successfully removed.'));
-}
-
-if (!empty($_GET['rmdok'])) {
-	dcPage::message(__('Directory has been successfully removed.'));
-}
-
-if (!empty($_GET['rebuildok'])) {
-	dcPage::message(__('Directory has been successfully rebuilt.'));
-}
-
-if (!empty($_GET['unzipok'])) {
-	dcPage::message(__('Zip file has been successfully extracted.'));
+				$breadcrumb => ''
+			));
+	}
 }
 
@@ -317,6 +315,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 +322,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 +330,5 @@
 	
 	echo
-	'<p class="clear pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+	'<p class="clear">'.__('Page(s)').' : '.$pager->getLinks().'</p>';
 }
 if (!isset($pager)) {
@@ -354,11 +352,10 @@
 
 	echo
-	'<div class="fieldset">'.
-	'<h3>'.__('Add files').'</h3>'.
+	'<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 id="fileupload" action="'.html::escapeURL($page_url).'" method="POST" enctype="multipart/form-data">'.
+	'<div>'.form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE).
+	$core->formNonce().'</div>'.
+	'<div class="fileupload-ctrl"><div class="queue-message"></div><div class="files"></div></div>';
 
 	echo
@@ -367,12 +364,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 +380,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>'.
+	'<div>'.form::hidden(array('d'),$d).'</div>'.
+	'</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>';
 	
Index: admin/media_item.php
===================================================================
--- admin/media_item.php	(revision 1499)
+++ admin/media_item.php	(revision 1334)
@@ -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,11 @@
 	dcPage::message(__('Thumbnails have been successfully updated.'));
 }
+
+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>' => ''
+	));
 
 # Insertion popup
@@ -348,6 +349,5 @@
 
 echo
-'<div id="media-details">'.
-'<div class="near-icon">';
+'<div id="media-details">';
 
 if ($file->media_image)
@@ -358,4 +358,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 +377,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 +401,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 +487,4 @@
 }
 
-echo '</div>';
-
-echo '<h3>'.__('Updates and modifications').'</h3>';
-
 if ($file->editable && $core_media_writable)
 {
@@ -496,11 +492,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 +509,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 +517,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 +554,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 1334)
@@ -81,12 +81,12 @@
 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'));
 	
+	dcPage::breadcrumb(
+		array(
+			__('System') => '',
+			'<span class="page-title">'.__('Plugin not found').'</span>' => ''
+		));
+
 	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 1334)
@@ -191,11 +191,12 @@
 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)
 );
+
+dcPage::breadcrumb(
+	array(
+		__('System') => '',
+		'<span class="page-title">'.__('Plugins management').'</span>' => ''
+	));
 
 if (!empty($_GET['removed'])) {
@@ -236,8 +237,8 @@
 
 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 +355,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().
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 1508)
+++ admin/post.php	(revision 1335)
@@ -94,6 +94,4 @@
 if (!empty($_REQUEST['id']))
 {
-	$page_title = __('Edit entry');
-	
 	$params['post_id'] = $_REQUEST['id'];
 	
@@ -125,4 +123,6 @@
 		$post_open_tb = (boolean) $post->post_open_tb;
 		
+		$page_title = __('Edit entry');
+		
 		$can_edit_post = $post->isEditable();
 		$can_delete= $post->isDeletable();
@@ -133,5 +133,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 +140,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);
@@ -218,22 +218,4 @@
 if (!empty($_POST) && !empty($_POST['save']) && $can_edit_post && !$bad_dt)
 {
-	# 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);
-		
-		$cat_id = $core->blog->addCategory($cur_cat, (integer) $parent_cat);
-		
-		# --BEHAVIOR-- adminAfterCategoryCreate
-		$core->callBehavior('adminAfterCategoryCreate', $cur_cat, $cat_id);
-	}
-	
 	$cur = $core->con->openCursor($core->prefix.'post');
 	
@@ -302,18 +284,4 @@
 }
 
-# Getting categories
-$categories_combo = array(__('(No cat)') => '');
-try {
-	$categories = $core->blog->getCategories(array('post_type'=>'post'));
-	if (!$categories->isEmpty()) {
-		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
-			);
-		}
-	}
-} catch (Exception $e) { }
-
 /* DISPLAY
 -------------------------------------------------------- */
@@ -325,28 +293,4 @@
 	$default_tab = 'comments';
 }
-
-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'),
@@ -360,11 +304,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,6 +334,33 @@
 }
 
+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;');
+	$page_title_edit = sprintf($edit_entry_str, html::escapeHTML($post_title)).' '.$img_status;
+}
+dcPage::breadcrumb(
+	array(
+		html::escapeHTML($core->blog->name) => '',
+		__('Entries') => 'posts.php',
+		'<span class="page-title">'.($post_id ? $page_title_edit : $page_title).'</span>' => ''
+	));
+
 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 class="preview_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>';
 }
 if ($post_id)
@@ -418,136 +383,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 '<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:').'</label>'.
+	form::field('post_title',20,255,html::escapeHTML($post_title),'maximal').
+	'</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">'.__('Personal 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 +440,62 @@
 	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>'.
+	
+	'<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 +528,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 +593,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> '.
@@ -733,9 +645,9 @@
 	echo
 	'<table class="comments-list"><tr>'.
-	'<th colspan="2" class="first">'.__('Author').'</th>'.
+	'<th colspan="2">'.__('Author').'</th>'.
 	'<th>'.__('Date').'</th>'.
 	'<th class="nowrap">'.__('IP address').'</th>'.
 	'<th>'.__('Status').'</th>'.
-	'<th>'.__('Edit').'</th>'.
+	'<th>&nbsp;</th>'.
 	'</tr>';
 	
@@ -747,14 +659,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;
 		}
@@ -771,5 +683,5 @@
 		'<td class="nowrap status">'.$img_status.'</td>'.
 		'<td class="nowrap status"><a href="'.$comment_url.'">'.
-		'<img src="images/edit-mini.png" alt="" title="'.__('Edit this comment').'" /> '.__('Edit').'</a></td>'.
+		'<img src="images/edit-mini.png" alt="" title="'.__('Edit this comment').'" /></a></td>'.
 		
 		'</tr>';
@@ -779,5 +691,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 1334)
@@ -77,6 +77,6 @@
 	$selected_combo = array(
 	'-' => '',
-	__('Selected') => '1',
-	__('Not selected') => '0'
+	__('selected') => '1',
+	__('not selected') => '0'
 	);
 	
@@ -245,18 +245,14 @@
 }
 
-dcPage::open(__('Entries'),$starting_script,
+dcPage::open(__('Entries'),$starting_script);
+
+if (!$core->error->flag())
+{
 	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.'));
-}
-if (!$core->error->flag())
-{
+		));
+
 	echo
 	'<p class="top-add"><a class="button add" href="post.php">'.__('New entry').'</a></p>';
@@ -264,43 +260,41 @@
 	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 1179)
@@ -17,121 +17,4 @@
 $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();
-
 /* Actions
 -------------------------------------------------------- */
@@ -179,8 +62,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 +80,5 @@
 			$core->blog->updPostsStatus($posts_ids,$status);
 			
-			http::redirect($redir_sel.'&upd=1');
+			http::redirect($redir);
 		}
 		catch (Exception $e)
@@ -213,5 +93,5 @@
 			$core->blog->updPostsSelected($posts_ids,$action == 'selected');
 			
-			http::redirect($redir_sel."&upd=1");
+			http::redirect($redir);
 		}
 		catch (Exception $e)
@@ -236,5 +116,5 @@
 			$core->blog->delPosts($posts_ids);
 			
-			http::redirect($redir."&del=1");
+			http::redirect($redir);
 		}
 		catch (Exception $e)
@@ -246,28 +126,9 @@
 	elseif ($action == 'category' && isset($_POST['new_cat_id']))
 	{
-		$new_cat_id = $_POST['new_cat_id'];
-		
-		try
-		{
-			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);
-				
-				$new_cat_id = $core->blog->addCategory($cur_cat, (integer) $parent_cat);
-				
-				# --BEHAVIOR-- adminAfterCategoryCreate
-				$core->callBehavior('adminAfterCategoryCreate', $cur_cat, $new_cat_id);
-			}
-			
-			$core->blog->updPostsCategory($posts_ids, $new_cat_id);
-			
-			http::redirect($redir_sel."&upd=1");
+		try
+		{
+			$core->blog->updPostsCategory($posts_ids,$_POST['new_cat_id']);
+			
+			http::redirect($redir);
 		}
 		catch (Exception $e)
@@ -291,5 +152,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 +168,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 +175,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,77 +211,61 @@
 }
 
+$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>';
-
+	echo '<h2 class="page-title">'.__('Change category for entries').'</h2>';
+	
 	# categories list
 	# Getting categories
-	$categories_combo = array(__('(No cat)') => '');
+	$categories_combo = array('&nbsp;' => '');
 	try {
 		$categories = $core->blog->getCategories(array('post_type'=>'post'));
-		if (!$categories->isEmpty()) {
 		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_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) { }
 	
 	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,'');
-	
-	if ($core->auth->check('categories', $core->blog->id)) {
-		echo 
-		'<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>';
-	}
-	
-	echo
-	$fields->getHidden().
+	'<p><label for="new_cat_id" class="classic">'.__('Category:').' '.
+	form::combo('new_cat_id',$categories_combo,'').
+	'</label> ';
+	
+	echo
+	$hidden_fields.
 	$core->formNonce().
 	form::hidden(array('action'),'category').
@@ -448,12 +275,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 +295,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 +309,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 +325,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 1334)
@@ -344,48 +344,35 @@
 	($user_acc_nodragdrop ? '' : dcPage::jsLoad('js/_preferences-dragdrop.js')).
 	dcPage::jsLoad('js/jquery/jquery-ui.custom.js').
-	dcPage::jsLoad('js/jquery/jquery.pwstrength.js').
-		'<script type="text/javascript">'."\n".
-		"//<![CDATA[\n".
-		"\$(function() {\n".
-		"	\$('#new_pwd').pwstrength({texts: ['".
-				sprintf(__('Password strength: %s'),__('very weak'))."', '".
-				sprintf(__('Password strength: %s'),__('weak'))."', '".
-				sprintf(__('Password strength: %s'),__('mediocre'))."', '".
-				sprintf(__('Password strength: %s'),__('strong'))."', '".
-				sprintf(__('Password strength: %s'),__('very strong'))."']});\n".
-		"});\n".
-		"\n//]]>\n".
-		"</script>\n".
 	dcPage::jsPageTabs($default_tab).
 	dcPage::jsConfirmClose('user-form').
 	
 	# --BEHAVIOR-- adminPreferencesHeaders
-	$core->callBehavior('adminPreferencesHeaders'),
-
-	dcPage::breadcrumb(
+	$core->callBehavior('adminPreferencesHeaders')
+);
+
+if (!empty($_GET['upd'])) {
+	dcPage::message(__('Personal information has been successfully updated.'));
+}
+if (!empty($_GET['updated'])) {
+	dcPage::message(__('Personal options has been successfully updated.'));
+}
+if (!empty($_GET['append'])) {
+	dcPage::message(__('Favorites have been successfully added.'));
+}
+if (!empty($_GET['neworder'])) {
+	dcPage::message(__('Favorites have been successfully updated.'));
+}
+if (!empty($_GET['removed'])) {
+	dcPage::message(__('Favorites have been successfully removed.'));
+}
+if (!empty($_GET['replaced'])) {
+	dcPage::message(__('Default favorites have been successfully updated.'));
+}
+
+dcPage::breadcrumb(
 	array(
 		html::escapeHTML($core->auth->userID()) => '',
 		'<span class="page-title">'.$page_title.'</span>' => ''
-	))
-);
-
-if (!empty($_GET['upd'])) {
-	dcPage::message(__('Personal information has been successfully updated.'));
-}
-if (!empty($_GET['updated'])) {
-	dcPage::message(__('Personal options has been successfully updated.'));
-}
-if (!empty($_GET['append'])) {
-	dcPage::message(__('Favorites have been successfully added.'));
-}
-if (!empty($_GET['neworder'])) {
-	dcPage::message(__('Favorites have been successfully updated.'));
-}
-if (!empty($_GET['removed'])) {
-	dcPage::message(__('Favorites have been successfully removed.'));
-}
-if (!empty($_GET['replaced'])) {
-	dcPage::message(__('Default favorites have been successfully updated.'));
-}
+	));
 
 # User profile
@@ -397,18 +384,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 +403,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>';
 
@@ -432,20 +420,14 @@
 	'<legend>'.__('Change your password').'</legend>'.
 	
-	'<div class="pw-table">'.
-	'<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>'.
+	'<p><label for="new_pwd">'.__('New password:').
+	form::password('new_pwd',20,255).'</label></p>'.
 	
-	'<p><label for="new_pwd_c">'.__('Confirm new password:').'</label>'.
-	form::password('new_pwd_c',20,255).'</p>'.
+	'<p><label for="new_pwd_c">'.__('Confirm password:').
+	form::password('new_pwd_c',20,255).'</label></p>'.
 	'</fieldset>'.
 	
 	'<p>'.__('If you have changed this user email or password you must provide your current password to save these modifications.').'</p>'.
-	'<p><label for="cur_pwd">'.__('Your password:').'</label>'.
-	form::password('cur_pwd',20,255).'</p>';
+	'<p><label for="cur_pwd">'.__('Your password:').
+	form::password('cur_pwd',20,255).'</label></p>';
 }
 
@@ -465,12 +447,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 +470,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 +481,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 +511,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 1334)
@@ -70,11 +70,11 @@
 
 
-dcPage::open(__('Search'),$starting_scripts,
-	dcPage::breadcrumb(
-		array(
-			html::escapeHTML($core->blog->name) => '',
-			'<span class="page-title">'.__('Search').'</span>' => ''
-		))
-);
+dcPage::open(__('Search'),$starting_scripts);
+
+dcPage::breadcrumb(
+	array(
+		html::escapeHTML($core->blog->name) => '',
+		'<span class="page-title">'.__('Search').'</span>' => ''
+	));
 
 echo
@@ -84,5 +84,5 @@
 '<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><input type="submit" value="'.__('Search').'" /></p>'.
+'</p><input type="submit" value="'.__('Search').'" /></p>'.
 '</div>'.
 '</form>';
Index: admin/style/default.css
===================================================================
--- admin/style/default.css	(revision 1512)
+++ admin/style/default.css	(revision 1511)
@@ -36,5 +36,5 @@
 }
 
-h1, h2, h3, .as_h3, h4, h5, h6, p {
+h1, h2, h3, h4, h5, h6, p {
 	margin-top: 0;
 	margin-bottom: 1rem;
@@ -53,8 +53,4 @@
 	color: #d30e60;
 }
-.page-title img {
-	padding-left: .6rem;
-	vertical-align: middle;
-}
 #content > h2 {
 	padding: 0 1.8rem .6rem;
@@ -62,23 +58,7 @@
 	background: #fff url(bg_h2.png) repeat-x center bottom;
 }
-h3, .as_h3 {
+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;
-	color: #333;
-}
-.entry-status label img {
-	padding-left: .4rem;
-	vertical-align: text-top;
 }
 p, div.p {
@@ -252,32 +232,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: .5em 0 .3em 1rem;
+	border-bottom: 1px solid #ccc;
 }
 .part-tabs li {
@@ -287,11 +261,12 @@
 }
 .part-tabs li a {
-	padding: .5em 2em;
-	margin-right: -1px;
-	border: 1px solid #aaa;
+	padding: .5em 1em;
+	margin-right: .5em;
+	border: 1px solid #ccc;
 	border-bottom: none;
+	background: #efefef;
 	text-decoration: none;
-	color: #333;
-	background-color:#E4E0EC;
+	color: #000;
+	background-color:#ededed;
 }
 .part-tabs li a:hover, .part-tabs li a:focus {
@@ -302,7 +277,8 @@
 .part-tabs li.part-tabs-active a {
 	background: #fff;
+	border: 1px solid #d30e60;
+	color: #d30e60;
 	font-weight: bold;
 	border-bottom-color: #fff;
-	padding-bottom: .7rem;
 }
 /* ------------------------------------------------------------------ main-menu */
@@ -311,5 +287,5 @@
 	float: left;
 	margin:0;
-	padding-top: 4.5em;
+	padding-top: .5em;
 	padding-bottom: 1em;
 	background: #f7f7f7;
@@ -336,7 +312,4 @@
 	background-repeat: no-repeat;
 	background-position: 8px .3em;
-}
-#main-menu li.active {
-	background-color: #fff;
 }
 #main-menu a {
@@ -377,5 +350,5 @@
 	background: #dfdfdf;
 	border-color: #999;
-	color: #444;
+	color: #666;
 	border-bottom-right-radius: .6em;
 	border-top-right-radius: .6em;
@@ -399,5 +372,7 @@
 	color: #000;
 	font-variant: small-caps;
-	padding-top: .6rem;
+}
+#favorites-menu a {
+	color: #333;
 }
 /* ------------------------------------------------------------------ footer */
@@ -420,5 +395,5 @@
 #login-screen {
 	display: block;
-	width: 20em;
+	width: 18em;
 	margin: 1.5em auto 0;
 	font-size: 1.4rem;
@@ -431,9 +406,11 @@
 	margin-left: 0;
 }
-#login-screen .fieldset {
+#login-screen fieldset, #login-screen .fieldset {
 	border: 1px solid #A8DC26;
 	padding: 1em 1em 0 1em;
 	border-radius: 4px;
-	background: #fff;
+}
+#login-screen legend {
+	border: 1px solid #A8DC26;
 }
 #login-screen input[type=text], #login-screen input[type=password], #login-screen input[type=submit] {
@@ -446,7 +423,16 @@
 #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 +444,6 @@
 	width: 210px;
 	text-align: center;
-	margin: 1em 0 2em;
-	padding: 1em 0;
+	margin: 2em 0;
 	display:inline-block;
-	vertical-align: top;
 }
 #icons a,
@@ -473,24 +457,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 +462,5 @@
 }
 #quick {
+	clear: left;
 	margin-top: 2em;
 }
@@ -506,5 +471,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 +477,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 {
@@ -562,25 +522,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-left: 1.2rem;
 }
 #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 +564,5 @@
 }
 #media-details {
-}
-.near-icon {
 	margin-left: 70px;
-	margin-bottom: 3em;
 }
 #media-details ul {
@@ -758,31 +699,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 +729,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,30 +769,43 @@
 	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 */
@@ -1002,4 +938,7 @@
 	color: #fff;
 }
+#content > .message, #content > .error {
+	margin-right: 14em
+}
 /* ------------------------------------------------------------------ navigation */
 .anchor-nav {
@@ -1011,23 +950,15 @@
 .nav_prevnext {
 	margin-bottom: 2em;
-	color: #fff;
+	color: #ccc;
 }
 .nav_prevnext a, a.back {
-	border: 1px solid #ddd;
-	padding: .2rem 2rem;
-	border-radius: 1rem;
-	background-color: #f0f0f0;
+	border: 1px solid #ccc;
+	padding: .2rem .5rem;
+	background-color: #eef;
 }
 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 */
 #debug {
@@ -1053,21 +984,6 @@
 /* -------------------------------------------------------------------- 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;
 }
 
@@ -1176,31 +1092,17 @@
 }
 
-td {
+th, td {
 	border-width: 0 0 1px 0;
 	border-style: solid;
 	border-color: #e3e3e3;
-	padding: .3em .5em;
+	padding: .4rem .5rem;
 	vertical-align: top;
 }
 th {
-	border-width: 1px 0 1px 0;
-	border-style: solid;
-	border-color: #ccc;
-	background: #f3f3ff;
-	padding: .3em .5em;
-	vertical-align: top;
 	text-align: left;
-}
-th.first img {
-	padding-right: 24px;
+	border-bottom-color: #aaa;
 }
 .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 {
@@ -1220,5 +1122,5 @@
 }
 table.settings th, table.prefs th {
-	background: #f3f3ff;
+	background: #eef;
 }
 table.settings th:first-child, table.prefs th:first-child {
@@ -1243,6 +1145,7 @@
 	border: none;
 }
-tr.line img.expand, th img.expand {
-	margin-right: 6px;
+
+tr.line img.expand {
+	margin-right: 10px;
 	margin-bottom: -2px;
 }
@@ -1277,5 +1180,5 @@
 	padding: 0;
 }
-fieldset {
+fieldset, .fieldset {
 	display: block;
 	margin: 0 0 1em 0;
@@ -1291,8 +1194,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 {
@@ -1346,5 +1248,4 @@
 	font-style:italic;
 	font-weight: normal;
-	text-transform: none;
 	color: #666;
 }
@@ -1358,12 +1259,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;
@@ -1414,7 +1312,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 {
@@ -1433,14 +1332,13 @@
 a.submit {
 	display: inline-block;
+	outline: none;
 	cursor: pointer;
 	text-align: center;
 	text-decoration: none;
 	padding: .1em .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],
@@ -1448,12 +1346,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,
@@ -1463,9 +1357,9 @@
 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 */
@@ -1478,5 +1372,5 @@
 	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,
@@ -1488,8 +1382,8 @@
 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,
@@ -1497,5 +1391,5 @@
 input[type=submit].delete {
 	color: #c00;
-	padding-bottom: .2rem;
+	padding-bottom: .1em;
 }
 #entry-content .delete {
@@ -1525,4 +1419,5 @@
 	border:1px solid #83c41a;
 	padding:.6rem 1.8rem;
+	text-shadow:1px 1px 0 #689324;
 	color: #000;
 	text-shadow: 1px 1px 0 #BBDB58;
@@ -1530,5 +1425,5 @@
 	font-size: 1.4rem;
 }
-.button.add:hover, .button.add:active, .button.add:focus {
+.button.add:hover, .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% );
@@ -1539,4 +1434,8 @@
 .button-add:focus {
 	outline: dotted 1px;
+}
+.button.add:active {
+	position:relative;
+	top:1px;
 }
 
@@ -1574,114 +1473,9 @@
 }
 
-/* ------------------------------------------------------- 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 {
-	display: table;
-	margin-bottom: 1em;
-}
-.pw-cell {
-	display: table-cell;
-	margin-bottom: 1em;
-}
-#pwindicator {
-	display: table-cell;
-	vertical-align: bottom;
-	padding-left: 1.5em;
-	height: 3.8em;
-}
-#pwindicator .bar {
-	height: 6px;
-	margin-bottom: 4px;
-}
-.pw-very-weak .bar {
-	background: #900;
-	width: 30px;
-}
-.pw-weak .bar {
-	background: #c00;
-	width: 60px;
-}
-.pw-mediocre .bar {
-	background: #f60;
-	width: 90px;
-}
-.pw-strong .bar {
-	background: #060;
-	width: 120px;
-}
-.pw-very-strong .bar {
-	background: #0c0;
-	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, #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; 
@@ -1701,5 +1495,4 @@
 		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 {
@@ -1720,7 +1513,5 @@
 	.smallscreen {display: none;}
 	#help-button {width:20px; overflow: hidden;}
-	#info-box2 {float:none;}
-	#dashboard-items div {display: block;margin-bottom: 1em; padding: 0 1em;}
-	#help-button {height:26px; width:26px; background-color: #A2CBE9; padding: 0; margin:0;font-size: 1rem;line-height: 68px}
+	#info-box1 {margin-left: 1rem;}
 }
 @media screen and (max-width: 492px) {
@@ -1729,5 +1520,5 @@
 	.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/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 1325)
@@ -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;
Index: admin/trackbacks.php
===================================================================
--- admin/trackbacks.php	(revision 1459)
+++ admin/trackbacks.php	(revision 1334)
@@ -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,10 @@
 	dcPage::message(__('All pings sent.'));
 }
+
+dcPage::breadcrumb(
+	array(
+		html::escapeHTML($core->blog->name) => '',
+		'<span class="page-title">'.$page_title.'</span>' => ''
+	));
 
 echo '<p><a class="back" href="'.$core->getPostAdminURL($post->post_type,$id).'">'.
@@ -127,10 +123,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 +151,4 @@
 }
 
-dcPage::helpBlock('core_trackbacks');
 dcPage::close();
 ?>
Index: admin/update.php
===================================================================
--- admin/update.php	(revision 1474)
+++ admin/update.php	(revision 1334)
@@ -27,5 +27,5 @@
 
 $updater = new dcUpdate(DC_UPDATE_URL,'dotclear',DC_UPDATE_VERSION,DC_TPL_CACHE.'/versions');
-$new_v = $updater->check(DC_VERSION, !empty($_GET['nocache']));
+$new_v = $updater->check(DC_VERSION);
 $zip_file = $new_v ? DC_BACKUP_PATH.'/'.basename($updater->getFileURL()) : '';
 $version_info = $new_v ? $updater->getInfoURL() : '';
@@ -168,19 +168,13 @@
 -------------------------------------------------------- */
 dcPage::open(__('Dotclear update'),
-	(!$step ? 
-		dcPage::jsPageTabs($default_tab).
-		dcPage::jsLoad('js/_update.js')
-		: ''),
+	(!$step ? dcPage::jsPageTabs($default_tab) : '')
+);
+
+if (!$core->error->flag()) {
 	dcPage::breadcrumb(
 		array(
 			__('System') => '',
 			'<span class="page-title">'.__('Dotclear update').'</span>' => ''
-		))
-);
-
-if (!$core->error->flag()) {
-	if (!empty($_GET['nocache'])) {
-		dcPage::message(__('Manual checking of update done successfully.'));
-	}
+		));
 }
 
@@ -190,9 +184,5 @@
 	if (empty($new_v))
 	{
-		echo '<p><strong>'.__('No newer Dotclear version available.').'</strong></p>'.
-		'<form action="'.$p_url.'" method="get">'.
-		'<p><input type="hidden" name="nocache" value="1" />'.
-		'<input type="submit" value="'.__('Force checking update Dotclear').'" /></p>'.
-		'</form>';
+		echo '<p><strong>'.__('No newer Dotclear version available.').'</strong></p>';
 	}
 	else
@@ -200,5 +190,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 +236,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 1334)
@@ -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,11 @@
 	dcPage::message(__('User has been successfully created.'));
 }
+
+dcPage::breadcrumb(
+	array(
+		__('System') => '',
+		__('Users') => 'users.php',
+		'<span class="page-title">'.$page_title.'</span>' => ''
+	));
 
 if ($user_id == $core->auth->userID()) {
@@ -203,62 +203,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 +283,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 1334)
@@ -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,41 @@
 	}
 	
+	dcPage::breadcrumb(
+		array(
+			__('System') => '',
+			'<span class="page-title">'.__('Users').'</span>' => ''
+		));
+
 	echo
 	'<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 1334)
@@ -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,4 +177,11 @@
 	}
 	
+	dcPage::breadcrumb(
+		array(
+			__('System') => '',
+			__('Users') => 'users.php',
+			'<span class="page-title">'.__('Permissions').'</span>' => ''
+		));
+
 	echo
 	'<p>'.sprintf(
@@ -257,4 +245,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 +254,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 +274,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 1340)
@@ -49,5 +49,5 @@
 
 	# Top of admin page
-	public static function open($title='',$head='',$breadcrumb='')
+	public static function open($title='', $head='')
 	{
 		global $core;
@@ -159,10 +159,7 @@
 		}
 
-		// Display breadcrumb (if given) before any error message
-		echo $breadcrumb;
-
 		if ($core->error->flag()) {
 			echo
-			'<div class="error"><p><strong>'.(count($core->error->getErrors()) > 1 ? __('Errors:') : __('Error:')).'</strong></p>'.
+			'<div class="error"><p><strong>'.(count($core->error->getErrors()) > 1 ? __('Errors:') : __('Error:')).'</p></strong>'.
 			$core->error->toHTML().
 			'</div>';
@@ -213,5 +210,5 @@
 	}
 
-	public static function openPopup($title='',$head='',$breadcrumb='')
+	public static function openPopup($title='', $head='')
 	{
 		global $core;
@@ -258,7 +255,4 @@
 		'<div id="content">'."\n";
 
-		// display breadcrumb if given
-		echo $breadcrumb;
-
 		if ($core->error->flag()) {
 			echo
@@ -279,5 +273,5 @@
 	}
 
-	public static function breadcrumb($elements=null,$with_home_link=true,$echo=false)
+	public static function breadcrumb($elements=null,$with_home_link=true,$echo=true)
 	{
 		// First item of array elements should be blog's name, System or Plugins
@@ -287,6 +281,5 @@
 		$index = 0;
 		foreach ($elements as $element => $url) {
-			$res .= ($with_home_link ? ($index == 1 ? ' : ' : ' &rsaquo; ') : ($index == 0 ? ' ' : ' &rsaquo; ')).
-				($url ? '<a href="'.$url.'">' : '').$element.($url ? '</a>' : '');
+			$res .= ($with_home_link ? ($index == 1 ? ' : ' : ' &rsaquo; ') : ' ').($url ? '<a href="'.$url.'">' : '').$element.($url ? '</a>' : '');
 			$index++;
 		}
@@ -365,10 +358,4 @@
 	{
 		$args = func_get_args();
-
-		$args = new ArrayObject($args);
-
-		# --BEHAVIOR-- adminPageHelpBlock
-		$GLOBALS['core']->callBehavior('adminPageHelpBlock',$args);
-
 		if (empty($args)) {
 			return;
@@ -476,6 +463,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?')).
@@ -508,6 +493,4 @@
 		self::jsVar('dotclear.msg.confirm_delete_theme',
 			__('Are you sure you want to delete "%s" theme?')).
-		self::jsVar('dotclear.msg.confirm_delete_backup',
-			__('Are you sure you want to delete this backup?')).
 		self::jsVar('dotclear.msg.zip_file_content',
 			__('Zip file content')).
@@ -529,6 +512,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 +715,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 +784,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 +790,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 1508)
+++ inc/admin/lib.pager.php	(revision 1179)
@@ -42,13 +42,8 @@
 			$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>'.
-			'<th colspan="2" class="first">'.__('Title').'</th>'.
+			'<th colspan="2">'.__('Title').'</th>'.
 			'<th>'.__('Date').'</th>'.
 			'<th>'.__('Category').'</th>'.
@@ -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)) {
@@ -92,5 +87,5 @@
 			html::escapeHTML($this->rs->cat_title));
 		} else {
-			$cat_title = __('(No cat)');
+			$cat_title = __('None');
 		}
 		
@@ -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');
 		}
 		
@@ -260,10 +255,10 @@
 			$html_block =
 			'<table><tr>'.
-			'<th colspan="2" class="first">'.__('Author').'</th>'.
+			'<th colspan="2">'.__('Title').'</th>'.
 			'<th>'.__('Date').'</th>'.
-			'<th>'.__('Entry title').'</th>'.
+			'<th>'.__('Author').'</th>'.
 			'<th>'.__('Type').'</th>'.
 			'<th>'.__('Status').'</th>'.
-			'<th>'.__('Edit').'</th>'.
+			'<th>&nbsp;</th>'.
 			'</tr>%s</table>';
 			
@@ -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,20 +306,20 @@
 		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');
-				break;
-		}
-		
-		$post_title = html::escapeHTML($this->rs->post_title);
-		if (mb_strlen($post_title) > 50) {
-			$post_title = mb_strcut($post_title,0,47).'...';
+				$img_status = sprintf($img,__('junk'),'junk.png');
+				break;
+		}
+		
+		$comment_author = html::escapeHTML($this->rs->comment_author);
+		if (mb_strlen($comment_author) > 20) {
+			$comment_author = mb_strcut($comment_author,0,17).'...';
 		}
 		
@@ -335,13 +330,13 @@
 		'<td class="nowrap">'.
 		form::checkbox(array('comments[]'),$this->rs->comment_id,'','','',0).'</td>'.
-		'<td class="maximal"><a href="'.$author_url.'">'.html::escapeHTML($this->rs->comment_author).'</a></td>'.
+		'<td class="maximal"><a href="'.$post_url.'">'.
+		html::escapeHTML($this->rs->post_title).'</a>'.
+		($this->rs->post_type != 'post' ? ' ('.html::escapeHTML($this->rs->post_type).')' : '').'</td>'.
 		'<td class="nowrap">'.dt::dt2str(__('%Y-%m-%d %H:%M'),$this->rs->comment_dt).'</td>'.
-		'<td class="nowrap"><a href="'.$post_url.'">'.
-		html::escapeHTML($post_title).'</a>'.
-		($this->rs->post_type != 'post' ? ' ('.html::escapeHTML($this->rs->post_type).')' : '').'</td>'.
+		'<td class="nowrap"><a href="'.$author_url.'">'.html::escapeHTML($comment_author).'</a></td>'.
 		'<td class="nowrap">'.($this->rs->comment_trackback ? __('trackback') : __('comment')).'</td>'.
 		'<td class="nowrap status">'.$img_status.'</td>'.
 		'<td class="nowrap status"><a href="'.$comment_url.'">'.
-		'<img src="images/edit-mini.png" alt="" title="'.__('Edit this comment').'" /> '.__('Edit').'</a></td>';
+		'<img src="images/edit-mini.png" alt="" title="'.__('Edit this comment').'" /></a></td>';
 		
 		$res .= '</tr>';
@@ -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/core/class.dc.blog.php
===================================================================
--- inc/core/class.dc.blog.php	(revision 1468)
+++ inc/core/class.dc.blog.php	(revision 1280)
@@ -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
@@ -634,55 +634,18 @@
 	private function checkCategory($title,$url,$id=null)
 	{
-		# Let's check if URL is taken...
-		$strReq = 
-			'SELECT cat_url FROM '.$this->prefix.'category '.
-			"WHERE cat_url = '".$this->con->escape($url)."' ".
-			($id ? 'AND cat_id <> '.(integer) $id. ' ' : '').
-			"AND blog_id = '".$this->con->escape($this->id)."' ".
-			'ORDER BY cat_url DESC';
+		$strReq = 'SELECT cat_id '.
+				'FROM '.$this->prefix.'category '.
+				"WHERE cat_url = '".$this->con->escape($url)."' ".
+				"AND blog_id = '".$this->con->escape($this->id)."' ";
+		
+		if ($id !== null) {
+			$strReq .= 'AND cat_id <> '.(integer) $id.' ';
+		}
 		
 		$rs = $this->con->select($strReq);
 		
-		if (!$rs->isEmpty())
-		{
-			if ($this->con->driver() == 'mysql') {
-				$clause = "REGEXP '^".$this->con->escape($url)."[0-9]+$'";
-			} elseif ($this->con->driver() == 'pgsql') {
-				$clause = "~ '^".$this->con->escape($url)."[0-9]+$'";
-			} else {
-				$clause = "LIKE '".$this->con->escape($url)."%'";
-			}
-			$strReq = 
-				'SELECT cat_url FROM '.$this->prefix.'category '.
-				"WHERE cat_url ".$clause.' '.
-				($id ? 'AND cat_id <> '.(integer) $id. ' ' : '').
-				"AND blog_id = '".$this->con->escape($this->id)."' ".
-				'ORDER BY cat_url DESC ';
-			
-			$rs = $this->con->select($strReq);
-			$a = array();
-			while ($rs->fetch()) {
-				$a[] = $rs->cat_url;
-			}
-			
-			natsort($a);
-			$t_url = end($a);
-			
-			if (preg_match('/(.*?)([0-9]+)$/',$t_url,$m)) {
-				$i = (integer) $m[2];
-				$url = $m[1];
-			} else {
-				$i = 1;
-			}
-			
-			return $url.($i+1);
-		}
-		
-		# URL is empty?
-		if ($url == '') {
-			throw new Exception(__('Empty category URL'));
-		}
-		
-		return $url;
+		if (!$rs->isEmpty()) {
+			throw new Exception(__('Category URL must be unique.'));
+		}
 	}
 	
@@ -706,5 +669,5 @@
 		
 		# Check if title or url are unique
-		$cur->cat_url = $this->checkCategory($cur->cat_title,$cur->cat_url,$id);
+		$this->checkCategory($cur->cat_title,$cur->cat_url,$id);
 		
 		if ($cur->cat_desc !== null) {
Index: inc/core/class.dc.media.php
===================================================================
--- inc/core/class.dc.media.php	(revision 1468)
+++ inc/core/class.dc.media.php	(revision 1280)
@@ -30,5 +30,4 @@
 	
 	public $thumb_tp = '%s/.%s_%s.jpg';	///< <b>string</b> Thumbnail file pattern
-	public $thumb_tp_alpha = '%s/.%s_%s.png'; ///< <b>string</b> Thumbnail file pattern (with alpha layer)
 	
 	/**
@@ -299,7 +298,6 @@
 			$f->media_thumb = array();
 			$p = path::info($f->relname);
-			$alpha = ($p['extension'] == 'png') || ($p['extension'] == 'PNG');
-			$thumb = sprintf(($alpha ? $this->thumb_tp_alpha : $this->thumb_tp),$this->root.'/'.$p['dirname'],$p['base'],'%s');
-			$thumb_url = sprintf(($alpha ? $this->thumb_tp_alpha : $this->thumb_tp),$this->root_url.$p['dirname'],$p['base'],'%s');
+			$thumb = sprintf($this->thumb_tp,$this->root.'/'.$p['dirname'],$p['base'],'%s');
+			$thumb_url = sprintf($this->thumb_tp,$this->root_url.$p['dirname'],$p['base'],'%s');
 			
 			# Cleaner URLs
@@ -922,6 +920,5 @@
 		
 		$p = path::info($file);
-		$alpha = ($p['extension'] == 'png') || ($p['extension'] == 'PNG');
-		$thumb = sprintf(($alpha ? $this->thumb_tp_alpha : $this->thumb_tp),$p['dirname'],$p['base'],'%s');
+		$thumb = sprintf($this->thumb_tp,$p['dirname'],$p['base'],'%s');
 		
 		try
@@ -942,5 +939,5 @@
 					$rate = ($s[0] < 100 ? 95 : ($s[0] < 600 ? 90 : 85));
 					$img->resize($s[0],$s[0],$s[1]);
-					$img->output(($alpha ? 'png' : 'jpeg'),$thumb_file,$rate);
+					$img->output('jpeg',$thumb_file,$rate);
 					$img->loadImage($file);
 				}
@@ -961,10 +958,8 @@
 		{
 			$p = path::info($file->relname);
-			$alpha = ($p['extension'] == 'png') || ($p['extension'] == 'PNG');
-			$thumb_old = sprintf(($alpha ? $this->thumb_tp_alpha : $this->thumb_tp),$p['dirname'],$p['base'],'%s');
+			$thumb_old = sprintf($this->thumb_tp,$p['dirname'],$p['base'],'%s');
 			
 			$p = path::info($newFile->relname);
-			$alpha = ($p['extension'] == 'png') || ($p['extension'] == 'PNG');
-			$thumb_new = sprintf(($alpha ? $this->thumb_tp_alpha : $this->thumb_tp),$p['dirname'],$p['base'],'%s');
+			$thumb_new = sprintf($this->thumb_tp,$p['dirname'],$p['base'],'%s');
 			
 			foreach ($this->thumb_sizes as $suffix => $s) {
@@ -979,6 +974,5 @@
 	{
 		$p = path::info($f);
-		$alpha = ($p['extension'] == 'png') || ($p['extension'] == 'PNG');
-		$thumb = sprintf(($alpha ? $this->thumb_tp_alpha : $this->thumb_tp),'',$p['base'],'%s');
+		$thumb = sprintf($this->thumb_tp,'',$p['base'],'%s');
 		
 		foreach ($this->thumb_sizes as $suffix => $s) {
Index: inc/core/class.dc.postmedia.php
===================================================================
--- inc/core/class.dc.postmedia.php	(revision 1505)
+++ inc/core/class.dc.postmedia.php	(revision 1179)
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/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/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/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/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/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/main.po
===================================================================
--- locales/en/main.po	(revision 1499)
+++ locales/en/main.po	(revision 1280)
@@ -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 ""
 
@@ -2139,7 +2139,4 @@
 msgstr ""
 
-msgid "Are you sure you want to delete this backup?"
-msgstr ""
-
 msgid "Zip file content"
 msgstr ""
@@ -2790,5 +2787,2 @@
 msgid "The following error was encountered while trying to read the database:"
 msgstr ""
-
-msgid "(No cat)"
-msgstr "(none)"
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/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/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/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/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 1280)
@@ -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>
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 1508)
+++ locales/fr/main.po	(revision 1337)
@@ -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 de cache %s n'est pas accessible en écriture."
 
 #, fuzzy
@@ -1123,5 +1123,5 @@
 #, php-format
 msgid "You can change your user language in your <a href=\"%1$s\">preferences</a> or change your blog's main language in your <a href=\"%2$s\">blog settings</a>."
-msgstr "Vous pouvez changer votre langue d'utilisateur dans vos <a href=\"%1$s\">préférences</a> ou changer la langue principale de votre blog dans vos <a href=\"%2$s\">paramètres du blog</a>."
+msgstr "Vous pouvez changer votre langue d'utilisateur dans vos <a href=\"%1$s\">préférences</a> ou changer la langue principale de votre blog dans vos <a href=\"%2$s\">paramètres de blog</a>."
 
 msgid "Installed languages"
@@ -1193,10 +1193,4 @@
 msgstr "Gestionnaire de médias"
 
-msgid "Go to %s folder"
-msgstr "Aller au dossier %s"
-
-msgid "Media details of %s"
-msgstr "Détails du média %s"
-
 msgid "confirm removal"
 msgstr "Confirmer la suppression"
@@ -1628,5 +1622,5 @@
 
 msgid "Text formating:"
-msgstr "Syntaxe de saisie :"
+msgstr "Format du texte :"
 
 msgid "Convert to XHTML"
@@ -1790,5 +1784,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 +1820,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"
@@ -2000,13 +1994,7 @@
 msgstr "Les fichiers suivants de votre installation de Dotclear ne peuvent pas être écrits. Veuillez corriger la situation ou <a href=\"http://fr.dotclear.org/download\">mettre à jour manuellement</a>."
 
-msgid "Manual checking of update done successfully."
-msgstr "Vérification manuelle de mise à jour effectuée avec succès."
-
 msgid "No newer Dotclear version available."
 msgstr "Aucune nouvelle version de Dotclear n'est disponible."
 
-msgid "Force checking update Dotclear"
-msgstr "Forcer la vérification de mise à jour de Dotclear"
-
 #, php-format
 msgid "Dotclear %s is available."
@@ -2145,9 +2133,9 @@
 #, fuzzy
 msgid "Go to the content"
-msgstr "Aller au contenu"
+msgstr "Voir ce billet sur le site"
 
 #, fuzzy
 msgid "Go to the menu"
-msgstr "Aller au menu"
+msgstr "Aller sur le site"
 
 msgid "Go to site"
@@ -2213,5 +2201,5 @@
 
 msgid "Users with posts cannot be deleted."
-msgstr "Les utilisateurs ayant écrit des billets ne peuvent être supprimés."
+msgstr "Les utilisateurs ayant écrit des billets ne peuvent être effacées."
 
 #, php-format
@@ -2255,12 +2243,9 @@
 msgstr "Êtes-vous certain de vouloir supprimer le thème \"%s\" ?"
 
-msgid "Are you sure you want to delete this backup?"
-msgstr "Êtes-vous certain de vouloir supprimer cette sauvegarde ?"
-
 msgid "Zip file content"
 msgstr "Contenu du fichier zip"
 
 msgid "XHTML markup validator"
-msgstr "Vérifier la validité XHTML"
+msgstr "Validation XHTML"
 
 msgid "XHTML content is valid."
@@ -2273,7 +2258,4 @@
 msgstr "Vous avez des modifications non sauvegardées. Changer de format vous fera perdre ces modifications. Continuer ?"
 
-msgid "Warning: post format change will not convert existing content. You will need to apply new format by yourself. Proceed anyway?"
-msgstr "Attention : le changement de syntaxe ne transformera pas les balises des contenus déjà saisis. Pensez à les réadapter après cette opération. Confirmez-vous ce changement de syntaxe ?"
-
 msgid "Loading enhanced uploader, please wait."
 msgstr "Chargement de l'interface avancée."
@@ -2524,5 +2506,5 @@
 #, fuzzy
 msgid "You are not allowed to reset categories order"
-msgstr "Vous n'êtes pas autorisé à réinitialiser l'ordre des catégories"
+msgstr "Vous n'êtes pas autorisé à supprimer des catégories"
 
 msgid "Category URL must be unique."
@@ -2954,189 +2936,9 @@
 
 msgid "Personal notes:"
-msgstr "Notes personnelles :"
+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)"
-
-msgid "Password strength: %s"
-msgstr "Force du mot de passe : %s"
-
-msgid "very weak"
-msgstr "très faible"
-
-msgid "weak"
-msgstr "faible"
-
-msgid "mediocre"
-msgstr "moyen"
-
-msgid "strong"
-msgstr "fort"
-
-msgid "very strong"
-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 "Edit"
-msgstr "Modifier"
+msgid "faut virer ça ça ne sert qu'a contourner le bug corrige en 2.5.2"
+msgstr "Notes personnelles :"
Index: locales/fr/plugins.po
===================================================================
--- locales/fr/plugins.po	(revision 1501)
+++ locales/fr/plugins.po	(revision 1338)
@@ -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."
@@ -1169,10 +1166,4 @@
 msgstr "Pages"
 
-msgid "My first page"
-msgstr "Ma première page"
-
-msgid "This is your first page. When you\'re ready to blog, log in to edit or delete it."
-msgstr "Ceci est votre première page. Quand vous serez prêt à bloguer, connectez-vous pour l'éditer ou la supprimer."
-
 #, php-format
 msgid "%d page"
@@ -1286,5 +1277,5 @@
 
 msgid "Pings"
-msgstr "Signalements (pings)"
+msgstr "Signalements"
 
 msgid "Ping services"
@@ -1759,11 +1750,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 +1777,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."
 
@@ -1935,10 +1926,2 @@
 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/index.php
===================================================================
--- plugins/aboutConfig/index.php	(revision 1474)
+++ plugins/aboutConfig/index.php	(revision 1339)
@@ -85,6 +85,6 @@
 	
 	return
-	'<tr class="line">'.
-	'<td scope="row"><label for="s_'.$id.'">'.sprintf($slabel,html::escapeHTML($id)).'</label></td>'.
+	'<tr>'.
+	'<td scope="raw"><label for="s_'.$id.'">'.sprintf($slabel,html::escapeHTML($id)).'</label></td>'.
 	'<td>'.$field.'</td>'.
 	'<td>'.$s['type'].'</td>'.
@@ -115,5 +115,12 @@
 <body>
 <?php
-echo dcPage::breadcrumb(
+if (!empty($_GET['upd'])) {
+	dcPage::message(__('Configuration successfully updated'));
+}
+
+if (!empty($_GET['upda'])) {
+	dcPage::message(__('Settings definition successfully updated'));
+}
+dcPage::breadcrumb(
 	array(
 		__('System') => '',
@@ -121,11 +128,4 @@
 		'<span class="page-title">'.__('about:config').'</span>' => ''
 	));
-if (!empty($_GET['upd'])) {
-	dcPage::message(__('Configuration successfully updated'));
-}
-
-if (!empty($_GET['upda'])) {
-	dcPage::message(__('Settings definition successfully updated'));
-}
 ?>
 
@@ -134,5 +134,5 @@
 
 <?php
-$table_header = '<table class="settings" id="%s"><caption class="as_h3">%s</caption>'.
+$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 1512)
+++ plugins/antispam/filters/class.dc.filter.ip.php	(revision 1510)
@@ -120,13 +120,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 1179)
@@ -44,13 +44,19 @@
 		}
 
+		$match = array();
+
 		$bls = $this->getServers();
 		$bls = preg_split('/\s*,\s*/',$bls);
 
-		foreach ($bls as $bl) {
+		foreach ($bls as $bl)
+		{
 			if ($this->dnsblLookup($ip,$bl)) {
-				// Pass by reference $status to contain matching DNSBL
-				$status = $bl;
-				return true;
+				$match[] = $bl;
 			}
+		}
+
+		if (!empty($match)) {
+			$status = substr(implode(', ',$match),0,128);
+			return true;
 		}
 	}
@@ -76,11 +82,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.linkslookup.php
===================================================================
--- plugins/antispam/filters/class.dc.filter.linkslookup.php	(revision 1366)
+++ plugins/antispam/filters/class.dc.filter.linkslookup.php	(revision 1179)
@@ -64,8 +64,18 @@
 	private function getLinks($text)
 	{
-		// href attribute on "a" tags is second match
-		preg_match_all('|<a.*?href="(http.*?)"|', $text, $parts);
-
-		return $parts[1];
+		$res = array();
+		
+		# href attribute on "a" tags
+		if (preg_match_all('/<a ([^>]+)>/ms', $text, $match, PREG_SET_ORDER))
+		{
+			for ($i = 0; $i<count($match); $i++)
+			{
+				if (preg_match('/href="(http:\/\/[^"]+)"/ms', $match[$i][1], $matches)) {
+					$res[] = $matches[1];
+				}
+			}
+		}
+		
+		return $res;
 	}
 }
Index: plugins/antispam/filters/class.dc.filter.words.php
===================================================================
--- plugins/antispam/filters/class.dc.filter.words.php	(revision 1512)
+++ plugins/antispam/filters/class.dc.filter.words.php	(revision 1510)
@@ -116,9 +116,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/index.php
===================================================================
--- plugins/antispam/index.php	(revision 1474)
+++ plugins/antispam/index.php	(revision 1339)
@@ -123,9 +123,9 @@
 if ($filter_gui !== false)
 {
-	echo dcPage::breadcrumb(
+	dcPage::breadcrumb(
 		array(
 			__('Plugins') => '',
 			$page_name => $p_url,
-			'<span class="page-title">'.sprintf(__('%s filter configuration'),$filter->name).'</span>' => ''
+			'<span class="page-title">'.sprintf(__('%s configuration'),$filter->name).'</span>' => ''
 		));
 
@@ -134,5 +134,5 @@
 else
 {
-	echo dcPage::breadcrumb(
+	dcPage::breadcrumb(
 		array(
 			__('Plugins') => '',
@@ -170,5 +170,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 +178,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 +186,5 @@
 	echo
 	'<table class="dragable">'.
-	'<caption class="as_h3">'.__('Available spam filters').'</caption>'.
+	'<caption>'.__('Available spam filters').'</caption>'.
 	'<thead><tr>'.
 	'<th>'.__('Order').'</th>'.
@@ -212,5 +212,5 @@
 		'<td class="nowrap">'.form::checkbox(array('filters_active[]'),$fid,$f->active, '', '', false, 'title="'.__('Active').'"').'</td>'.
 		'<td class="nowrap">'.form::checkbox(array('filters_auto_del[]'),$fid,$f->auto_delete, '', '', false, 'title="'.__('Auto Del.').'"').'</td>'.
-		'<td class="nowrap" scope="row">'.$f->name.'</td>'.
+		'<td class="nowrap" scope="raw">'.$f->name.'</td>'.
 		'<td class="maximal">'.$f->description.'</td>'.
 		'<td class="status">'.$gui_link.'</td>'.
Index: plugins/attachments/_admin.php
===================================================================
--- plugins/attachments/_admin.php	(revision 1501)
+++ plugins/attachments/_admin.php	(revision 1179)
@@ -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,10 +31,10 @@
 					$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>'.
 				'<ul>'.
-				'<li><a class="media-link" href="media_item.php?id='.$f->media_id.'" '.
+				'<li><a class="media-link" href="media_item.php?id='.$f->media_id.'"'.
 				'title="'.$f->basename.'">'.$ftitle.'</a></li>'.
 				'<li>'.$f->media_dtstr.'</li>'.
@@ -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: 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 1296)
@@ -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,8 +24,4 @@
 		'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',
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 1339)
@@ -96,5 +96,5 @@
 <body>
 <?php
-	echo dcPage::breadcrumb(
+	dcPage::breadcrumb(
 		array(
 			html::escapeHTML($core->blog->name) => '',
@@ -103,5 +103,5 @@
 ?>
 
-<?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 +114,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 +123,5 @@
 	$core->formNonce().
 	'<input type="submit" name="edit_cat" value="'.__('Save').'"/></p>'.
+	'</fieldset>'.
 	'</form>';
 }
@@ -132,29 +133,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 +167,5 @@
 	'</tr>'.
 	
-	'<tr class="line">'.
+	'<tr>'.
 	'<th>'.__('_xfn_Friendship').'</th>'.
 	'<td><p>'.
@@ -176,5 +180,5 @@
 	'</tr>'.
 	
-	'<tr class="line">'.
+	'<tr>'.
 	'<th>'.__('_xfn_Physical').'</th>'.
 	'<td><p>'.
@@ -184,5 +188,5 @@
 	'</tr>'.
 	
-	'<tr class="line">'.
+	'<tr>'.
 	'<th>'.__('_xfn_Professional').'</th>'.
 	'<td><p>'.
@@ -194,5 +198,5 @@
 	'</tr>'.
 	
-	'<tr class="line">'.
+	'<tr>'.
 	'<th>'.__('_xfn_Geographical').'</th>'.
 	'<td><p>'.
@@ -205,5 +209,5 @@
 	'</tr>'.
 	
-	'<tr class="line">'.
+	'<tr>'.
 	'<th>'.__('_xfn_Family').'</th>'.
 	'<td><p>'.
@@ -222,5 +226,5 @@
 	'</tr>'.
 	
-	'<tr class="line">'.
+	'<tr>'.
 	'<th>'.__('_xfn_Romantic').'</th>'.
 	'<td><p>'.
@@ -237,10 +241,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 1339)
@@ -178,5 +178,5 @@
 <body>
 <?php
-	echo dcPage::breadcrumb(
+	dcPage::breadcrumb(
 		array(
 			html::escapeHTML($core->blog->name) => '',
@@ -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 1339)
@@ -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,5 +221,5 @@
 <body>
 <?php
-echo dcPage::breadcrumb(
+dcPage::breadcrumb(
 	array(
 		html::escapeHTML($core->blog->name) => '',
@@ -235,5 +229,5 @@
 
 echo
-'<p><a class="back" href="blog_theme.php">'.__('Back to Blog themes').'</a></p>';
+'<p><a class="back" href="blog_theme.php">'.__('back').'</a></p>';
 
 
@@ -249,45 +243,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 +291,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 +315,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 +455,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/_admin.php
===================================================================
--- plugins/daInstaller/_admin.php	(revision 1505)
+++ plugins/daInstaller/_admin.php	(revision 1046)
Index: plugins/daInstaller/_install.php
===================================================================
--- plugins/daInstaller/_install.php	(revision 1505)
+++ plugins/daInstaller/_install.php	(revision 1046)
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 1505)
+++ plugins/daInstaller/index.php	(revision 1339)
@@ -255,4 +255,5 @@
 '</head>'.
 '<body>'.
+infoMessages();
 
 dcPage::breadcrumb(
@@ -260,7 +261,5 @@
 		__('System') => '',
 		'<span class="page-title">'.__('DotAddict.org Installer').'</span>' => ''
-	)).
-
-infoMessages();
+	));
 
 echo
@@ -298,17 +297,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 1298)
@@ -180,7 +180,7 @@
 		
 		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>'.
+		'<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" class="classic">'.__('Upload a backup file').
@@ -191,7 +191,7 @@
 		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" class="classic">'.__('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,6 +209,6 @@
 		{
 			echo
-			'<form action="'.$this->getURL(true).'" method="post" enctype="multipart/form-data" id="formfull" class="fieldset">'.
-			'<h3>'.__('Multiple blogs').'</h3>'.
+			'<form action="'.$this->getURL(true).'" method="post" enctype="multipart/form-data" id="formfull">'.
+			'<fieldset><legend>'.__('Multiple blogs').'</legend>'.
 			'<p class="warning">'.__('This will reset all the content of your database, except users.').'</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 1339)
@@ -74,5 +74,5 @@
 
 if ($type && $module !== null) {
-	echo dcPage::breadcrumb(
+	dcPage::breadcrumb(
 		array(
 			__('Plugins') => '',
@@ -89,5 +89,5 @@
 }
 else {
-	echo dcPage::breadcrumb(
+	dcPage::breadcrumb(
 		array(
 			__('Plugins') => '',
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 1339)
@@ -70,5 +70,5 @@
 <body>
 <?php
-	echo dcPage::breadcrumb(
+	dcPage::breadcrumb(
 		array(
 			__('Plugins') => '',
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/_define.php
===================================================================
--- plugins/pages/_define.php	(revision 1442)
+++ plugins/pages/_define.php	(revision 1179)
@@ -16,5 +16,5 @@
 	/* Description*/	"Serve entries as simple web pages",
 	/* Author */		"Olivier Meunier",
-	/* Version */		'1.3',
+	/* Version */		'1.2',
 	array(
 		'permissions' =>	'contentadmin,pages',
@@ -22,2 +22,3 @@
 	)
 );
+?>
Index: lugins/pages/_install.php
===================================================================
--- plugins/pages/_install.php	(revision 1505)
+++ 	(revision )
@@ -1,55 +1,0 @@
-<?php
-# -- BEGIN LICENSE BLOCK ---------------------------------------
-#
-# This file is part of Dotclear 2.
-#
-# Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear
-# Licensed under the GPL version 2.0 license.
-# See LICENSE file or
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-#
-# -- END LICENSE BLOCK -----------------------------------------
-
-if (!defined('DC_CONTEXT_ADMIN')){return;}
-
-$version = $core->plugins->moduleInfo('pages','version');
-if (version_compare($core->getVersion('pages'),$version,'>=')) {
-	return;
-}
-
-/* Create first page
--------------------------------------------------------- */
-$core->setBlog('default');
-
-$core->blog->settings->addNamespace('pages');
-
-$params = array(
-	'post_type' => 'page',
-	'no_content' => true
-);
-$counter = $core->blog->getPosts($params,true);
-
-If( $counter->f(0) == 0 && $core->blog->settings->pages->firstpage == null ) {
-	
-	$core->blog->settings->pages->put('firstpage',true, 'boolean');
-
-	$cur = $core->con->openCursor($core->prefix.'post');
-	$cur->user_id = $core->auth->userID();
-	$cur->post_type = 'page';
-	$cur->post_format = 'xhtml';
-	$cur->post_lang = $core->blog->settings->system->lang;
-	$cur->post_title = __('My first page');
-	$cur->post_content = __('<p>'.__('This is your first page. When you\'re ready to blog, log in to edit or delete it.').'</p>');
-	$cur->post_content_xhtml = $cur->post_content;
-	$cur->post_excerpt = '';
-	$cur->post_excerpt_xhtml = $cur->post_excerpt;
-	$cur->post_status = 1;
-	$cur->post_open_comment = 0;
-	$cur->post_open_tb = 0;
-	$post_id = $core->blog->addPost($cur);
-	
-}
-
-$core->setVersion('pages',$version);
-return true;
-?>
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 1339)
@@ -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,5 +177,5 @@
 <body>
 <?php
-echo dcPage::breadcrumb(
+dcPage::breadcrumb(
 	array(
 		html::escapeHTML($core->blog->name) => '',
Index: plugins/pages/page.php
===================================================================
--- plugins/pages/page.php	(revision 1508)
+++ plugins/pages/page.php	(revision 1339)
@@ -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);
@@ -315,57 +315,57 @@
 <?php
 
+if (!empty($_GET['upd'])) {
+	dcPage::message(__('Page has been successfully updated.'));
+}
+elseif (!empty($_GET['crea'])) {
+	dcPage::message(__('Page has been successfully created.'));
+}
+elseif (!empty($_GET['attached'])) {
+	dcPage::message(__('File has been successfully attached.'));
+}
+elseif (!empty($_GET['rmattach'])) {
+	dcPage::message(__('Attachment has been successfully removed.'));
+}
+
+# XHTML conversion
+if (!empty($_GET['xconv']))
+{
+	$post_excerpt = $post_excerpt_xhtml;
+	$post_content = $post_content_xhtml;
+	$post_format = 'xhtml';
+	
+	dcPage::message(__('Don\'t forget to validate your XHTML conversion by saving your post.'));
+}
+
 if ($post_id) {
 	switch ($post_status) {
 		case 1:
-			$img_status = sprintf($img_status_pattern,__('Published'),'check-on.png');
+			$img_status = sprintf($img_status_pattern,__('published'),'check-on.png');
 			break;
 		case 0:
-			$img_status = sprintf($img_status_pattern,__('Unpublished'),'check-off.png');
+			$img_status = sprintf($img_status_pattern,__('unpublished'),'check-off.png');
 			break;
 		case -1:
-			$img_status = sprintf($img_status_pattern,__('Scheduled'),'scheduled.png');
+			$img_status = sprintf($img_status_pattern,__('scheduled'),'scheduled.png');
 			break;
 		case -2:
-			$img_status = sprintf($img_status_pattern,__('Pending'),'check-wrn.png');
+			$img_status = sprintf($img_status_pattern,__('pending'),'check-wrn.png');
 			break;
 		default:
 			$img_status = '';
 	}
-	$edit_entry_title = '&ldquo;'.$post_title.'&rdquo;'.' '.$img_status;
+	$edit_entry_title = ' &ldquo;'.$post_title.'&rdquo;'.' '.$img_status;
 } else {
-	$edit_entry_title = $page_title;
-}
-echo dcPage::breadcrumb(
+	$edit_entry_title = '';
+}
+dcPage::breadcrumb(
 	array(
 		html::escapeHTML($core->blog->name) => '',
 		__('Pages') => $p_url,
-		'<span class="page-title">'.$edit_entry_title.'</span>' => ''
+		'<span class="page-title">'.$page_title.$edit_entry_title.'</span>' => ''
 	));
 
-if (!empty($_GET['upd'])) {
-	dcPage::message(__('Page has been successfully updated.'));
-}
-elseif (!empty($_GET['crea'])) {
-	dcPage::message(__('Page has been successfully created.'));
-}
-elseif (!empty($_GET['attached'])) {
-	dcPage::message(__('File has been successfully attached.'));
-}
-elseif (!empty($_GET['rmattach'])) {
-	dcPage::message(__('Attachment has been successfully removed.'));
-}
-
-# XHTML conversion
-if (!empty($_GET['xconv']))
-{
-	$post_excerpt = $post_excerpt_xhtml;
-	$post_content = $post_content_xhtml;
-	$post_format = 'xhtml';
-	
-	dcPage::message(__('Don\'t forget to validate your XHTML conversion by saving your post.'));
-}
-
 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 class="preview_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>';
 }
 
@@ -403,10 +403,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 +417,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 +425,5 @@
 	
 	echo
-	'<p class="border-top">'.
+	'<p>'.
 	($post_id ? form::hidden('id',$post_id) : '').
 	'<input type="submit" value="'.__('Save').' (s)" '.
@@ -455,15 +453,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 +487,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 +510,5 @@
 	{
 		echo
-		'<h4 class="clear">'.__('Attachments').'</h4>';
+		'<h3 class="clear">'.__('Attachments').'</h3>';
 		foreach ($post_media as $f)
 		{
@@ -532,5 +530,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 +539,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,13 +577,13 @@
 	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';
 	}
 	
 	if ($can_edit_page && $core->auth->check('delete,contentadmin',$core->blog->id))
 	{
-		$combo_action[__('Delete')] = 'delete';
+		$combo_action[__('delete')] = 'delete';
 	}
 	
@@ -619,5 +617,5 @@
 		'<p class="col checkboxes-helpers"></p>'.
 		
-		'<p class="col right"><label for="action" class="classic">'.__('Selected comments action:').'</label> '.
+		'<p class="col right"><label for="action">'.__('Selected comments action:').'</label> '.
 		form::combo('action',$combo_action).
 		form::hidden('redir',html::escapeURL($redir_url).'&amp;id='.$post_id.'&amp;co=1').
@@ -641,15 +639,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> '.
@@ -692,9 +690,9 @@
 	echo
 	'<table class="comments-list"><tr>'.
-	'<th colspan="2" class="nowrap first">'.__('Author').'</th>'.
+	'<th colspan="2">'.__('Author').'</th>'.
 	'<th>'.__('Date').'</th>'.
 	'<th class="nowrap">'.__('IP address').'</th>'.
 	'<th>'.__('Status').'</th>'.
-	'<th>'.__('Edit').'</th>'.
+	'<th>&nbsp;</th>'.
 	'</tr>';
 	
@@ -706,14 +704,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 +722,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>'.
@@ -730,5 +728,5 @@
 		'<td class="nowrap status">'.$img_status.'</td>'.
 		'<td class="nowrap status"><a href="'.$comment_url.'">'.
-		'<img src="images/edit-mini.png" alt="" title="'.__('Edit this comment').'" /> '.__('Edit').'</a></td>'.
+		'<img src="images/edit-mini.png" alt="" title="'.__('Edit this comment').'" /></a></td>'.
 		
 		'</tr>';
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 1339)
@@ -52,5 +52,5 @@
 <?php
 
-echo dcPage::breadcrumb(
+dcPage::breadcrumb(
 	array(
 		__('Plugins') => '',
@@ -64,6 +64,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 +71,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 +80,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 +91,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 +101,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/index.php
===================================================================
--- plugins/simpleMenu/index.php	(revision 1474)
+++ plugins/simpleMenu/index.php	(revision 1339)
@@ -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,6 +368,21 @@
 <?php
 
-if ($step) {
-	echo dcPage::breadcrumb(
+if (!empty($_GET['added'])) {
+	dcPage::message(__('Menu item has been successfully added.'));
+}
+if (!empty($_GET['removed'])) {
+	dcPage::message(__('Menu items have been successfully removed.'));
+}
+if (!empty($_GET['neworder'])) {
+	dcPage::message(__('Menu items have been successfully updated.'));
+}
+if (!empty($_GET['updated'])) {
+	dcPage::message(__('Menu items have been successfully updated.'));
+}
+
+if ($step) 
+{
+	// Formulaire d'ajout d'un item
+	dcPage::breadcrumb(
 		array(
 			html::escapeHTML($core->blog->name) => '',
@@ -375,32 +390,9 @@
 			'<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.'));
-}
-if (!empty($_GET['removed'])) {
-	dcPage::message(__('Menu items have been successfully removed.'));
-}
-if (!empty($_GET['neworder'])) {
-	dcPage::message(__('Menu items have been successfully updated.'));
-}
-if (!empty($_GET['updated'])) {
-	dcPage::message(__('Menu items have been successfully updated.'));
-}
-
-if ($step)
-{
-	// Formulaire d'ajout d'un item
+
 	switch ($step) {
 		case 1:
 			// Selection du type d'item
-			echo '<form id="additem" action="'.$p_url.'&amp;add=2" method="post">';
+			echo '<form id="additem" action="'.$p_url.'&add=2" method="post">';
 			echo '<fieldset><legend>'.__('Select type').'</legend>';
 			echo '<p class="field"><label for="item_type" class="classic">'.__('Type of item menu:').'</label>'.form::combo('item_type',$items_combo,'').'</p>';
@@ -412,5 +404,5 @@
 			if ($items[$item_type][1]) {
 				// Choix à faire
-				echo '<form id="additem" action="'.$p_url.'&amp;add=3" method="post">';
+				echo '<form id="additem" action="'.$p_url.'&add=3" method="post">';
 				echo '<fieldset><legend>'.$item_type_label.'</legend>';
 				switch ($item_type) {
@@ -449,5 +441,5 @@
 		case 3:
 			// Libellé et description
-			echo '<form id="additem" action="'.$p_url.'&amp;add=4" method="post">';
+			echo '<form id="additem" action="'.$p_url.'&add=4" method="post">';
 			echo '<fieldset><legend>'.$item_type_label.($item_select_label != '' ? ' ('.$item_select_label.')' : '').'</legend>';
 			echo '<p class="field"><label for="item_label" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.
@@ -467,5 +459,13 @@
 // Liste des items
 if (!$step) {
-	echo '<form id="menuitemsappend" action="'.$p_url.'&amp;add=1" method="post">';
+	dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			'<span class="page-title">'.$page_title.'</span>' => ''
+		));
+}
+
+if (!$step) {
+	echo '<form id="menuitemsappend" action="'.$p_url.'&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 '</form>';
Index: plugins/tags/_admin.php
===================================================================
--- plugins/tags/_admin.php	(revision 1471)
+++ plugins/tags/_admin.php	(revision 1280)
@@ -18,5 +18,5 @@
 require dirname(__FILE__).'/_widgets.php';
 
-$core->addBehavior('adminPostFormItems',array('tagsBehaviors','tagsField'));
+$core->addBehavior('adminPostFormSidebar',array('tagsBehaviors','tagsField'));
 
 $core->addBehavior('adminAfterPostCreate',array('tagsBehaviors','setTags'));
@@ -71,5 +71,5 @@
 	}
 	
-	public static function tagsField($main,$sidebar,$post)
+	public static function tagsField($post)
 	{
 		$meta =& $GLOBALS['core']->meta;
@@ -80,7 +80,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>';
 	}
 	
@@ -229,16 +230,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 +260,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 +314,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/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 1339)
@@ -110,5 +110,5 @@
 
 <?php
-echo dcPage::breadcrumb(
+dcPage::breadcrumb(
 	array(
 		html::escapeHTML($core->blog->name) => '',
@@ -130,7 +130,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 +161,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 1339)
@@ -21,5 +21,5 @@
 <body>
 <?php
-echo dcPage::breadcrumb(
+dcPage::breadcrumb(
 	array(
 		html::escapeHTML($core->blog->name) => '',
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 1339)
@@ -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">
@@ -87,9 +87,9 @@
 <body>
 <?php
-echo dcPage::breadcrumb(
+dcPage::breadcrumb(
 	array(
 		html::escapeHTML($core->blog->name) => '',
 		__('Blog appearance') => 'blog_theme.php',
-		'<span class="page-title">'.__('Edit theme files').'</span>' => ''
+		'<span class="page-title">'.__('Theme Editor').'</span>' => ''
 	));
 ?>
Index: plugins/userPref/index.php
===================================================================
--- plugins/userPref/index.php	(revision 1474)
+++ plugins/userPref/index.php	(revision 1339)
@@ -81,6 +81,6 @@
 	
 	return
-	'<tr class="line">'.
-	'<td scope="row"><label for="s_'.$id.'">'.sprintf($slabel,html::escapeHTML($id)).'</label></td>'.
+	'<tr>'.
+	'<td scope="raw"><label for="s_'.$id.'">'.sprintf($slabel,html::escapeHTML($id)).'</label></td>'.
 	'<td>'.$field.'</td>'.
 	'<td>'.$s['type'].'</td>'.
@@ -111,5 +111,13 @@
 <body>
 <?php
-echo dcPage::breadcrumb(
+if (!empty($_GET['upd'])) {
+	dcPage::message(__('Preferences successfully updated'));
+}
+
+if (!empty($_GET['upda'])) {
+	dcPage::message(__('Preferences definition successfully updated'));
+}
+
+dcPage::breadcrumb(
 	array(
 		__('System') => '',
@@ -117,12 +125,4 @@
 		'<span class="page-title">'.__('user:preferences').'</span>' => ''
 	));
-
-if (!empty($_GET['upd'])) {
-	dcPage::message(__('Preferences successfully updated'));
-}
-
-if (!empty($_GET['upda'])) {
-	dcPage::message(__('Preferences definition successfully updated'));
-}
 ?>
 
@@ -130,5 +130,5 @@
 
 <?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".
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 1339)
@@ -188,5 +188,5 @@
 <body>
 <?php
-echo dcPage::breadcrumb(
+dcPage::breadcrumb(
 	array(
 		html::escapeHTML($core->blog->name) => '',
@@ -197,6 +197,5 @@
 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 +205,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 +215,5 @@
 echo
 '</div>'.
+'</fieldset>'.
 '<p><input type="submit" class="js-remove" name="append" value="'.__('Add widgets to sidebars').'" />'.
 $core->formNonce().'</p>'.
@@ -223,5 +223,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 +229,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 +235,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 +252,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 +316,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 +335,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 +346,5 @@
 	}
 	
-	$res .= '</div>';
+	$res .= '</div></fieldset>';
 	
 	return $res;
Index: plugins/widgets/style.css
===================================================================
--- plugins/widgets/style.css	(revision 1483)
+++ plugins/widgets/style.css	(revision 1301)
@@ -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: #F0EFEA;
 	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: #bbb;
 	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>';
 ?>
