Index: .hgsub
===================================================================
--- .hgsub	(revision 0)
+++ .hgsub	(revision 786)
@@ -1,1 +1,1 @@
-inc/libs/clearbricks = https://bitbucket.org/dotclear/clearbricks
+inc/libs/clearbricks = https://clearbricks.org/hg
Index: .hgsubstate
===================================================================
--- .hgsubstate	(revision 782)
+++ .hgsubstate	(revision 843)
@@ -1,1 +1,1 @@
-cf8874ccc1fae0e9315d461497ff019f6dafeb7f inc/libs/clearbricks
+4f62679e0756104bdc0b49eacaed9aba68735aa5 inc/libs/clearbricks
Index: .hgtags
===================================================================
--- .hgtags	(revision 369)
+++ .hgtags	(revision 800)
@@ -1,2 +1,7 @@
 ec077f3c6b20bc6f7f40a113acaff0220457a2c4 2.3.0
 4e0137ddb12474d62b88c4966d5895a391b6d382 2.3.1
+43a9cace0f39c95463e66346dcc953ced40836be 2.4.2
+43a9cace0f39c95463e66346dcc953ced40836be 2.4.2
+0000000000000000000000000000000000000000 2.4.2
+0000000000000000000000000000000000000000 2.4.2
+6b3942c0cf7eee71ebd906ec0827c5962823dedf 2.4.2
Index: CHANGELOG
===================================================================
--- CHANGELOG	(revision 777)
+++ CHANGELOG	(revision 824)
@@ -1,12 +1,27 @@
-Dotclear 2.4.1-dev
-===========================================================
-* New behavior : publicGetURLFor
-* New behavior : publicRegisterURL
-* New behavior : templatePrepareParams
+Dotclear 2.4.3 - 2012-05-18
+===========================================================
+* Admin: My favorites menu can be hidden
+* Admin: Fix wordpress importer
+* Admin: about:config and user:pref tables are now more readable
+* Ductile theme: Blog logo can be changed
+* New lithuanian language (thanks to Paulius Černakauskas)
+* Various bug fixes
+
+Dotclear 2.4.2 - 2012-02-11
+===========================================================
+* Security fix release
+* 4 XSS vulnerabilities fixed, discovered by High-Tech Bridge
+
+Dotclear 2.4.1.2 - 2011-12-24
+===========================================================
+* Happy Christmas!
+* Security: fixed one SQL injection vulnerability in Clearbricks, thanks to Adjaya
+* New behaviour: publicGetURLFor
+* New behaviour: publicRegisterURL
+* New behaviour: templatePrepareParams
 * Changed the way to get artefacts URLs, through $core->url->getURLFor calls, instead of $core->url->getBase()
 * new/updated parameter sql_only in $core->blog->getPosts and $core->blog->getComments
 
-
-Dotclear 2.4.0
+Dotclear 2.4.0 - 2011-11-13
 ===========================================================
 * Admin: new iconset from Thomas Daveluy
@@ -21,5 +36,5 @@
 * Various bug fixes
 
-Dotclear 2.3.1 - 2001-06-14
+Dotclear 2.3.1 - 2011-06-14
 ===========================================================
 * Updated makefile for cleaner distrib.
Index: admin/auth.php
===================================================================
--- admin/auth.php	(revision 550)
+++ admin/auth.php	(revision 794)
@@ -31,5 +31,5 @@
 
 $change_pwd = $core->auth->allowPassChange() && isset($_POST['new_pwd']) && isset($_POST['new_pwd_c']) && isset($_POST['login_data']);
-$login_data = !empty($_POST['login_data']) ? $_POST['login_data'] : null;
+$login_data = !empty($_POST['login_data']) ? html::escapeHTML($_POST['login_data']) : null;
 $recover = $core->auth->allowPassChange() && !empty($_REQUEST['recover']);
 $safe_mode = !empty($_REQUEST['safe_mode']);
Index: admin/blog_pref.php
===================================================================
--- admin/blog_pref.php	(revision 557)
+++ admin/blog_pref.php	(revision 887)
@@ -98,4 +98,20 @@
 	$img_title_combo[html::escapeHTML($blog_settings->system->media_img_title_pattern)] = html::escapeHTML($blog_settings->system->media_img_title_pattern);
 }
+
+# Image default size combo
+$img_default_size_combo = array();
+$media = new dcMedia($core);
+$img_default_size_combo[__('original')] = 'o';
+foreach ($media->thumb_sizes as $code => $size) {
+	$img_default_size_combo[__($size[2])] = $code;
+}
+
+# Image default alignment combo
+$img_default_alignment_combo = array(
+	__('None') => 'none',
+	__('Left') => 'left',
+	__('Right') => 'right',
+	__('Center') => 'center'
+);
 
 # Robots policy options
@@ -198,4 +214,7 @@
 		$blog_settings->system->put('media_img_m_size',$media_img_m_size);
 		$blog_settings->system->put('media_img_title_pattern',$_POST['media_img_title_pattern']);
+		$blog_settings->system->put('media_img_default_size',$_POST['media_img_default_size']);
+		$blog_settings->system->put('media_img_default_alignment',$_POST['media_img_default_alignment']);
+		$blog_settings->system->put('media_img_default_link',!empty($_POST['media_img_default_link']));
 		$blog_settings->system->put('nb_post_per_feed',$nb_post_per_feed);
 		$blog_settings->system->put('nb_comment_per_feed',$nb_comment_per_feed);
@@ -431,5 +450,20 @@
 	'<p>'.form::combo('media_img_title_pattern',$img_title_combo,html::escapeHTML($blog_settings->system->media_img_title_pattern)).'</p>'.
 	'</div>'.
-	'</div>'.
+
+	'<div class="col">'.
+	'<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')).
+	'</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)).
+	'</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).
+	__('As a link to original image').'</label></p>'.
+	'</div>'.
+	'</div>'.
+
 	'</fieldset>';
 	
@@ -523,13 +557,5 @@
 				' ('.html::escapeHTML(dcUtils::getUserCN(
 					$k, $v['name'], $v['firstname'], $v['displayname']
-				)).')';
-				
-				if (!$v['super'] && $core->auth->isSuperAdmin()) {
-					echo
-					' - <a href="permissions.php?blog_id[]='.$blog_id.'&amp;user_id[]='.$k.'">'
-					.__('Change permissions').'</a>';
-				}
-				
-				echo '</h4>';
+				)).')</h4>';
 				
 				echo '<ul>';
@@ -542,4 +568,17 @@
 				}
 				echo '</ul>';
+				
+				if (!$v['super'] && $core->auth->isSuperAdmin()) {
+					echo 
+					'<form action="users_actions.php" method="post">'.
+					'<p><input type="submit" value="'.__('Change permissions').'" />'.
+					form::hidden(array('redir'),'blog_pref.php?id='.$k).
+					form::hidden(array('action'),'perms').
+					form::hidden(array('users[]'),$k).
+					form::hidden(array('blogs[]'),$blog_id).
+					$core->formNonce().
+					'</p>'.
+					'</form>';
+				}
 			}
 		}
Index: admin/blogs.php
===================================================================
--- admin/blogs.php	(revision 782)
+++ admin/blogs.php	(revision 792)
@@ -15,12 +15,26 @@
 dcPage::check('usage,contentadmin');
 
+# Filters
+$sortby_combo = array(
+__('Last update') => 'blog_upddt',
+__('Blog name') => 'UPPER(blog_name)',
+__('Blog ID') => 'B.blog_id'
+);
+
+$order_combo = array(
+__('Descending') => 'desc',
+__('Ascending') => 'asc'
+);
+
 $q = !empty($_GET['q']) ? $_GET['q'] : '';
+$sortby = !empty($_GET['sortby']) ? $_GET['sortby'] : 'blog_upddt';
+$order = !empty($_GET['order']) ? $_GET['order'] : 'desc';
 
-$blogs_list = new adminBlogList($core);
+$page = !empty($_GET['page']) ? $_GET['page'] : 1;
+$nb_per_page =  30;
 
-$params = new ArrayObject();
-
-# - Limit, sortby and order filter
-$params = $blogs_list->applyFilters($params);
+if (!empty($_GET['nb']) && (integer) $_GET['nb'] > 0) {
+	$nb_per_page = (integer) $_GET['nb'];
+}
 
 $show_filters = false;
@@ -32,8 +46,21 @@
 }
 
+# - Sortby and order filter
+if ($sortby !== '' && in_array($sortby,$sortby_combo)) {
+	if ($order !== '' && in_array($order,$order_combo)) {
+		$params['order'] = $sortby.' '.$order;
+	}
+	
+	if ($sortby != 'blog_upddt' || $order != 'desc') {
+		$show_filters = true;
+	}
+}
+
+$params['limit'] = array((($page-1)*$nb_per_page),$nb_per_page);
+
 try {
 	$counter = $core->getBlogs($params,1);
 	$rs = $core->getBlogs($params);
-	$blogs_list->setItems($rs,$counter->f(0));
+	$nb_blog = $counter->f(0);
 } catch (Exception $e) {
 	$core->error->add($e->getMessage());
@@ -66,10 +93,23 @@
 	echo
 	'<form action="blogs.php" method="get" id="filters-form">'.
-	'<fieldset><legend>'.__('Filters').'</legend>'.
+	'<fieldset class="two-cols"><legend>'.__('Filters').'</legend>'.
 	
+	'<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="col">'.
 	'<p><label for="q">'.__('Search:').' '.
 	form::field('q',20,255,html::escapeHTML($q)).
 	'</label></p>'.
-	'<p><input type="submit" value="'.__('Apply filters').'" /></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>'.
 	
 	'<br class="clear" />'. //Opera sucks
@@ -78,8 +118,68 @@
 	
 	# Show blogs
-	$blogs_list->display();
+	if ($nb_blog == 0)
+	{
+		echo '<p><strong>'.__('No blog').'</strong></p>';
+	}
+	else
+	{
+		$pager = new pager($page,$nb_blog,$nb_per_page,10);
+		$pager->var_page = 'page';
+		
+		echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+		
+		echo
+		'<table class="clear"><tr>'.
+		'<th>'.__('Blog name').'</th>'.
+		'<th class="nowrap">'.__('Last update').'</th>'.
+		'<th class="nowrap">'.__('Entries').'</th>'.
+		'<th class="nowrap">'.__('Blog ID').'</th>'.
+		'<th>&nbsp;</th>'.
+		'<th class="nowrap">'.__('Status').'</th>'.
+		'</tr>';
+		
+		while ($rs->fetch()) {
+			echo blogLine($rs);
+		}
+		
+		echo '</table>';
+		
+		echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+	}
 }
 
 dcPage::close();
 
+function blogLine($rs)
+{
+	global $core;
+	
+	$blog_id = html::escapeHTML($rs->blog_id);
+	$edit_link = '';
+	
+	if ($GLOBALS['core']->auth->isSuperAdmin()) {
+		$edit_link = 
+		'<a href="blog.php?id='.$blog_id.'" '.
+		'title="'.sprintf(__('Edit blog %s'),$blog_id).'">'.
+		__('edit').'</a>';
+	}
+	
+	$img_status = $rs->blog_status == 1 ? 'check-on' : 'check-off';
+	$txt_status = $GLOBALS['core']->getBlogStatus($rs->blog_status);
+	$img_status = sprintf('<img src="images/%1$s.png" alt="%2$s" title="%2$s" />',$img_status,$txt_status);
+	$offset = dt::getTimeOffset($core->auth->getInfo('user_tz'));
+	$blog_upddt = dt::str(__('%Y-%m-%d %H:%M'),strtotime($rs->blog_upddt) + $offset);
+	
+	return
+	'<tr class="line">'.
+	'<td class="maximal"><a href="index.php?switchblog='.$rs->blog_id.'" '.
+	'title="'.sprintf(__('Switch to blog %s'),$rs->blog_id).'">'.
+	html::escapeHTML($rs->blog_name).'</a></td>'.
+	'<td class="nowrap">'.$blog_upddt.'</td>'.
+	'<td class="nowrap">'.$core->countBlogPosts($rs->blog_id).'</td>'.
+	'<td class="nowrap">'.$blog_id.'</td>'.
+	'<td>'.$edit_link.'</td>'.
+	'<td class="status">'.$img_status.'</td>'.
+	'</tr>';
+}
 ?>
Index: admin/comments.php
===================================================================
--- admin/comments.php	(revision 783)
+++ admin/comments.php	(revision 796)
@@ -15,21 +15,9 @@
 dcPage::check('usage,contentadmin');
 
-class authorFilter extends textFilter {
-	public function header() {
-		return 
-			dcPage::jqueryUI().
-			dcPage::jsLoad('js/author_filter.js')
-			;
-	}
-	public function applyFilter($params) {
-		$val = preg_split('/\s*,\s*/',$this->values[0]);
-		$params[$this->request_param]=$val;
-	}
-}
-
-
 # Creating filter combo boxes
 # Filter form we'll put in html_block
-$status_combo = array();
+$status_combo = array(
+'-' => ''
+);
 foreach ($core->blog->getAllCommentStatus() as $k => $v) {
 	$status_combo[$v] = (string) $k;
@@ -37,17 +25,100 @@
 
 $type_combo = array(
-__('comment') => '0',
-__('trackback') => '1'
-);
-
-$comment_list = new adminCommentList($core);
-
-$params = new ArrayObject();
+'-' => '',
+__('comment') => 'co',
+__('trackback') => 'tb'
+);
+
+$sortby_combo = array(
+__('Date') => 'comment_dt',
+__('Entry title') => 'post_title',
+__('Author') => 'comment_author',
+__('Status') => 'comment_status'
+);
+
+$order_combo = array(
+__('Descending') => 'desc',
+__('Ascending') => 'asc'
+);
+
+
+/* Get comments
+-------------------------------------------------------- */
+$author = isset($_GET['author']) ?	$_GET['author'] : '';
+$status = isset($_GET['status']) ?		$_GET['status'] : '';
+$type = !empty($_GET['type']) ?		$_GET['type'] : '';
+$sortby = !empty($_GET['sortby']) ?	$_GET['sortby'] : 'comment_dt';
+$order = !empty($_GET['order']) ?		$_GET['order'] : 'desc';
+$ip = !empty($_GET['ip']) ?			$_GET['ip'] : '';
+
+$with_spam = $author || $status || $type || $sortby != 'comment_dt' || $order != 'desc' || $ip;
+
+$show_filters = false;
+
+$page = !empty($_GET['page']) ? (integer) $_GET['page'] : 1;
+$nb_per_page =  30;
+
+if (!empty($_GET['nb']) && (integer) $_GET['nb'] > 0) {
+	if ($nb_per_page != $_GET['nb']) {
+		$show_filters = true;
+	}
+	$nb_per_page = (integer) $_GET['nb'];
+}
+
+$params['limit'] = array((($page-1)*$nb_per_page),$nb_per_page);
 $params['no_content'] = true;
 
-# - Limit, sortby and order filter
+# Author filter
+if ($author !== '') {
+	$params['q_author'] = $author;
+	$show_filters = true;
+} else {
+	$author='';
+}
+
+# - Type filter
+if ($type == 'tb' || $type == 'co') {
+	$params['comment_trackback'] = ($type == 'tb');
+	$show_filters = true;
+} else {
+	$type='';
+}
+
+# - Status filter
+if ($status !== '' && in_array($status,$status_combo)) {
+	$params['comment_status'] = $status;
+	$show_filters = true;
+} elseif (!$with_spam) {
+	$params['comment_status_not'] = -2;
+	$status='';
+} else {
+	$status='';
+}
+
+# - IP filter
+if ($ip) {
+	$params['comment_ip'] = $ip;
+	$show_filters = true;
+}
+
+# Sortby and order filter
+if ($sortby !== '' && in_array($sortby,$sortby_combo)) {
+	if ($order !== '' && in_array($order,$order_combo)) {
+		$params['order'] = $sortby.' '.$order;
+	} else {
+		$order = 'desc';
+	}
+	
+	if ($sortby != 'comment_dt' || $order != 'desc') {
+		$show_filters = true;
+	}
+} else {
+	$sortby = 'comment_dt';
+	$order = 'desc';
+}
 
 # Actions combo box
 $combo_action = array();
+$default = '';
 if ($core->auth->check('publish,contentadmin',$core->blog->id))
 {
@@ -59,5 +130,8 @@
 if ($core->auth->check('delete,contentadmin',$core->blog->id))
 {
-	$combo_action[__('delete')] = 'delete';
+	$combo_action[__('Delete')] = 'delete';
+	if ($status == -2) {
+		$default = 'delete';
+	}
 }
 
@@ -65,42 +139,10 @@
 $core->callBehavior('adminCommentsActionsCombo',array(&$combo_action));
 
-$filterSet = new dcFilterSet('comments','comments.php');
-
-$authorFilter = new authorFilter(
-		'author',__('Author'), __('Author'),'comment_author',20,255);
-$filterSet
-	->addFilter(new comboFilter(
-		'status',__('Status'), __('Status'), 'comment_status', $status_combo))
-	->addFilter(new booleanFilter(
-		'type',__('Type'), __('Type'), 'comment_trackback', $type_combo))
-	->addFilter($authorFilter)
-	->addFilter(new textFilter(
-		'ip',__('IP address'), __('IP address'), 'comment_ip',20,39));
-		
-$core->callBehavior('adminCommentsFilters',$filterSet);
-$filterSet->setExtra($comment_list);
-
-$filterSet->setup($_GET,$_POST);
-if (isset($_GET['author'])) {
-	$authorFilter->add();
-	$authorFilter->setValues($_GET['author']);
-}
-$with_spam=true;
 /* Get comments
 -------------------------------------------------------- */
 try {
-	$nfparams = $params->getArrayCopy();
-	$filtered = $filterSet->applyFilters($params);
-	$core->callBehavior('adminCommentsParams',$params);
 	$comments = $core->blog->getComments($params);
 	$counter = $core->blog->getComments($params,true);
-	if ($filtered) {
-		$totalcounter = $core->blog->getComments($nfparams,true);
-		$page_title = sprintf(__('Comments and Trackacks / %s filtered out of %s'),$counter->f(0),$totalcounter->f(0));
-	} else {
-		$page_title = __('Comments and Trackacks');
-	}
-
-	$comment_list->setItems($comments,$counter->f(0));
+	$comment_list = new adminCommentList($core,$comments,$counter->f(0));
 } catch (Exception $e) {
 	$core->error->add($e->getMessage());
@@ -109,6 +151,8 @@
 /* DISPLAY
 -------------------------------------------------------- */
-$starting_script = dcPage::jsLoad('js/_comments.js').$filterSet->header();
-
+$starting_script = dcPage::jsLoad('js/_comments.js');
+if (!$show_filters) {
+	$starting_script .= dcPage::jsLoad('js/filter-controls.js');
+}
 # --BEHAVIOR-- adminCommentsHeaders
 $starting_script .= $core->callBehavior('adminCommentsHeaders');
@@ -121,5 +165,47 @@
 {
 	# Filters
-	$filterSet->display();
+	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>';
 	
 	if (!$with_spam) {
@@ -135,5 +221,6 @@
 	
 	# Show comments
-	$comment_list->display('<form action="comments_actions.php" method="post" id="form-comments">'.
+	$comment_list->display($page,$nb_per_page,
+	'<form action="comments_actions.php" method="post" id="form-comments">'.
 	
 	'%s'.
@@ -143,8 +230,15 @@
 	
 	'<p class="col right"><label for="action" class="classic">'.__('Selected comments action:').'</label> '.
-	form::combo('action',$combo_action,'','','','','title="'.__('action: ').'"').
+	form::combo('action',$combo_action,$default,'','','','title="'.__('action: ').'"').
 	$core->formNonce().
 	'<input type="submit" value="'.__('ok').'" /></p>'.
-	str_replace('%','%%',$filterSet->getFormFieldsAsHidden()).
+	form::hidden(array('type'),$type).
+	form::hidden(array('sortby'),$sortby).
+	form::hidden(array('order'),$order).
+	form::hidden(array('author'),preg_replace('/%/','%%',$author)).
+	form::hidden(array('status'),$status).
+	form::hidden(array('ip'),preg_replace('/%/','%%',$ip)).
+	form::hidden(array('page'),$page).
+	form::hidden(array('nb'),$nb_per_page).
 	'</div>'.
 	
Index: admin/comments_actions.php
===================================================================
--- admin/comments_actions.php	(revision 782)
+++ admin/comments_actions.php	(revision 270)
@@ -30,5 +30,12 @@
 	{
 		$redir =
-		'comments.php?'.urldecode($_POST['f_query']);
+		'comments.php?type='.$_POST['type'].
+		'&author='.$_POST['author'].
+		'&status='.$_POST['status'].
+		'&sortby='.$_POST['sortby'].
+		'&ip='.$_POST['ip'].
+		'&order='.$_POST['order'].
+		'&page='.$_POST['page'].
+		'&nb='.(integer) $_POST['nb'];
 	}
 	
Index: dmin/dispatcher.php
===================================================================
--- admin/dispatcher.php	(revision 270)
+++ 	(revision )
@@ -1,34 +1,0 @@
-<?php
-# -- BEGIN LICENSE BLOCK ---------------------------------------
-#
-# This file is part of Dotclear 2.
-#
-# Copyright (c) 2003-2011 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 -----------------------------------------
-
-# Delete users
-if (!empty($_REQUEST['dispatch_action']))
-{
-	if ($_REQUEST['dispatch_action'] == 'deleteuser')
-	{
-		if (!empty($_REQUEST['user_id'])) {
-			$delete_users = $_REQUEST['user_id'];
-		}
-		
-		include dirname(__FILE__).'/users.php';
-		exit;
-	}
-	elseif ($_REQUEST['dispatch_action'] == 'setpermissions')
-	{
-		include dirname(__FILE__).'/permissions_blog.php';
-		exit;
-	}
-}
-
-echo '<p>What the hell are you doing here?</p>';
-exit;
-?>
Index: admin/install/wizard.php
===================================================================
--- admin/install/wizard.php	(revision 557)
+++ admin/install/wizard.php	(revision 858)
@@ -44,4 +44,13 @@
 if (is_file(DC_RC_PATH)) {
 	http::redirect('index.php');
+}
+
+if (!is_writable(dirname(DC_RC_PATH))) {
+	$err = '<p>'.sprintf(__('Path <strong>%s</strong> is not writable.'),path::real(dirname(DC_RC_PATH))).'</p>'.
+	'<p>'.__('Dotclear installation wizard could not create configuration file for you. '.
+		'You must change folder right or create the <strong>config.php</strong> '.
+		'file manually, please refer to '.
+		'<a href="http://dotclear.org/documentation/2.0/admin/install">'.
+		'the documentation</a> to learn how to do this.').'</p>';
 }
 
Index: dmin/js/_permissions.js
===================================================================
--- admin/js/_permissions.js	(revision 0)
+++ 	(revision )
@@ -1,56 +1,0 @@
-jQuery.fn.updatePermissionsForm = 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;
-			}
-			prop = e.name.match(re);
-			if (!prop) {
-				continue;
-			}
-			if (perms[prop[1]] == undefined) {
-				perms[prop[1]] = {};
-			}
-			perms[prop[1]][prop[2]] = e;
-		}
-		
-		// 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'].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'].disabled = E.checked;
-					E.onclick = function() { $(this.form).updatePermissionsForm(); };
-				}
-			}
-		}
-	});
-};
-
-$(function() {
-	$('#permissions-form').updatePermissionsForm();
-});
Index: dmin/js/_permissions_blog.js
===================================================================
--- admin/js/_permissions_blog.js	(revision 0)
+++ 	(revision )
@@ -1,5 +1,0 @@
-$(function() {
-	$('.checkboxes-helpers').each(function() {
-		dotclear.checkboxesHelpers(this);
-	});
-});
Index: admin/js/_users.js
===================================================================
--- admin/js/_users.js	(revision 548)
+++ admin/js/_users.js	(revision 860)
@@ -4,5 +4,5 @@
 	});
 	$('#form-users').submit(function() {
-		var action = $(this).find('select[name="dispatch_action"]').val();
+		var action = $(this).find('select[name="action"]').val();
 		var user_ids = new Array();
 		var nb_posts = new Array();
@@ -10,5 +10,5 @@
 		var msg_cannot_delete = false;
 		
-		$(this).find('input[name="user_id[]"]').each(function() {
+		$(this).find('input[name="users[]"]').each(function() {
 			user_ids.push(this);
 		});
@@ -41,5 +41,5 @@
 		
 		if (action == 'deleteuser') {
-			return window.confirm(dotclear.msg.confirm_delete_user.replace('%s',$('input[name="user_id[]"]:checked').size()));
+			return window.confirm(dotclear.msg.confirm_delete_user.replace('%s',$('input[name="users[]"]:checked').size()));
 		}
 		
Index: admin/js/_users_actions.js
===================================================================
--- admin/js/_users_actions.js	(revision 860)
+++ admin/js/_users_actions.js	(revision 860)
@@ -0,0 +1,59 @@
+jQuery.fn.updatePermissionsForm = 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;
+			}
+			prop = e.name.match(re);
+			if (!prop) {
+				continue;
+			}
+			if (perms[prop[1]] == undefined) {
+				perms[prop[1]] = {};
+			}
+			perms[prop[1]][prop[2]] = e;
+		}
+		
+		// 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'].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'].disabled = E.checked;
+					E.onclick = function() { $(this.form).updatePermissionsForm(); };
+				}
+			}
+		}
+	});
+};
+
+$(function() {
+	$('.checkboxes-helpers').each(function() {
+		dotclear.checkboxesHelpers(this);
+	});
+	$('#permissions-form').updatePermissionsForm();
+});
Index: dmin/js/author_filter.js
===================================================================
--- admin/js/author_filter.js	(revision 781)
+++ 	(revision )
@@ -1,58 +1,0 @@
-function split( val ) {
-	return val.split( /,\s*/ );
-}
-function extractLast(term) {
-	return split(term).pop();
-}
-
-$(function() {
-	$('#f_author')
-	.bind( "keydown", function( event ) {
-		if ( event.keyCode === $.ui.keyCode.TAB &&
-				$( this ).data( "autocomplete" ).menu.active ) {
-			event.preventDefault();
-		}
-	})
-	.autocomplete({
-		minLength: 2,
-		delay: 1000,
-		source: function(request,response) {
-			$.ajax({
-				url: 'services.php',
-				data: {
-					'f': 'searchCommentAuthor',
-					'q': extractLast(request.term)
-				},
-				success:function(data,status) {
-					results = [];
-					$(data).find('author').each(function(){
-						var name = $(this).attr('name');
-						results.push({label:name,value:name});
-					});
-					response(results);
-				}
-			});
-		},
-		search: function() {
-			var term = extractLast( this.value );
-			if ( term.length < 2 ) {
-				return false;
-			}
-		},
-		focus: function() {
-			// prevent value inserted on focus
-			return false;
-		},
-		select: function( event, ui ) {
-			var terms = split( this.value );
-			// remove the current input
-			terms.pop();
-			// add the selected item
-			terms.push( ui.item.value );
-			// add placeholder to get the comma-and-space at the end
-			terms.push( "" );
-			this.value = terms.join( ", " );
-			return false;
-		}		
-	});
-});
Index: dmin/js/filters.js
===================================================================
--- admin/js/filters.js	(revision 783)
+++ 	(revision )
@@ -1,6 +1,0 @@
-$(function() {
-	$('#toggle-filters').click(function(e) {
-		$('#filters').toggleClass('hidden');
-		$('#toggle-filters').toggleClass('opened');
-	});
-});
Index: dmin/js/jquery/jquery-ui-1.8.16.custom.min.js
===================================================================
--- admin/js/jquery/jquery-ui-1.8.16.custom.min.js	(revision 758)
+++ 	(revision )
@@ -1,571 +1,0 @@
-/*!
- * jQuery UI 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI
- */
-(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.16",
-keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({propAttr:c.fn.prop||c.fn.attr,_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=
-this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,
-"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":
-"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,
-outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a,
-"tabindex"),d=isNaN(b);return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&
-a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&
-c.ui.isOverAxis(b,e,i)}})}})(jQuery);
-;/*!
- * jQuery UI Widget 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Widget
- */
-(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)try{b(d).triggerHandler("remove")}catch(e){}k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(d){}});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=
-function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):
-d;if(e&&d.charAt(0)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=
-b.extend(true,{},this.options,this._getCreateOptions(),a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+
-"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a;if(arguments.length===0)return b.extend({},this.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(d,e){c._setOption(d,e)});return this},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",
-c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
-;/*!
- * jQuery UI Mouse 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Mouse
- *
- * Depends:
- *	jquery.ui.widget.js
- */
-(function(b){var d=false;b(document).mouseup(function(){d=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(c){return a._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(true===b.data(c.target,a.widgetName+".preventClickEvent")){b.removeData(c.target,a.widgetName+".preventClickEvent");c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+
-this.widgetName)},_mouseDown:function(a){if(!d){this._mouseStarted&&this._mouseUp(a);this._mouseDownEvent=a;var c=this,f=a.which==1,g=typeof this.options.cancel=="string"&&a.target.nodeName?b(a.target).closest(this.options.cancel).length:false;if(!f||g||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=
-this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();return true}}true===b.data(a.target,this.widgetName+".preventClickEvent")&&b.removeData(a.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(e){return c._mouseMove(e)};this._mouseUpDelegate=function(e){return c._mouseUp(e)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);a.preventDefault();return d=true}},_mouseMove:function(a){if(b.browser.msie&&
-!(document.documentMode>=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=
-false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
-;/*
- * jQuery UI Position 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Position
- */
-(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY,
-left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+=
-k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-=
-m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left=
-d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+=
-a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b),
-g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery);
-;/*
- * jQuery UI Draggable 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Draggables
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.mouse.js
- *	jquery.ui.widget.js
- */
-(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper==
-"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b=
-this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;if(b.iframeFix)d(b.iframeFix===true?"iframe":b.iframeFix).each(function(){d('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")});return true},_mouseStart:function(a){var b=this.options;
-this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});
-this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);d.ui.ddmanager&&d.ui.ddmanager.dragStart(this,a);return true},
-_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=
-false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,
-10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},_mouseUp:function(a){this.options.iframeFix===true&&d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});d.ui.ddmanager&&d.ui.ddmanager.dragStop(this,a);return d.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||
-!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&
-a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=
-this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),
-10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),
-10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[a.containment=="document"?0:d(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,a.containment=="document"?0:d(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,
-(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"?0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){a=d(a.containment);var b=a[0];if(b){a.offset();var c=d(b).css("overflow")!=
-"hidden";this.containment=[(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0),(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0),(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),
-10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];this.relative_container=a}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+
-this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&
-!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,h=a.pageY;if(this.originalPosition){var g;if(this.containment){if(this.relative_container){g=this.relative_container.offset();g=[this.containment[0]+g.left,this.containment[1]+g.top,this.containment[2]+g.left,this.containment[3]+g.top]}else g=this.containment;if(a.pageX-this.offset.click.left<g[0])e=g[0]+this.offset.click.left;
-if(a.pageY-this.offset.click.top<g[1])h=g[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>g[2])e=g[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>g[3])h=g[3]+this.offset.click.top}if(b.grid){h=b.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/b.grid[1])*b.grid[1]:this.originalPageY;h=g?!(h-this.offset.click.top<g[1]||h-this.offset.click.top>g[3])?h:!(h-this.offset.click.top<g[1])?h-b.grid[1]:h+b.grid[1]:h;e=b.grid[0]?this.originalPageX+Math.round((e-this.originalPageX)/
-b.grid[0])*b.grid[0]:this.originalPageX;e=g?!(e-this.offset.click.left<g[0]||e-this.offset.click.left>g[2])?e:!(e-this.offset.click.left<g[0])?e-b.grid[0]:e+b.grid[0]:e}}return{top:h-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop()),left:e-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&d.browser.version<
-526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(a,b,c){c=c||this._uiHash();d.ui.plugin.call(this,a,[b,c]);if(a=="drag")this.positionAbs=this._convertPositionTo("absolute");return d.Widget.prototype._trigger.call(this,a,b,
-c)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});d.extend(d.ui.draggable,{version:"1.8.16"});d.ui.plugin.add("draggable","connectToSortable",{start:function(a,b){var c=d(this).data("draggable"),f=c.options,e=d.extend({},b,{item:c.element});c.sortables=[];d(f.connectToSortable).each(function(){var h=d.data(this,"sortable");if(h&&!h.options.disabled){c.sortables.push({instance:h,shouldRevert:h.options.revert});
-h.refreshPositions();h._trigger("activate",a,e)}})},stop:function(a,b){var c=d(this).data("draggable"),f=d.extend({},b,{item:c.element});d.each(c.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;c.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(a);this.instance.options.helper=this.instance.options._helper;c.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})}else{this.instance.cancelHelperRemoval=
-false;this.instance._trigger("deactivate",a,f)}})},drag:function(a,b){var c=d(this).data("draggable"),f=this;d.each(c.sortables,function(){this.instance.positionAbs=c.positionAbs;this.instance.helperProportions=c.helperProportions;this.instance.offset.click=c.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=d(f).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",true);
-this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return b.helper[0]};a.target=this.instance.currentItem[0];this.instance._mouseCapture(a,true);this.instance._mouseStart(a,true,true);this.instance.offset.click.top=c.offset.click.top;this.instance.offset.click.left=c.offset.click.left;this.instance.offset.parent.left-=c.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=c.offset.parent.top-this.instance.offset.parent.top;
-c._trigger("toSortable",a);c.dropped=this.instance.element;c.currentItem=c.element;this.instance.fromOutside=c}this.instance.currentItem&&this.instance._mouseDrag(a)}else if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",a,this.instance._uiHash(this.instance));this.instance._mouseStop(a,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();this.instance.placeholder&&
-this.instance.placeholder.remove();c._trigger("fromSortable",a);c.dropped=false}})}});d.ui.plugin.add("draggable","cursor",{start:function(){var a=d("body"),b=d(this).data("draggable").options;if(a.css("cursor"))b._cursor=a.css("cursor");a.css("cursor",b.cursor)},stop:function(){var a=d(this).data("draggable").options;a._cursor&&d("body").css("cursor",a._cursor)}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity=
-a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!=document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!=
-"x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop+c.scrollSpeed;else if(a.pageY-b.overflowOffset.top<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop-c.scrollSpeed;if(!c.axis||c.axis!="y")if(b.overflowOffset.left+b.scrollParent[0].offsetWidth-a.pageX<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft+c.scrollSpeed;else if(a.pageX-b.overflowOffset.left<
-c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft-c.scrollSpeed}else{if(!c.axis||c.axis!="x")if(a.pageY-d(document).scrollTop()<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()-c.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()+c.scrollSpeed);if(!c.axis||c.axis!="y")if(a.pageX-d(document).scrollLeft()<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()-
-c.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()+c.scrollSpeed)}f!==false&&d.ui.ddmanager&&!c.dropBehaviour&&d.ui.ddmanager.prepareOffsets(b,a)}});d.ui.plugin.add("draggable","snap",{start:function(){var a=d(this).data("draggable"),b=a.options;a.snapElements=[];d(b.snap.constructor!=String?b.snap.items||":data(draggable)":b.snap).each(function(){var c=d(this),f=c.offset();this!=a.element[0]&&a.snapElements.push({item:this,
-width:c.outerWidth(),height:c.outerHeight(),top:f.top,left:f.left})})},drag:function(a,b){for(var c=d(this).data("draggable"),f=c.options,e=f.snapTolerance,h=b.offset.left,g=h+c.helperProportions.width,n=b.offset.top,o=n+c.helperProportions.height,i=c.snapElements.length-1;i>=0;i--){var j=c.snapElements[i].left,l=j+c.snapElements[i].width,k=c.snapElements[i].top,m=k+c.snapElements[i].height;if(j-e<h&&h<l+e&&k-e<n&&n<m+e||j-e<h&&h<l+e&&k-e<o&&o<m+e||j-e<g&&g<l+e&&k-e<n&&n<m+e||j-e<g&&g<l+e&&k-e<o&&
-o<m+e){if(f.snapMode!="inner"){var p=Math.abs(k-o)<=e,q=Math.abs(m-n)<=e,r=Math.abs(j-g)<=e,s=Math.abs(l-h)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:k-c.helperProportions.height,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:m,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:j-c.helperProportions.width}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:l}).left-c.margins.left}var t=
-p||q||r||s;if(f.snapMode!="outer"){p=Math.abs(k-n)<=e;q=Math.abs(m-o)<=e;r=Math.abs(j-h)<=e;s=Math.abs(l-g)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:k,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:m-c.helperProportions.height,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:j}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:l-c.helperProportions.width}).left-c.margins.left}if(!c.snapElements[i].snapping&&
-(p||q||r||s||t))c.options.snap.snap&&c.options.snap.snap.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[i].item}));c.snapElements[i].snapping=p||q||r||s||t}else{c.snapElements[i].snapping&&c.options.snap.release&&c.options.snap.release.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[i].item}));c.snapElements[i].snapping=false}}}});d.ui.plugin.add("draggable","stack",{start:function(){var a=d(this).data("draggable").options;a=d.makeArray(d(a.stack)).sort(function(c,f){return(parseInt(d(c).css("zIndex"),
-10)||0)-(parseInt(d(f).css("zIndex"),10)||0)});if(a.length){var b=parseInt(a[0].style.zIndex)||0;d(a).each(function(c){this.style.zIndex=b+c});this[0].style.zIndex=b+a.length}}});d.ui.plugin.add("draggable","zIndex",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("zIndex"))b._zIndex=a.css("zIndex");a.css("zIndex",b.zIndex)},stop:function(a,b){a=d(this).data("draggable").options;a._zIndex&&d(b.helper).css("zIndex",a._zIndex)}})})(jQuery);
-;/*
- * jQuery UI Droppable 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Droppables
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.widget.js
- *	jquery.ui.mouse.js
- *	jquery.ui.draggable.js
- */
-(function(d){d.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"},_create:function(){var a=this.options,b=a.accept;this.isover=0;this.isout=1;this.accept=d.isFunction(b)?b:function(c){return c.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};d.ui.ddmanager.droppables[a.scope]=d.ui.ddmanager.droppables[a.scope]||[];d.ui.ddmanager.droppables[a.scope].push(this);
-a.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var a=d.ui.ddmanager.droppables[this.options.scope],b=0;b<a.length;b++)a[b]==this&&a.splice(b,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(a,b){if(a=="accept")this.accept=d.isFunction(b)?b:function(c){return c.is(b)};d.Widget.prototype._setOption.apply(this,arguments)},_activate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&
-this.element.addClass(this.options.activeClass);b&&this._trigger("activate",a,this.ui(b))},_deactivate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);b&&this._trigger("deactivate",a,this.ui(b))},_over:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.addClass(this.options.hoverClass);
-this._trigger("over",a,this.ui(b))}},_out:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("out",a,this.ui(b))}},_drop:function(a,b){var c=b||d.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return false;var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var g=
-d.data(this,"droppable");if(g.options.greedy&&!g.options.disabled&&g.options.scope==c.options.scope&&g.accept.call(g.element[0],c.currentItem||c.element)&&d.ui.intersect(c,d.extend(g,{offset:g.element.offset()}),g.options.tolerance)){e=true;return false}});if(e)return false;if(this.accept.call(this.element[0],c.currentItem||c.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass);this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("drop",
-a,this.ui(c));return this.element}return false},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}});d.extend(d.ui.droppable,{version:"1.8.16"});d.ui.intersect=function(a,b,c){if(!b.offset)return false;var e=(a.positionAbs||a.position.absolute).left,g=e+a.helperProportions.width,f=(a.positionAbs||a.position.absolute).top,h=f+a.helperProportions.height,i=b.offset.left,k=i+b.proportions.width,j=b.offset.top,l=j+b.proportions.height;
-switch(c){case "fit":return i<=e&&g<=k&&j<=f&&h<=l;case "intersect":return i<e+a.helperProportions.width/2&&g-a.helperProportions.width/2<k&&j<f+a.helperProportions.height/2&&h-a.helperProportions.height/2<l;case "pointer":return d.ui.isOver((a.positionAbs||a.position.absolute).top+(a.clickOffset||a.offset.click).top,(a.positionAbs||a.position.absolute).left+(a.clickOffset||a.offset.click).left,j,i,b.proportions.height,b.proportions.width);case "touch":return(f>=j&&f<=l||h>=j&&h<=l||f<j&&h>l)&&(e>=
-i&&e<=k||g>=i&&g<=k||e<i&&g>k);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f<c.length;f++)if(!(c[f].options.disabled||a&&!c[f].accept.call(c[f].element[0],a.currentItem||a.element))){for(var h=0;h<g.length;h++)if(g[h]==c[f].element[0]){c[f].proportions.height=0;continue a}c[f].visible=c[f].element.css("display")!=
-"none";if(c[f].visible){e=="mousedown"&&c[f]._activate.call(c[f],b);c[f].offset=c[f].element.offset();c[f].proportions={width:c[f].element[0].offsetWidth,height:c[f].element[0].offsetHeight}}}},drop:function(a,b){var c=false;d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(this.options){if(!this.options.disabled&&this.visible&&d.ui.intersect(a,this,this.options.tolerance))c=c||this._drop.call(this,b);if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],a.currentItem||
-a.element)){this.isout=1;this.isover=0;this._deactivate.call(this,b)}}});return c},dragStart:function(a,b){a.element.parents(":not(body,html)").bind("scroll.droppable",function(){a.options.refreshPositions||d.ui.ddmanager.prepareOffsets(a,b)})},drag:function(a,b){a.options.refreshPositions&&d.ui.ddmanager.prepareOffsets(a,b);d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var c=d.ui.intersect(a,this,this.options.tolerance);
-if(c=!c&&this.isover==1?"isout":c&&this.isover==0?"isover":null){var e;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");if(g.length){e=d.data(g[0],"droppable");e.greedyChild=c=="isover"?1:0}}if(e&&c=="isover"){e.isover=0;e.isout=1;e._out.call(e,b)}this[c]=1;this[c=="isout"?"isover":"isout"]=0;this[c=="isover"?"_over":"_out"].call(this,b);if(e&&c=="isout"){e.isout=0;e.isover=1;e._over.call(e,b)}}}})},dragStop:function(a,b){a.element.parents(":not(body,html)").unbind("scroll.droppable");
-a.options.refreshPositions||d.ui.ddmanager.prepareOffsets(a,b)}}})(jQuery);
-;/*
- * jQuery UI Resizable 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Resizables
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.mouse.js
- *	jquery.ui.widget.js
- */
-(function(e){e.widget("ui.resizable",e.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");e.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element,
-_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&e.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(e('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),
-top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=
-this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",
-nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d<c.length;d++){var f=e.trim(c[d]),g=e('<div class="ui-resizable-handle '+("ui-resizable-"+f)+'"></div>');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor==
-String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection();
-this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){e(this).removeClass("ui-resizable-autohide");b._handles.show()}},function(){if(!a.disabled)if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();
-var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=
-false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});
-this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff=
-{width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];
-if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},
-_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,
-{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateVirtualBoundaries:function(b){var a=this.options,c,d,f;a={minWidth:k(a.minWidth)?a.minWidth:0,maxWidth:k(a.maxWidth)?a.maxWidth:Infinity,minHeight:k(a.minHeight)?a.minHeight:0,maxHeight:k(a.maxHeight)?a.maxHeight:
-Infinity};if(this._aspectRatio||b){b=a.minHeight*this.aspectRatio;d=a.minWidth/this.aspectRatio;c=a.maxHeight*this.aspectRatio;f=a.maxWidth/this.aspectRatio;if(b>a.minWidth)a.minWidth=b;if(d>a.minHeight)a.minHeight=d;if(c<a.maxWidth)a.maxWidth=c;if(f<a.maxHeight)a.maxHeight=f}this._vBoundaries=a},_updateCache:function(b){this.offset=this.helper.offset();if(k(b.left))this.position.left=b.left;if(k(b.top))this.position.top=b.top;if(k(b.height))this.size.height=b.height;if(k(b.width))this.size.width=
-b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(k(b.height))b.width=b.height*this.aspectRatio;else if(k(b.width))b.height=b.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top=a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this._vBoundaries,c=this.axis,d=k(b.width)&&a.maxWidth&&a.maxWidth<b.width,f=k(b.height)&&a.maxHeight&&a.maxHeight<b.height,g=k(b.width)&&a.minWidth&&
-a.minWidth>b.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&l)b.left=i-a.minWidth;if(d&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=
-null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a<this._proportionallyResizeElements.length;a++){var c=this._proportionallyResizeElements[a];if(!this.borderDif){var d=[c.css("borderTopWidth"),c.css("borderRightWidth"),c.css("borderBottomWidth"),c.css("borderLeftWidth")],f=[c.css("paddingTop"),c.css("paddingRight"),c.css("paddingBottom"),c.css("paddingLeft")];this.borderDif=e.map(d,function(g,h){g=parseInt(g,10)||
-0;h=parseInt(f[h],10)||0;return g+h})}e.browser.msie&&(e(b).is(":hidden")||e(b).parents(":hidden").length)||c.css({height:b.height()-this.borderDif[0]-this.borderDif[2]||0,width:b.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var b=this.options;this.elementOffset=this.element.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+
-a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+
-c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);
-b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,{version:"1.8.16"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),
-10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-
-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var l=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:l.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(l.css("position"))){c._revertToRelativePosition=true;l.css({position:"absolute",top:"auto",left:"auto"})}l.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?
-e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=
-e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,
-step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=
-e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;
-var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:
-a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-
-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,
-f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,
-display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=
-e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=
-d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery);
-;/*
- * jQuery UI Selectable 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Selectables
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.mouse.js
- *	jquery.ui.widget.js
- */
-(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),
-selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX,
-c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting",
-c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d=
-this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected");a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting");
-a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting=true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&&
-!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected=false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d=
-e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.16"})})(jQuery);
-;/*
- * jQuery UI Sortable 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Sortables
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.mouse.js
- *	jquery.ui.widget.js
- */
-(function(d){d.widget("ui.sortable",d.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:false,connectWith:false,containment:false,cursor:"auto",cursorAt:false,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var a=this.options;this.containerCache={};this.element.addClass("ui-sortable");
-this.refresh();this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a===
-"disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&
-!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,
-left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};
-this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=
-document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);
-return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY<b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop+b.scrollSpeed;else if(a.pageY-this.overflowOffset.top<
-b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop-b.scrollSpeed;if(this.overflowOffset.left+this.scrollParent[0].offsetWidth-a.pageX<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft+b.scrollSpeed;else if(a.pageX-this.overflowOffset.left<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft-b.scrollSpeed}else{if(a.pageY-d(document).scrollTop()<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()-
-b.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()+b.scrollSpeed);if(a.pageX-d(document).scrollLeft()<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()-b.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()+b.scrollSpeed)}c!==false&&d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,
-a)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(b=this.items.length-1;b>=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],
-e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a,c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();
-c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):
-this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate",null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null,
-dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):d(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")},
-toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+j<k&&b+l>g&&b+l<h;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||
-this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?j:g<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<h&&i<e+this.helperProportions.height/2&&f-this.helperProportions.height/2<k},_intersectsWithPointer:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left,a.width);b=b&&a;a=this._getDragVerticalDirection();
-var c=this._getDragHorizontalDirection();if(!b)return false;return this.floating?c&&c=="right"||a=="down"?2:1:a&&(a=="down"?2:1)},_intersectsWithSides:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top+a.height/2,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left+a.width/2,a.width);var c=this._getDragVerticalDirection(),e=this._getDragHorizontalDirection();return this.floating&&e?e=="right"&&a||e=="left"&&!a:c&&(c=="down"&&b||c=="up"&&!b)},
-_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith();
-if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),
-this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(a){this.items=[];this.containers=[this];var b=this.items,c=[[d.isFunction(this.options.items)?this.options.items.call(this.element[0],a,{item:this.currentItem}):d(this.options.items,this.element),
-this]],e=this._connectWith();if(e)for(var f=e.length-1;f>=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h<g;h++){i=d(e[h]);i.data("sortable-item",a);b.push({item:i,instance:a,width:0,height:0,left:0,top:0})}}},refreshPositions:function(a){if(this.offsetParent&&
-this.helper)this.offset.parent=this._getParentOffset();for(var b=this.items.length-1;b>=0;b--){var c=this.items[b];if(!(c.instance!=this.currentContainer&&this.currentContainer&&c.item[0]!=this.currentItem[0])){var e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=
-this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=
-d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||
-0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",
-a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-
-f)<b){b=Math.abs(h-f);e=this.items[g]}}if(e||this.options.dropOnEmpty){this.currentContainer=this.containers[c];e?this._rearrange(a,e,null,true):this._rearrange(a,null,this.containers[c].element,true);this._trigger("change",a,this._uiHash());this.containers[c]._trigger("change",a,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder);this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}}},_createHelper:function(a){var b=
-this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a,this.currentItem])):b.helper=="clone"?this.currentItem.clone():this.currentItem;a.parents("body").length||d(b.appendTo!="parent"?b.appendTo:this.currentItem[0].parentNode)[0].appendChild(a[0]);if(a[0]==this.currentItem[0])this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")};if(a[0].style.width==
-""||b.forceHelperSize)a.width(this.currentItem.width());if(a[0].style.height==""||b.forceHelperSize)a.height(this.currentItem.height());return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=
-this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a=
-{top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),
-10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,d(a.containment=="document"?
-document:window).width()-this.helperProportions.width-this.margins.left,(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)){var b=d(a.containment)[0];a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),
-10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(a,b){if(!b)b=
-this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&
-this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0]))this.offset.relative=this._getRelativeOffset();
-var f=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.left<this.containment[0])f=this.containment[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-
-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.top<this.containment[1])?g-b.grid[1]:g+b.grid[1]:g;f=this.originalPageX+Math.round((f-this.originalPageX)/b.grid[0])*b.grid[0];f=this.containment?!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:!(f-this.offset.click.left<this.containment[0])?f-b.grid[0]:f+b.grid[0]:f}}return{top:g-
-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())}},_rearrange:function(a,b,c,e){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],
-this.direction=="down"?b.item[0]:b.item[0].nextSibling);this.counter=this.counter?++this.counter:1;var f=this,g=this.counter;window.setTimeout(function(){g==f.counter&&f.refreshPositions(!e)},0)},_clear:function(a,b){this.reverting=false;var c=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem);this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var e in this._storedCSS)if(this._storedCSS[e]=="auto"||this._storedCSS[e]=="static")this._storedCSS[e]=
-"";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!b&&c.push(function(f){this._trigger("receive",f,this._uiHash(this.fromOutside))});if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!b)c.push(function(f){this._trigger("update",f,this._uiHash())});if(!d.ui.contains(this.element[0],this.currentItem[0])){b||c.push(function(f){this._trigger("remove",
-f,this._uiHash())});for(e=this.containers.length-1;e>=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,
-this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",
-a,this._uiHash());for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}return false}b||this._trigger("beforeStop",a,this._uiHash());this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.helper[0]!=this.currentItem[0]&&this.helper.remove();this.helper=null;if(!b){for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){d.Widget.prototype._trigger.apply(this,arguments)===false&&this.cancel()},
-_uiHash:function(a){var b=a||this;return{helper:b.helper,placeholder:b.placeholder||d([]),position:b.position,originalPosition:b.originalPosition,offset:b.positionAbs,item:b.currentItem,sender:a?a.element:null}}});d.extend(d.ui.sortable,{version:"1.8.16"})})(jQuery);
-;/*
- * jQuery UI Accordion 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Accordion
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.widget.js
- */
-(function(c){c.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");
-a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
-if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion",
-function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a=
-this.options;if(a.icons){c("<span></span>").addClass("ui-icon "+a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex");
-this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons();
-b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target);
-a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+
-c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options;
-if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);
-if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var g=this.active.next(),
-e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight||
-e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false",
-"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.16",
-animations:{slide:function(a,b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);
-f[i]={value:j[1],unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",
-paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery);
-;/*
- * jQuery UI Autocomplete 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Autocomplete
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.widget.js
- *	jquery.ui.position.js
- */
-(function(d){var e=0;d.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.propAttr("readOnly"))){g=
-false;var f=d.ui.keyCode;switch(c.keyCode){case f.PAGE_UP:a._move("previousPage",c);break;case f.PAGE_DOWN:a._move("nextPage",c);break;case f.UP:a._move("previous",c);c.preventDefault();break;case f.DOWN:a._move("next",c);c.preventDefault();break;case f.ENTER:case f.NUMPAD_ENTER:if(a.menu.active){g=true;c.preventDefault()}case f.TAB:if(!a.menu.active)return;a.menu.select(c);break;case f.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=
-a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(g){g=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};
-this.menu=d("<ul></ul>").addClass("ui-autocomplete").appendTo(d(this.options.appendTo||"body",b)[0]).mousedown(function(c){var f=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(h){h.target!==a.element[0]&&h.target!==f&&!d.ui.contains(f,h.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,f){f=f.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:f})&&/^key/.test(c.originalEvent.type)&&
-a.element.val(f.value)},selected:function(c,f){var h=f.item.data("item.autocomplete"),i=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=i;setTimeout(function(){a.previous=i;a.selectedItem=h},1)}false!==a._trigger("select",c,{item:h})&&a.element.val(h.value);a.term=a.element.val();a.close(c);a.selectedItem=h},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");
-d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&&
-b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,g;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,f){f(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source==="string"){g=this.options.source;this.source=function(c,f){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:g,data:c,dataType:"json",autocompleteRequest:++e,success:function(h){this.autocompleteRequest===e&&f(h)},error:function(){this.autocompleteRequest===e&&f([])}})}}else this.source=
-this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)!==false)return this._search(a)},_search:function(a){this.pending++;this.element.addClass("ui-autocomplete-loading");this.source({term:a},this.response)},_response:function(a){if(!this.options.disabled&&a&&a.length){a=this._normalize(a);this._suggest(a);this._trigger("open")}else this.close();
-this.pending--;this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing);if(this.menu.element.is(":visible")){this.menu.element.hide();this.menu.deactivate();this._trigger("close",a)}},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(a){if(a.length&&a[0].label&&a[0].value)return a;return d.map(a,function(b){if(typeof b==="string")return{label:b,value:b};return d.extend({label:b.label||
-b.value,value:b.value||b.label},b)})},_suggest:function(a){var b=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(b,a);this.menu.deactivate();this.menu.refresh();b.show();this._resizeMenu();b.position(d.extend({of:this.element},this.options.position));this.options.autoFocus&&this.menu.next(new d.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth(),this.element.outerWidth()))},_renderMenu:function(a,b){var g=this;
-d.each(b,function(c,f){g._renderItem(a,f)})},_renderItem:function(a,b){return d("<li></li>").data("item.autocomplete",b).append(d("<a></a>").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,
-"\\$&")},filter:function(a,b){var g=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return g.test(c.label||c.value||c)})}})})(jQuery);
-(function(d){d.widget("ui.menu",{_create:function(){var e=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(a){if(d(a.target).closest(".ui-menu-item a").length){a.preventDefault();e.select(a)}});this.refresh()},refresh:function(){var e=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex",
--1).mouseenter(function(a){e.activate(a,d(this).parent())}).mouseleave(function(){e.deactivate()})},activate:function(e,a){this.deactivate();if(this.hasScroll()){var b=a.offset().top-this.element.offset().top,g=this.element.scrollTop(),c=this.element.height();if(b<0)this.element.scrollTop(g+b);else b>=c&&this.element.scrollTop(g+b-c+a.height())}this.active=a.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",e,{item:a})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");
-this._trigger("blur");this.active=null}},next:function(e){this.move("next",".ui-menu-item:first",e)},previous:function(e){this.move("prev",".ui-menu-item:last",e)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(e,a,b){if(this.active){e=this.active[e+"All"](".ui-menu-item").eq(0);e.length?this.activate(b,e):this.activate(b,this.element.children(a))}else this.activate(b,
-this.element.children(a))},nextPage:function(e){if(this.hasScroll())if(!this.active||this.last())this.activate(e,this.element.children(".ui-menu-item:first"));else{var a=this.active.offset().top,b=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-a-b+d(this).height();return c<10&&c>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(e,g)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||
-this.last()?":first":":last"))},previousPage:function(e){if(this.hasScroll())if(!this.active||this.first())this.activate(e,this.element.children(".ui-menu-item:last"));else{var a=this.active.offset().top,b=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=d(this).offset().top-a+b-d(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(e,result)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||
-this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[d.fn.prop?"prop":"attr"]("scrollHeight")},select:function(e){this._trigger("selected",e,{item:this.active})}})})(jQuery);
-;/*
- * jQuery UI Button 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Button
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.widget.js
- */
-(function(b){var h,i,j,g,l=function(){var a=b(this).find(":ui-button");setTimeout(function(){a.button("refresh")},1)},k=function(a){var c=a.name,e=a.form,f=b([]);if(c)f=e?b(e).find("[name='"+c+"']"):b("[name='"+c+"']",a.ownerDocument).filter(function(){return!this.form});return f};b.widget("ui.button",{options:{disabled:null,text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",l);if(typeof this.options.disabled!==
-"boolean")this.options.disabled=this.element.propAttr("disabled");this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var a=this,c=this.options,e=this.type==="checkbox"||this.type==="radio",f="ui-state-hover"+(!e?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!c.disabled){b(this).addClass("ui-state-hover");
-this===h&&b(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){c.disabled||b(this).removeClass(f)}).bind("click.button",function(d){if(c.disabled){d.preventDefault();d.stopImmediatePropagation()}});this.element.bind("focus.button",function(){a.buttonElement.addClass("ui-state-focus")}).bind("blur.button",function(){a.buttonElement.removeClass("ui-state-focus")});if(e){this.element.bind("change.button",function(){g||a.refresh()});this.buttonElement.bind("mousedown.button",function(d){if(!c.disabled){g=
-false;i=d.pageX;j=d.pageY}}).bind("mouseup.button",function(d){if(!c.disabled)if(i!==d.pageX||j!==d.pageY)g=true})}if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled||g)return false;b(this).toggleClass("ui-state-active");a.buttonElement.attr("aria-pressed",a.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button",function(){if(c.disabled||g)return false;b(this).addClass("ui-state-active");a.buttonElement.attr("aria-pressed","true");
-var d=a.element[0];k(d).not(d).map(function(){return b(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;b(this).addClass("ui-state-active");h=this;b(document).one("mouseup",function(){h=null})}).bind("mouseup.button",function(){if(c.disabled)return false;b(this).removeClass("ui-state-active")}).bind("keydown.button",function(d){if(c.disabled)return false;if(d.keyCode==b.ui.keyCode.SPACE||
-d.keyCode==b.ui.keyCode.ENTER)b(this).addClass("ui-state-active")}).bind("keyup.button",function(){b(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(d){d.keyCode===b.ui.keyCode.SPACE&&b(this).click()})}this._setOption("disabled",c.disabled);this._resetButton()},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?"input":"button";if(this.type==="checkbox"||this.type===
-"radio"){var a=this.element.parents().filter(":last"),c="label[for='"+this.element.attr("id")+"']";this.buttonElement=a.find(c);if(!this.buttonElement.length){a=a.length?a.siblings():this.element.siblings();this.buttonElement=a.filter(c);if(!this.buttonElement.length)this.buttonElement=a.find(c)}this.element.addClass("ui-helper-hidden-accessible");(a=this.element.is(":checked"))&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",a)}else this.buttonElement=this.element},
-widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active  ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());this.hasTitle||this.buttonElement.removeAttr("title");
-b.Widget.prototype.destroy.call(this)},_setOption:function(a,c){b.Widget.prototype._setOption.apply(this,arguments);if(a==="disabled")c?this.element.propAttr("disabled",true):this.element.propAttr("disabled",false);else this._resetButton()},refresh:function(){var a=this.element.is(":disabled");a!==this.options.disabled&&this._setOption("disabled",a);if(this.type==="radio")k(this.element[0]).each(function(){b(this).is(":checked")?b(this).button("widget").addClass("ui-state-active").attr("aria-pressed",
-"true"):b(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false")},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var a=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"),
-c=b("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),e=this.options.icons,f=e.primary&&e.secondary,d=[];if(e.primary||e.secondary){if(this.options.text)d.push("ui-button-text-icon"+(f?"s":e.primary?"-primary":"-secondary"));e.primary&&a.prepend("<span class='ui-button-icon-primary ui-icon "+e.primary+"'></span>");e.secondary&&a.append("<span class='ui-button-icon-secondary ui-icon "+e.secondary+"'></span>");if(!this.options.text){d.push(f?"ui-button-icons-only":
-"ui-button-icon-only");this.hasTitle||a.attr("title",c)}}else d.push("ui-button-text-only");a.addClass(d.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,c){a==="disabled"&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a=this.element.css("direction")===
-"ltr";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");
-b.Widget.prototype.destroy.call(this)}})})(jQuery);
-;/*
- * jQuery UI Dialog 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Dialog
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.widget.js
- *  jquery.ui.button.js
- *	jquery.ui.draggable.js
- *	jquery.ui.mouse.js
- *	jquery.ui.position.js
- *	jquery.ui.resizable.js
- */
-(function(c,l){var m={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},n={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true},o=c.attrFn||{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true,click:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,
-position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||"&#160;",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+
-b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&!i.isDefaultPrevented()&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),
-h=c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("<span></span>").addClass("ui-dialog-title").attr("id",
-e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");
-a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==
-b.uiDialog[0]){e=c(this).css("z-index");isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.scrollTop(),scrollLeft:d.element.scrollLeft()};c.ui.dialog.maxZ+=1;
-d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===
-f[0]&&e.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,
-function(){return!(d=true)});if(d){c.each(a,function(f,h){h=c.isFunction(h)?{click:h,text:f}:h;var i=c('<button type="button"></button>').click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.each(h,function(j,k){if(j!=="click")j in o?i[j](k):i.attr(j,k)});c.fn.button&&i.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",
-handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,
-originalSize:f.originalSize,position:f.position,size:f.size}}a=a===l?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",
-f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):
-[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f);
-if(g in m)e=true;if(g in n)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):
-e.removeClass("ui-dialog-disabled");break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||"&#160;"));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a=
-this.options,b,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height-
-b,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.16",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),
-create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()<c.ui.dialog.overlay.maxZ)return false})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&!d.isDefaultPrevented()&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||
-c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&
-c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a<b?c(window).height()+"px":a+"px"}else return c(document).height()+"px"},width:function(){var a,b;if(c.browser.msie){a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);b=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return a<b?c(window).width()+"px":a+"px"}else return c(document).width()+
-"px"},resize:function(){var a=c([]);c.each(c.ui.dialog.overlay.instances,function(){a=a.add(this)});a.css({width:0,height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
-;/*
- * jQuery UI Slider 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Slider
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.mouse.js
- *	jquery.ui.widget.js
- */
-(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var a=this,b=this.options,c=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f=b.values&&b.values.length||1,e=[];this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+
-this.orientation+" ui-widget ui-widget-content ui-corner-all"+(b.disabled?" ui-slider-disabled ui-disabled":""));this.range=d([]);if(b.range){if(b.range===true){if(!b.values)b.values=[this._valueMin(),this._valueMin()];if(b.values.length&&b.values.length!==2)b.values=[b.values[0],b.values[0]]}this.range=d("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(b.range==="min"||b.range==="max"?" ui-slider-range-"+b.range:""))}for(var j=c.length;j<f;j+=1)e.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
-this.handles=c.add(d(e.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(g){g.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(b.disabled)d(this).blur();else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(g){d(this).data("index.ui-slider-handle",
-g)});this.handles.keydown(function(g){var k=true,l=d(this).data("index.ui-slider-handle"),i,h,m;if(!a.options.disabled){switch(g.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:k=false;if(!a._keySliding){a._keySliding=true;d(this).addClass("ui-state-active");i=a._start(g,l);if(i===false)return}break}m=a.options.step;i=a.options.values&&a.options.values.length?
-(h=a.values(l)):(h=a.value());switch(g.keyCode){case d.ui.keyCode.HOME:h=a._valueMin();break;case d.ui.keyCode.END:h=a._valueMax();break;case d.ui.keyCode.PAGE_UP:h=a._trimAlignValue(i+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(i-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(i===a._valueMax())return;h=a._trimAlignValue(i+m);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(i===a._valueMin())return;h=a._trimAlignValue(i-
-m);break}a._slide(g,l,h);return k}}).keyup(function(g){var k=d(this).data("index.ui-slider-handle");if(a._keySliding){a._keySliding=false;a._stop(g,k);a._change(g,k);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();
-return this},_mouseCapture:function(a){var b=this.options,c,f,e,j,g;if(b.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});f=this._valueMax()-this._valueMin()+1;j=this;this.handles.each(function(k){var l=Math.abs(c-j.values(k));if(f>l){f=l;e=d(this);g=k}});if(b.range===true&&this.values(1)===b.min){g+=1;e=d(this.handles[g])}if(this._start(a,g)===false)return false;
-this._mouseSliding=true;j._handleIndex=g;e.addClass("ui-state-active").focus();b=e.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-b.left-e.width()/2,top:a.pageY-b.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(a){var b=
-this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;if(this.orientation==="horizontal"){b=
-this.elementSize.width;a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}b=a/b;if(b>1)b=1;if(b<0)b=0;if(this.orientation==="vertical")b=1-b;a=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+b*a)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);
-c.values=this.values()}return this._trigger("start",a,c)},_slide:function(a,b,c){var f;if(this.options.values&&this.options.values.length){f=this.values(b?0:1);if(this.options.values.length===2&&this.options.range===true&&(b===0&&c>f||b===1&&c<f))c=f;if(c!==this.values(b)){f=this.values();f[b]=c;a=this._trigger("slide",a,{handle:this.handles[b],value:c,values:f});this.values(b?0:1);a!==false&&this.values(b,c,true)}}else if(c!==this.value()){a=this._trigger("slide",a,{handle:this.handles[b],value:c});
-a!==false&&this.value(c)}},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("change",a,c)}},value:function(a){if(arguments.length){this.options.value=
-this._trimAlignValue(a);this._refreshValue();this._change(null,0)}else return this._value()},values:function(a,b){var c,f,e;if(arguments.length>1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;f=arguments[0];for(e=0;e<c.length;e+=1){c[e]=this._trimAlignValue(f[e]);this._change(null,e)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(a):
-this.value();else return this._values()},_setOption:function(a,b){var c,f=0;if(d.isArray(this.options.values))f=this.options.values.length;d.Widget.prototype._setOption.apply(this,arguments);switch(a){case "disabled":if(b){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.propAttr("disabled",true);this.element.addClass("ui-disabled")}else{this.handles.propAttr("disabled",false);this.element.removeClass("ui-disabled")}break;case "orientation":this._detectOrientation();
-this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(c=0;c<f;c+=1)this._change(null,c);this._animateOff=false;break}},_value:function(){var a=this.options.value;return a=this._trimAlignValue(a)},_values:function(a){var b,c;if(arguments.length){b=this.options.values[a];
-return b=this._trimAlignValue(b)}else{b=this.options.values.slice();for(c=0;c<b.length;c+=1)b[c]=this._trimAlignValue(b[c]);return b}},_trimAlignValue:function(a){if(a<=this._valueMin())return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b;a=a-c;if(Math.abs(c)*2>=b)a+=c>0?b:-b;return parseFloat(a.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a=
-this.options.range,b=this.options,c=this,f=!this._animateOff?b.animate:false,e,j={},g,k,l,i;if(this.options.values&&this.options.values.length)this.handles.each(function(h){e=(c.values(h)-c._valueMin())/(c._valueMax()-c._valueMin())*100;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";d(this).stop(1,1)[f?"animate":"css"](j,b.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(h===0)c.range.stop(1,1)[f?"animate":"css"]({left:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({width:e-
-g+"%"},{queue:false,duration:b.animate})}else{if(h===0)c.range.stop(1,1)[f?"animate":"css"]({bottom:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({height:e-g+"%"},{queue:false,duration:b.animate})}g=e});else{k=this.value();l=this._valueMin();i=this._valueMax();e=i!==l?(k-l)/(i-l)*100:0;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[f?"animate":"css"](j,b.animate);if(a==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[f?"animate":"css"]({width:e+"%"},
-b.animate);if(a==="max"&&this.orientation==="horizontal")this.range[f?"animate":"css"]({width:100-e+"%"},{queue:false,duration:b.animate});if(a==="min"&&this.orientation==="vertical")this.range.stop(1,1)[f?"animate":"css"]({height:e+"%"},b.animate);if(a==="max"&&this.orientation==="vertical")this.range[f?"animate":"css"]({height:100-e+"%"},{queue:false,duration:b.animate})}}});d.extend(d.ui.slider,{version:"1.8.16"})})(jQuery);
-;/*
- * jQuery UI Tabs 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Tabs
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.widget.js
- */
-(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&&
-e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=
-d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]||
-(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");
-this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected=
-this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");
-if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));
-this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+
-g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",
-function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};
-this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected=
--1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";
-d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=
-d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b,
-e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);
-j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove();
-if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1<this.anchors.length?1:-1));e.disabled=d.map(d.grep(e.disabled,function(h){return h!=b}),function(h){return h>=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null,
-this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this},
-load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c,
-"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},
-url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.16"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k<a.anchors.length?k:0)},b);j&&j.stopPropagation()});e=a._unrotate||(a._unrotate=!e?function(j){j.clientX&&
-a.rotate(null)}:function(){t=c.selected;h()});if(b){this.element.bind("tabsshow",h);this.anchors.bind(c.event+".tabs",e);h()}else{clearTimeout(a.rotation);this.element.unbind("tabsshow",h);this.anchors.unbind(c.event+".tabs",e);delete this._rotate;delete this._unrotate}return this}})})(jQuery);
-;/*
- * jQuery UI Datepicker 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker
- *
- * Depends:
- *	jquery.ui.core.js
- */
-(function(d,C){function M(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass=
-"ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su",
-"Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",
-minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false,disabled:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=N(d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function N(a){return a.bind("mouseout",
-function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");b.length&&b.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!(d.datepicker._isDisabledDatepicker(J.inline?a.parent()[0]:J.input[0])||!b.length)){b.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
-b.addClass("ui-state-hover");b.hasClass("ui-datepicker-prev")&&b.addClass("ui-datepicker-prev-hover");b.hasClass("ui-datepicker-next")&&b.addClass("ui-datepicker-next-hover")}})}function H(a,b){d.extend(a,b);for(var c in b)if(b[c]==null||b[c]==C)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.16"}});var B=(new Date).getTime(),J;d.extend(M.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},
-setDefaults:function(a){H(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,
-"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:N(d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",
-function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b);b.settings.disabled&&this._disableDatepicker(a)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c==
-"focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f==""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():
-d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,
-b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),true);this._updateDatepicker(b);this._updateAlternate(b);b.settings.disabled&&this._disableDatepicker(a);b.dpDiv.css("display","block")}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=
-1;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}H(a.settings,e||{});b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/
-2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=
-d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=
-a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().removeClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,
-"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().addClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==
-a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false},_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"?
-d.extend({},e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&&this._hideDatepicker();var h=this._getDateDatepicker(a,true),i=this._getMinMaxDate(e,"min"),g=this._getMinMaxDate(e,"max");H(e.settings,f);if(i!==null&&f.dateFormat!==C&&f.minDate===C)e.settings.minDate=this._formatDate(e,i);if(g!==null&&f.dateFormat!==C&&f.maxDate===C)e.settings.maxDate=this._formatDate(e,g);this._attachments(d(a),e);this._autoSize(e);this._setDate(e,h);this._updateAlternate(e);
-this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a,b);this._updateDatepicker(a);this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&&!a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl");
-b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass+":not(."+d.datepicker._currentClass+")",b.dpDiv);c[0]&&d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]);if(a=d.datepicker._get(b,"onSelect")){c=d.datepicker._formatDate(b);a.apply(b.input?b.input[0]:null,[c,b])}else d.datepicker._hideDatepicker();return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target,
-a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target);c=a.ctrlKey||a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey||a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c=
-a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,-7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,
-"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();a.stopPropagation()}},_doKeyPress:function(a){var b=d.datepicker._getInst(a.target);if(d.datepicker._get(b,"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat"));var c=String.fromCharCode(a.charCode==C?a.keyCode:a.charCode);
-return a.ctrlKey||a.metaKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",
-a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);if(d.datepicker._curInst&&d.datepicker._curInst!=b){d.datepicker._datepickerShowing&&d.datepicker._triggerOnClose(d.datepicker._curInst);d.datepicker._curInst.dpDiv.stop(true,true)}var c=d.datepicker._get(b,"beforeShow");c=c?c.apply(a,[a,b]):{};if(c!==false){H(b.settings,c);b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value=
-"";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);
-c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.datepicker._datepickerShowing=
-true;d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}}},_updateDatepicker:function(a){this.maxRows=4;var b=d.datepicker._getBorders(a.dpDiv);J=a;a.dpDiv.empty().append(this._generateHTML(a));var c=a.dpDiv.find("iframe.ui-datepicker-cover");c.length&&c.css({left:-b[0],top:-b[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});
-a.dpDiv.find("."+this._dayOverClass+" a").mouseover();b=this._getNumberOfMonths(a);c=b[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");c>1&&a.dpDiv.addClass("ui-datepicker-multi-"+c).css("width",17*c+"em");a.dpDiv[(b[0]!=1||b[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&
-!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var e=a.yearshtml;setTimeout(function(){e===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);e=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),
-h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=
-this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");if(b)b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);
-this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();d.datepicker._triggerOnClose(b);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},
-_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):
-0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e["selected"+(c=="M"?
-"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);
-this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");
-if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?
-b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=A+1<a.length&&a.charAt(A+1)==p)&&A++;return p},m=function(p){var D=
-o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"&&D?4:p=="o"?3:2)+"}");p=b.substring(q).match(p);if(!p)throw"Missing number at position "+q;q+=p[0].length;return parseInt(p[0],10)},n=function(p,D,K){p=d.map(o(p)?K:D,function(w,x){return[[x,w]]}).sort(function(w,x){return-(w[1].length-x[1].length)});var E=-1;d.each(p,function(w,x){w=x[1];if(b.substr(q,w.length).toLowerCase()==w.toLowerCase()){E=x[0];q+=w.length;return false}});if(E!=-1)return E+1;else throw"Unknown name at position "+q;},s=
-function(){if(b.charAt(q)!=a.charAt(A))throw"Unexpected literal at position "+q;q++},q=0,A=0;A<a.length;A++)if(k)if(a.charAt(A)=="'"&&!o("'"))k=false;else s();else switch(a.charAt(A)){case "d":l=m("d");break;case "D":n("D",f,h);break;case "o":u=m("o");break;case "m":j=m("m");break;case "M":j=n("M",i,g);break;case "y":c=m("y");break;case "@":var v=new Date(m("@"));c=v.getFullYear();j=v.getMonth()+1;l=v.getDate();break;case "!":v=new Date((m("!")-this._ticksTo1970)/1E4);c=v.getFullYear();j=v.getMonth()+
-1;l=v.getDate();break;case "'":if(o("'"))s();else k=true;break;default:s()}if(q<b.length)throw"Extra/unparsed characters found in date: "+b.substring(q);if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,j-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=j||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd",
-COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:
-null)||this._defaults.monthNames;var i=function(o){(o=k+1<a.length&&a.charAt(k+1)==o)&&k++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length<n;)m="0"+m;return m},j=function(o,m,n,s){return i(o)?s[m]:n[m]},l="",u=false;if(b)for(var k=0;k<a.length;k++)if(u)if(a.charAt(k)=="'"&&!i("'"))u=false;else l+=a.charAt(k);else switch(a.charAt(k)){case "d":l+=g("d",b.getDate(),2);break;case "D":l+=j("D",b.getDay(),e,f);break;case "o":l+=g("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()-
-(new Date(b.getFullYear(),0,0)).getTime())/864E5),3);break;case "m":l+=g("m",b.getMonth()+1,2);break;case "M":l+=j("M",b.getMonth(),h,c);break;case "y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case "@":l+=b.getTime();break;case "!":l+=b.getTime()*1E4+this._ticksTo1970;break;case "'":if(i("'"))l+="'";else u=true;break;default:l+=a.charAt(k)}return l},_possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+1)==h)&&f++;return h},f=
-0;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case "d":case "m":case "y":case "@":b+="0123456789";break;case "D":case "M":return null;case "'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==C?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,f,h;f=h=this._getDefaultDate(a);
-var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth=f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var e=function(h){var i=new Date;
-i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g=(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,j=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,k=u.exec(h);k;){switch(k[2]||"d"){case "d":case "D":g+=parseInt(k[1],10);break;case "w":case "W":g+=parseInt(k[1],10)*7;break;case "m":case "M":l+=parseInt(k[1],10);g=
-Math.min(g,d.datepicker._getDaysInMonth(j,l));break;case "y":case "Y":j+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break}k=u.exec(h)}return new Date(j,l,g)};if(b=(b=b==null||b===""?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):new Date(b.getTime()))&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(a.getHours()>
-12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&
-a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?
-new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&n<k?k:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));
-n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+B+".datepicker._adjustDate('#"+a.id+"', -"+j+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>";var s=this._get(a,"nextText");s=!h?s:this.formatDate(s,this._daylightSavingAdjust(new Date(m,
-g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+B+".datepicker._adjustDate('#"+a.id+"', +"+j+", 'M');\" title=\""+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>";j=this._get(a,"currentText");s=this._get(a,"gotoCurrent")&&
-a.currentDay?u:b;j=!h?j:this.formatDate(j,s,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+B+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,s)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+
-B+".datepicker._gotoToday('#"+a.id+"');\">"+j+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");s=this._get(a,"dayNames");this._get(a,"dayNamesShort");var q=this._get(a,"dayNamesMin"),A=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),D=this._get(a,"showOtherMonths"),K=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var E=this._getDefaultDate(a),w="",x=0;x<i[0];x++){var O=
-"";this.maxRows=4;for(var G=0;G<i[1];G++){var P=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",y="";if(l){y+='<div class="ui-datepicker-group';if(i[1]>1)switch(G){case 0:y+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:y+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:y+=" ui-datepicker-group-middle";t="";break}y+='">'}y+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&
-x==0?c?f:n:"")+(/all|right/.test(t)&&x==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,x>0||G>0,A,v)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var z=j?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(t=0;t<7;t++){var r=(t+h)%7;z+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+s[r]+'">'+q[r]+"</span></th>"}y+=z+"</tr></thead><tbody>";z=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,
-z);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;z=Math.ceil((t+z)/7);this.maxRows=z=l?this.maxRows>z?this.maxRows:z:z;r=this._daylightSavingAdjust(new Date(m,g,1-t));for(var Q=0;Q<z;Q++){y+="<tr>";var R=!j?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(r)+"</td>";for(t=0;t<7;t++){var I=p?p.apply(a.input?a.input[0]:null,[r]):[true,""],F=r.getMonth()!=g,L=F&&!K||!I[0]||k&&r<k||o&&r>o;R+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(r.getTime()==
-P.getTime()&&g==a.selectedMonth&&a._keyEvent||E.getTime()==r.getTime()&&E.getTime()==P.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!D?"":" "+I[1]+(r.getTime()==u.getTime()?" "+this._currentClass:"")+(r.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!F||D)&&I[2]?' title="'+I[2]+'"':"")+(L?"":' onclick="DP_jQuery_'+B+".datepicker._selectDay('#"+a.id+"',"+r.getMonth()+","+r.getFullYear()+', this);return false;"')+">"+(F&&!D?"&#xa0;":L?'<span class="ui-state-default">'+
-r.getDate()+"</span>":'<a class="ui-state-default'+(r.getTime()==b.getTime()?" ui-state-highlight":"")+(r.getTime()==u.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+'" href="#">'+r.getDate()+"</a>")+"</td>";r.setDate(r.getDate()+1);r=this._daylightSavingAdjust(r)}y+=R+"</tr>"}g++;if(g>11){g=0;m++}y+="</tbody></table>"+(l?"</div>"+(i[0]>0&&G==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");O+=y}w+=O}w+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':
-"");a._keyEvent=false;return w},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='<div class="ui-datepicker-title">',o="";if(h||!j)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+B+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" >";for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&&
-(!m||n<=f.getMonth()))o+='<option value="'+n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(k+=o+(h||!(j&&l)?"&#xa0;":""));if(!a.yearshtml){a.yearshtml="";if(h||!l)k+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var s=(new Date).getFullYear();i=function(q){q=q.match(/c[+-].*/)?c+parseInt(q.substring(1),10):q.match(/[+-].*/)?s+parseInt(q,10):parseInt(q,10);return isNaN(q)?s:q};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,
-e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+B+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" >";b<=g;b++)a.yearshtml+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";a.yearshtml+="</select>";k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?"&#xa0;":"")+o;k+="</div>";return k},_adjustInstDate:function(a,b,c){var e=a.drawYear+(c=="Y"?b:0),f=a.drawMonth+
-(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&b<c?c:b;return b=a&&b>a?a:b},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");if(b)b.apply(a.input?
-a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);c=this._daylightSavingAdjust(new Date(c,
-e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,
-"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=function(a){if(!this.length)return this;
-if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));return this.each(function(){typeof a==
-"string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new M;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.16";window["DP_jQuery_"+B]=d})(jQuery);
-;/*
- * jQuery UI Progressbar 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Progressbar
- *
- * Depends:
- *   jquery.ui.core.js
- *   jquery.ui.widget.js
- */
-(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow");
-this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*
-this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.16"})})(jQuery);
-;
Index: admin/langs.php
===================================================================
--- admin/langs.php	(revision 782)
+++ admin/langs.php	(revision 500)
@@ -173,10 +173,8 @@
 {
 	echo
-	'<table class="clear plugins">'.
-	'<thead><tr>'.
-	'<th scope="col">'.__('Language').'</th>'.
-	'<th scope="col" class="nowrap">'.__('Action').'</th>'.
-	'</tr></thead>'.
-	'<tbody>';
+	'<table class="clear plugins"><tr>'.
+	'<th>'.__('Language').'</th>'.
+	'<th class="nowrap">'.__('Action').'</th>'.
+	'</tr>';
 	
 	foreach ($locales_content as $k => $v)
@@ -186,6 +184,6 @@
 		echo
 		'<tr class="line wide">'.
-		'<th scope="row" class="maximal nowrap">('.$k.') '.
-		'<strong>'.html::escapeHTML($iso_codes[$k]).'</strong></th>'.
+		'<td class="maximal nowrap">('.$k.') '.
+		'<strong>'.html::escapeHTML($iso_codes[$k]).'</strong></td>'.
 		'<td class="nowrap action">';
 		
@@ -204,7 +202,5 @@
 		echo '</td></tr>';
 	}
-	echo
-	'</tbody>'.
-	'</table>';
+	echo '</table>';
 }
 
@@ -232,5 +228,5 @@
 	'Proposed languages are based on your version: %s.'),'<strong>'.DC_VERSION.'</strong>').'</p>'.
 	'<p class="field"><label for="pkg_url" class="classic">'.__('Language:').' '.
-	form::combo('pkg_url',$dc_langs_combo).'</label></p>'.
+	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>'.
Index: admin/media_item.php
===================================================================
--- admin/media_item.php	(revision 663)
+++ admin/media_item.php	(revision 887)
@@ -15,4 +15,6 @@
 dcPage::check('media,media_admin');
 
+$tab = empty($_REQUEST['tab']) ? '' : $_REQUEST['tab'];
+
 $post_id = !empty($_GET['post_id']) ? (integer) $_GET['post_id'] : null;
 if ($post_id) {
@@ -103,5 +105,5 @@
 	try {
 		$core->media->updateFile($file,$newFile);
-		http::redirect($page_url.'&id='.$id.'&fupd=1');
+		http::redirect($page_url.'&id='.$id.'&fupd=1&tab=media-details-tab');
 	} catch (Exception $e) {
 		$core->error->add($e->getMessage());
@@ -115,5 +117,5 @@
 		$foo = null;
 		$core->media->mediaFireRecreateEvent($file);
-		http::redirect($page_url.'&id='.$id.'&thumbupd=1');
+		http::redirect($page_url.'&id='.$id.'&thumbupd=1&tab=media-details-tab');
 	} catch (Exception $e) {
 		$core->error->add($e->getMessage());
@@ -165,5 +167,5 @@
 	$starting_scripts.
 	dcPage::jsDatePicker().
-	dcPage::jsPageTabs()
+	dcPage::jsPageTabs($tab)
 );
 
@@ -200,5 +202,15 @@
 			$media_desc = '';
 		}
-		
+
+		$media_img_default_size = $core->blog->settings->system->media_img_default_size;
+		if ($media_img_default_size == '') {
+			$media_img_default_size = 'm';
+		}
+		$media_img_default_alignment = $core->blog->settings->system->media_img_default_alignment;
+		if ($media_img_default_alignment == '') {
+			$media_img_default_alignment = 'none';
+		}
+		$media_img_default_link = (boolean)$core->blog->settings->system->media_img_default_link;
+
 		echo
 		'<h3>'.__('Image size:').'</h3> ';
@@ -207,10 +219,10 @@
 		echo '<p>';
 		foreach (array_reverse($file->media_thumb) as $s => $v) {
-			$s_checked = ($s == 'm');
+			$s_checked = ($s == $media_img_default_size);
 			echo '<label class="classic">'.
 			form::radio(array('src'),html::escapeHTML($v),$s_checked).' '.
 			$core->media->thumb_sizes[$s][2].'</label><br /> ';
 		}
-		$s_checked = (!isset($file->media_thumb['m']));
+		$s_checked = (!isset($file->media_thumb[$media_img_default_size]));
 		echo '<label class="classic">'.
 		form::radio(array('src'),$file->file_url,$s_checked).' '.__('original').'</label><br /> ';
@@ -220,8 +232,8 @@
 		echo '<h3>'.__('Image alignment').'</h3>';
 		$i_align = array(
-			'none' => array(__('None'),1),
-			'left' => array(__('Left'),0),
-			'right' => array(__('Right'),0),
-			'center' => array(__('Center'),0)
+			'none' => array(__('None'),($media_img_default_alignment == 'none' ? 1 : 0)),
+			'left' => array(__('Left'),($media_img_default_alignment == 'left' ? 1 : 0)),
+			'right' => array(__('Right'),($media_img_default_alignment == 'right' ? 1 : 0)),
+			'center' => array(__('Center'),($media_img_default_alignment == 'center' ? 1 : 0))
 		);
 		
@@ -236,7 +248,7 @@
 		'<h3>'.__('Image insertion').'</h3>'.
 		'<p>'.
-		'<label for="insert1" class="classic">'.form::radio(array('insertion','insert1'),'simple',true).
+		'<label for="insert1" class="classic">'.form::radio(array('insertion','insert1'),'simple',!$media_img_default_link).
 		__('As a single image').'</label><br />'.
-		'<label for="insert2" class="classic">'.form::radio(array('insertion','insert2'),'link',false).
+		'<label for="insert2" class="classic">'.form::radio(array('insertion','insert2'),'link',$media_img_default_link).
 		__('As a link to original image').'</label>'.
 		'</p>';
@@ -340,7 +352,7 @@
 		$strong_link = ($s == $thumb_size) ? '<strong>%s</strong>' : '%s';
 		printf($strong_link,'<a href="'.html::escapeURL($page_url).
-		'&amp;id='.$id.'&amp;size='.$s.'">'.$core->media->thumb_sizes[$s][2].'</a> | ');
-	}
-	echo '<a href="'.html::escapeURL($page_url).'&amp;id='.$id.'&amp;size=o">'.__('original').'</a>';
+		'&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>';
 	
@@ -377,5 +389,5 @@
 {
 	echo
-	'<p><strong><a href="'.html::escapeHTML($page_url).'&amp;id='.$id.'&amp;find_posts=1">'.
+	'<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>';
 }
Index: dmin/permissions.php
===================================================================
--- admin/permissions.php	(revision 536)
+++ 	(revision )
@@ -1,160 +1,0 @@
-<?php
-# -- BEGIN LICENSE BLOCK ---------------------------------------
-#
-# This file is part of Dotclear 2.
-#
-# Copyright (c) 2003-2011 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 -----------------------------------------
-
-require dirname(__FILE__).'/../inc/admin/prepend.php';
-
-dcPage::checkSuper();
-
-$changes = false;
-$blogs = array();
-$users = array();
-
-# Check users
-if (!empty($_REQUEST['user_id']) && is_array($_REQUEST['user_id']))
-{
-	foreach ($_REQUEST['user_id'] as $u)
-	{
-		if ($core->userExists($u)) {
-			$users[] = $u;
-		}
-	}
-}
-
-# Check blogs
-if (!empty($_REQUEST['blog_id']) && is_array($_REQUEST['blog_id']))
-{
-	foreach ($_REQUEST['blog_id'] as $b)
-	{
-		if ($core->blogExists($b)) {
-			$blogs[] = $b;
-		}
-	}
-}
-
-# Update permissions
-if (!empty($_POST['upd_perm']) && !empty($users) && !empty($blogs))
-{
-	$redir = 'permissions.php?upd=1';
-	
-	try
-	{
-		if (empty($_POST['your_pwd']) || !$core->auth->checkPassword(crypt::hmac(DC_MASTER_KEY,$_POST['your_pwd']))) {
-			throw new Exception(__('Password verification failed'));
-		}
-		
-		foreach ($users as $u)
-		{
-			foreach ($blogs as $b)
-			{
-				$set_perms = array();
-				
-				if (!empty($_POST['perm'][$b]))
-				{
-					foreach ($_POST['perm'][$b] as $perm_id => $v)
-					{
-						if ($v) {
-							$set_perms[$perm_id] = true;
-						}
-					}
-				}
-				
-				$core->setUserBlogPermissions($u, $b, $set_perms, true);
-			}
-			
-			$redir .= '&user_id[]='.$u;
-		}
-		
-		foreach ($blogs as $b) {
-			$redir .= '&blog_id[]='.$b;
-		}
-		http::redirect($redir);
-	}
-	catch (Exception $e)
-	{
-		$core->error->add($e->getMessage());
-	}
-}
-
-
-
-if (empty($blogs) || empty($users)) {
-	$core->error->add(__('No blog or user given.'));
-}
-
-
-/* DISPLAY
--------------------------------------------------------- */
-dcPage::open(__('permissions'),
-	dcPage::jsLoad('js/_permissions.js')
-);
-
-echo '<h2><a href="users.php">'.__('Users').'</a> &rsaquo; <span class="page-title">'.__('Permissions').'</span></h2>';
-
-if (!empty($_GET['upd'])) {
-		echo '<p class="message">'.__('The permissions have been successfully updated.').'</p>';
-}
-
-if (!empty($blogs) && !empty($users))
-{
-	$perm_form = '';
-	
-	if (count($users) == 1) {
-			$user_perm = $core->getUserPermissions($users[0]);	
-	}
-	
-	foreach ($users as $u) {
-		$user_list[] = '<a href="user.php?id='.$u.'">'.$u.'</a>';
-	}
-	
-	echo '<p>'.sprintf(__('You are about to change permissions on the following blogs for users %s.'),
-	implode(', ',$user_list));
-	
-	echo '<form id="permissions-form" action="permissions.php" method="post">';
-	
-	foreach ($blogs as $b)
-	{
-		echo '<h3><a href="blog.php?id='.html::escapeHTML($b).'">'.html::escapeHTML($b).'</a>'.
-		form::hidden(array('blog_id[]'),$b).'</h3>';
-		
-		foreach ($core->auth->getPermissionsTypes() as $perm_id => $perm)
-		{
-			$checked = false;
-			
-			if (count($users) == 1) {
-				$checked = isset($user_perm[$b]['p'][$perm_id]) && $user_perm[$b]['p'][$perm_id];
-			}
-			
-			echo
-			'<p><label for="perm'.html::escapeHTML($b).html::escapeHTML($perm_id).'" class="classic">'.
-			form::checkbox(array('perm['.html::escapeHTML($b).']['.html::escapeHTML($perm_id).']','perm'.html::escapeHTML($b).html::escapeHTML($perm_id)),
-			1,$checked).' '.
-			__($perm).'</label></p>';
-		}
-	}
-	
-	echo
-	'<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').'" />'.
-	$core->formNonce();
-	
-	foreach ($users as $u) {
-		echo form::hidden(array('user_id[]'),$u);
-	}
-	
-	echo	form::hidden('upd_perm',1).'</p></form>';
-}
-
-dcPage::close();
-?>
Index: dmin/permissions_blog.php
===================================================================
--- admin/permissions_blog.php	(revision 782)
+++ 	(revision )
@@ -1,116 +1,0 @@
-<?php
-# -- BEGIN LICENSE BLOCK ---------------------------------------
-#
-# This file is part of Dotclear 2.
-#
-# Copyright (c) 2003-2010 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 -----------------------------------------
-
-require dirname(__FILE__).'/../inc/admin/prepend.php';
-
-dcPage::checkSuper();
-
-$q = !empty($_GET['q']) ? $_GET['q'] : '';
-
-# Check users
-if (!empty($_REQUEST['user_id']) && is_array($_REQUEST['user_id']))
-{
-	foreach ($_REQUEST['user_id'] as $u)
-	{
-		if ($core->userExists($u)) {
-			$users[] = $u;
-		}
-	}
-}
-
-if (empty($users))
-{
-	$core->error->add(__('No blog or user given.'));
-}
-else
-{
-	$blogs_list = new adminBlogPermissionsList($core);
-	
-	$params = new ArrayObject();
-	
-	# - Limit, sortby and order filter
-	$params = $blogs_list->applyFilters($params);
-	
-	$show_filters = false;
-	
-	# - Search filter
-	if ($q) {
-		$params['q'] = $q;
-		$show_filters = true;
-	}
-	
-	try {
-		$rs = $core->getBlogs($params);
-		$counter = $core->getBlogs($params,1);
-		$blogs_list->setItems($rs,$counter->f(0));
-	} catch (Exception $e) {
-		$core->error->add($e->getMessage());
-	}
-}
-
-/* DISPLAY
--------------------------------------------------------- */
-$starting_script = dcPage::jsLoad('js/_permissions_blog.js');
-if (!$show_filters) {
-	$starting_script .= dcPage::jsLoad('js/filter-controls.js');
-}
-dcPage::open(__('choose a blog'),$starting_script);
-
-echo '<h2><a href="users.php">'.__('Users').'</a> &rsaquo; '.__('Choose a blog').'</h2>';
-
-if (!$core->error->flag())
-{
-	$hidden_fields = '';
-	foreach ($users as $u) {
-		$hidden_fields .= form::hidden(array('user_id[]'),$u);
-	}
-	
-	if (!$show_filters) {
-		echo '<p><a id="filter-control" class="form-control" href="#">'.__('Filters').'</a></p>';
-	}
-	
-	echo
-	'<form action="permissions_blog.php" method="get" id="filters-form">'.
-	'<fieldset class="two-cols"><legend>'.__('Filters').'</legend>'.
-	
-	'<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).' '.
-	__('Entries per page').'</label> '.
-	'<input type="submit" value="'.__('Apply filters').'" />'.
-	$hidden_fields.'</p>'.
-	
-	'<br class="clear" />'. //Opera sucks
-	'</fieldset>'.
-	'</form>';
-	
-	echo
-	'<p>'.
-	sprintf(__('Choose one or more blogs to which you want to give permissions to users %s.'),
-	'<strong>'.implode(', ',$users).'</strong>').'</p>';
-	
-	# Show blogs
-	$blogs_list->display('<form action="permissions.php" method="post" id="form-blogs">'.
-		'%s'.
-		'<p class="checkboxes-helpers"></p>'.
-		
-		'<p><input type="submit" value="'.__('set permissions').'" />'.
-		$hidden_fields.
-		$core->formNonce().'</p>'.
-		'</form>'
-	);
-}
-
-dcPage::close();
-
-?>
Index: admin/plugins.php
===================================================================
--- admin/plugins.php	(revision 782)
+++ admin/plugins.php	(revision 500)
@@ -227,13 +227,10 @@
 	echo
 	'<h3>'.__('Activated plugins').'</h3>'.
-	'<table class="clear plugins">'.
-	'<caption>'.__('Activated plugin list').'</caption>'.
-	'<thead><tr>'.
-	'<th scope="col">'.__('Plugin').'</th>'.
-	'<th scope="col" class="nowrap">'.__('Version').'</th>'.
-	'<th scope="col" class="nowrap">'.__('Details').'</th>'.
-	'<th scope="col" class="nowrap">'.__('Action').'</th>'.
-	'</tr></thead>'.
-	'<tbody>';
+	'<table class="clear plugins"><tr>'.
+	'<th>'.__('Plugin').'</th>'.
+	'<th class="nowrap">'.__('Version').'</th>'.
+	'<th class="nowrap">'.__('Details').'</th>'.
+	'<th class="nowrap">'.__('Action').'</th>'.
+	'</tr>';
 	
 	foreach ($p_available as $k => $v)
@@ -244,5 +241,5 @@
 		echo
 		'<tr class="line wide">'.
-		'<th scope="row" class="minimal nowrap"><strong>'.html::escapeHTML($k).'</strong></th>'.
+		'<td class="minimal nowrap"><strong>'.html::escapeHTML($k).'</strong></td>'.
 		'<td class="minimal">'.html::escapeHTML($v['version']).'</td>'.
 		'<td class="maximal"><strong>'.html::escapeHTML($v['name']).'</strong> '.
@@ -268,5 +265,4 @@
 	}
 	echo
-	'</tbody>'.
 	'</table>';
 }
@@ -278,11 +274,8 @@
 	echo
 	'<h3>'.__('Deactivated plugins').'</h3>'.
-	'<table class="clear plugins">'.
-	'<caption>'.__('Deactivated plugin list').'</caption>'.
-	'<thead><tr>'.
-	'<th scope="col">'.__('Plugin').'</th>'.
-	'<th scope="col" class="nowrap">'.__('Action').'</th>'.
-	'</tr></thead>'.
-	'<tbody>';
+	'<table class="clear plugins"><tr>'.
+	'<th>'.__('Plugin').'</th>'.
+	'<th class="nowrap">'.__('Action').'</th>'.
+	'</tr>';
 	
 	foreach ($p_disabled as $k => $v)
@@ -293,5 +286,5 @@
 		echo
 		'<tr class="line wide">'.
-		'<th scope="row" class="maximal nowrap"><strong>'.html::escapeHTML($k).'</strong></th>'.
+		'<td class="maximal nowrap"><strong>'.html::escapeHTML($k).'</strong></td>'.
 		'<td class="nowrap action">';
 		
@@ -315,5 +308,4 @@
 	}
 	echo
-	'</tbody>'.
 	'</table>';
 }
Index: admin/popup_posts.php
===================================================================
--- admin/popup_posts.php	(revision 782)
+++ admin/popup_posts.php	(revision 557)
@@ -17,11 +17,11 @@
 $q = !empty($_GET['q']) ? $_GET['q'] : null;
 
-$post_list = new adminPostMiniList($core);
+$page = !empty($_GET['page']) ? (integer) $_GET['page'] : 1;
+$nb_per_page =  10;
 
 $params = array();
+$params['limit'] = array((($page-1)*$nb_per_page),$nb_per_page);
 $params['no_content'] = true;
-
-# - Limit, sortby and order filter
-$params = $post_list->applyFilters($params);
+$params['order'] = 'post_dt DESC';
 
 if ($q) {
@@ -43,5 +43,5 @@
 	$posts = $core->blog->getPosts($params);
 	$counter = $core->blog->getPosts($params,true);
-	$post_list->setItems($posts,$counter->f(0));
+	$post_list = new adminPostMiniList($core,$posts,$counter->f(0));
 } catch (Exception $e) {
 	$core->error->add($e->getMessage());
@@ -49,5 +49,5 @@
 
 echo '<div id="form-entries">'; # I know it's not a form but we just need the ID
-$post_list->display();
+$post_list->display($page,$nb_per_page);
 echo '</div>';
 
Index: admin/post.php
===================================================================
--- admin/post.php	(revision 782)
+++ admin/post.php	(revision 776)
@@ -573,14 +573,11 @@
 {
 	echo
-	'<table class="comments-list">'.
-	'<caption>'.__('Post comments and trackbacks').'</caption>'.
-	'<thead><tr>'.
-	'<th scope="col" colspan="2">'.__('Author').'</th>'.
-	'<th scope="col">'.__('Date').'</th>'.
-	'<th scope="col" class="nowrap">'.__('IP address').'</th>'.
-	'<th scope="col">'.__('Status').'</th>'.
-	'<th scope="col">&nbsp;</th>'.
-	'</tr></thead>'.
-	'<tbody>';
+	'<table class="comments-list"><tr>'.
+	'<th colspan="2">'.__('Author').'</th>'.
+	'<th>'.__('Date').'</th>'.
+	'<th class="nowrap">'.__('IP address').'</th>'.
+	'<th>'.__('Status').'</th>'.
+	'<th>&nbsp;</th>'.
+	'</tr>';
 	
 	while($rs->fetch())
@@ -610,5 +607,5 @@
 		'<td class="nowrap">'.
 		($has_action ? form::checkbox(array('comments[]'),$rs->comment_id,'','','',0,'title="'.($tb ? __('select this trackback') : __('select this comment')).'"') : '').'</td>'.
-		'<th scope="row" class="maximal">'.html::escapeHTML($rs->comment_author).'</th>'.
+		'<td class="maximal">'.html::escapeHTML($rs->comment_author).'</td>'.
 		'<td class="nowrap">'.dt::dt2str(__('%Y-%m-%d %H:%M'),$rs->comment_dt).'</td>'.
 		'<td class="nowrap"><a href="comments.php?ip='.$rs->comment_ip.'">'.$rs->comment_ip.'</a></td>'.
@@ -620,7 +617,5 @@
 	}
 	
-	echo
-	'</tbody>'.
-	'</table>';
+	echo '</table>';
 }
 
Index: admin/posts.php
===================================================================
--- admin/posts.php	(revision 782)
+++ admin/posts.php	(revision 796)
@@ -48,4 +48,5 @@
 	# Filter form we'll put in html_block
 	$users_combo = $categories_combo = array();
+	$users_combo['-'] = $categories_combo['-'] = '';
 	while ($users->fetch())
 	{
@@ -62,5 +63,5 @@
 	$categories_combo[__('None')] = 'NULL';
 	while ($categories->fetch()) {
-		$categories_combo[str_repeat('&nbsp;&nbsp;',$categories->level-1).'&bull; '.
+		$categories_combo[str_repeat('&nbsp;&nbsp;',$categories->level-1).($categories->level-1 == 0 ? '' : '&bull; ').
 			html::escapeHTML($categories->cat_title).
 			' ('.$categories->nb_post.')'] = $categories->cat_id;
@@ -68,4 +69,5 @@
 	
 	$status_combo = array(
+	'-' => ''
 	);
 	foreach ($core->blog->getAllPostStatus() as $k => $v) {
@@ -74,16 +76,33 @@
 	
 	$selected_combo = array(
-	__('is selected') => '1',
-	__('is not selected') => '0'
+	'-' => '',
+	__('selected') => '1',
+	__('not selected') => '0'
 	);
 	
 	# Months array
+	$dt_m_combo['-'] = '';
 	while ($dates->fetch()) {
 		$dt_m_combo[dt::str('%B %Y',$dates->ts())] = $dates->year().$dates->month();
 	}
 	
+	$lang_combo['-'] = '';
 	while ($langs->fetch()) {
 		$lang_combo[$langs->post_lang] = $langs->post_lang;
 	}
+	
+	$sortby_combo = array(
+	__('Date') => 'post_dt',
+	__('Title') => 'post_title',
+	__('Category') => 'cat_title',
+	__('Author') => 'user_id',
+	__('Status') => 'post_status',
+	__('Selected') => 'post_selected'
+	);
+	
+	$order_combo = array(
+	__('Descending') => 'desc',
+	__('Ascending') => 'asc'
+	);
 }
 
@@ -119,63 +138,108 @@
 /* Get posts
 -------------------------------------------------------- */
-$post_list = new adminPostList($core);
-
-$params = new ArrayObject();
+$user_id = !empty($_GET['user_id']) ?	$_GET['user_id'] : '';
+$cat_id = !empty($_GET['cat_id']) ?	$_GET['cat_id'] : '';
+$status = isset($_GET['status']) ?	$_GET['status'] : '';
+$selected = isset($_GET['selected']) ?	$_GET['selected'] : '';
+$month = !empty($_GET['month']) ?		$_GET['month'] : '';
+$lang = !empty($_GET['lang']) ?		$_GET['lang'] : '';
+$sortby = !empty($_GET['sortby']) ?	$_GET['sortby'] : 'post_dt';
+$order = !empty($_GET['order']) ?		$_GET['order'] : 'desc';
+
+$show_filters = false;
+
+$page = !empty($_GET['page']) ? (integer) $_GET['page'] : 1;
+$nb_per_page =  30;
+
+if (!empty($_GET['nb']) && (integer) $_GET['nb'] > 0) {
+	if ($nb_per_page != $_GET['nb']) {
+		$show_filters = true;
+	}
+	$nb_per_page = (integer) $_GET['nb'];
+}
+
+$params['limit'] = array((($page-1)*$nb_per_page),$nb_per_page);
 $params['no_content'] = true;
 
-$filterSet = new dcFilterSet('posts','posts.php');
-class monthComboFilter extends comboFilter {
-	public function applyFilter($params) {
-		$month=$this->values[0];
-		$params['post_month'] = substr($month,4,2);
-		$params['post_year'] = substr($month,0,4);
-	}
-}
-$filterSet
-	->addFilter(new comboFilter(
-		'users',__('Author'), __('Author'), 'user_id', $users_combo))
-	->addFilter(new categoryFilter(
-		'category',__('Category'), __('Category'), 'cat_id', $categories_combo))
-	->addFilter(new comboFilter(
-		'post_status',__('Status'), __('Status'), 'post_status', $status_combo))
-	->addFilter(new booleanFilter(
-		'post_selected',__('Selected'), __('The post : '),'post_selected', $selected_combo))
-	->addFilter(new comboFilter(
-		'lang',__('Lang'), __('Lang'), 'post_lang', $lang_combo))
-	->addFilter(new monthComboFilter(
-		'month',__('Month'),__('Month'), 'post_month', $dt_m_combo,array('singleval' => 1)))
-	->addFilter(new textFilter(
-		'search',__('Contains'),__('The entry contains'), 'search',20,255));
-
-$core->callBehavior('adminPostsFilters',$filterSet);
-$filterSet->setExtra($post_list);
-
-$filterSet->setup($_GET,$_POST);
+# - User filter
+if ($user_id !== '' && in_array($user_id,$users_combo)) {
+	$params['user_id'] = $user_id;
+	$show_filters = true;
+} else {
+	$user_id='';
+}
+
+# - Categories filter
+if ($cat_id !== '' && in_array($cat_id,$categories_combo)) {
+	$params['cat_id'] = $cat_id;
+	$show_filters = true;
+} else {
+	$cat_id='';
+}
+
+# - Status filter
+if ($status !== '' && in_array($status,$status_combo)) {
+	$params['post_status'] = $status;
+	$show_filters = true;
+} else {
+	$status='';
+}
+
+# - Selected filter
+if ($selected !== '' && in_array($selected,$selected_combo)) {
+	$params['post_selected'] = $selected;
+	$show_filters = true;
+} else {
+	$selected='';
+}
+
+# - Month filter
+if ($month !== '' && in_array($month,$dt_m_combo)) {
+	$params['post_month'] = substr($month,4,2);
+	$params['post_year'] = substr($month,0,4);
+	$show_filters = true;
+} else {
+	$month='';
+}
+
+# - Lang filter
+if ($lang !== '' && in_array($lang,$lang_combo)) {
+	$params['post_lang'] = $lang;
+	$show_filters = true;
+} else {
+	$lang='';
+}
+
+# - Sortby and order filter
+if ($sortby !== '' && in_array($sortby,$sortby_combo)) {
+	if ($order !== '' && in_array($order,$order_combo)) {
+		$params['order'] = $sortby.' '.$order;
+	} else {
+		$order='desc';
+	}
+	
+	if ($sortby != 'post_dt' || $order != 'desc') {
+		$show_filters = true;
+	}
+} else {
+	$sortby='post_dt';
+	$order='desc';
+}
 
 # Get posts
 try {
-	$nfparams = $params->getArrayCopy();
-	$filtered = $filterSet->applyFilters($params);
-	$core->callBehavior('adminPostsParams',$params);
 	$posts = $core->blog->getPosts($params);
 	$counter = $core->blog->getPosts($params,true);
-	if ($filtered) {
-		$totalcounter = $core->blog->getPosts($nfparams,true);
-		$page_title = sprintf(__('Entries / %s filtered out of %s'),$counter->f(0),$totalcounter->f(0));
-	} else {
-		$page_title = __('Entries');
-		$filters_info = '';
-	}
-	$post_list->setItems($posts,$counter->f(0));
-} catch (Exception $e) {
-	$core->error->add($e->getMessage());
-}
-
+	$post_list = new adminPostList($core,$posts,$counter->f(0));
+} catch (Exception $e) {
+	$core->error->add($e->getMessage());
+}
 
 /* DISPLAY
 -------------------------------------------------------- */
 $starting_script = dcPage::jsLoad('js/_posts_list.js');
-
-$starting_script .= $filterSet->header();
+if (!$show_filters) {
+	$starting_script .= dcPage::jsLoad('js/filter-controls.js');
+}
 
 dcPage::open(__('Entries'),$starting_script);
@@ -186,8 +250,49 @@
 	'<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Entries').'</span></h2>'.
 	'<p class="top-add"><a class="button add" href="post.php">'.__('New entry').'</a></p>';
-
-	$filterSet->display();
+	
+	if (!$show_filters) {
+		echo '<p><a id="filter-control" class="form-control" href="#">'.
+		__('Filters').'</a></p>';
+	}
+	
+	echo
+	'<form action="posts.php" method="get" id="filters-form">'.
+	'<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>';
+	
 	# Show posts
-	$post_list->display('<form action="posts_actions.php" method="post" id="form-entries">'.
+	$post_list->display($page,$nb_per_page,
+	'<form action="posts_actions.php" method="post" id="form-entries">'.
 	
 	'%s'.
@@ -199,11 +304,19 @@
 	form::combo('action',$combo_action).
 	'<input type="submit" value="'.__('ok').'" /></p>'.
-	str_replace('%','%%',$filterSet->getFormFieldsAsHidden()).
+	form::hidden(array('user_id'),$user_id).
+	form::hidden(array('cat_id'),$cat_id).
+	form::hidden(array('status'),$status).
+	form::hidden(array('selected'),$selected).
+	form::hidden(array('month'),$month).
+	form::hidden(array('lang'),$lang).
+	form::hidden(array('sortby'),$sortby).
+	form::hidden(array('order'),$order).
+	form::hidden(array('page'),$page).
+	form::hidden(array('nb'),$nb_per_page).
 	$core->formNonce().
 	'</div>'.
 	'</form>'
 	);
-	}
-
+}
 
 dcPage::helpBlock('core_posts');
Index: admin/posts_actions.php
===================================================================
--- admin/posts_actions.php	(revision 782)
+++ admin/posts_actions.php	(revision 500)
@@ -31,5 +31,14 @@
 	{
 		$redir =
-		'posts.php?'.urldecode($_POST['f_query']);
+		'posts.php?user_id='.$_POST['user_id'].
+		'&cat_id='.$_POST['cat_id'].
+		'&status='.$_POST['status'].
+		'&selected='.$_POST['selected'].
+		'&month='.$_POST['month'].
+		'&lang='.$_POST['lang'].
+		'&sortby='.$_POST['sortby'].
+		'&order='.$_POST['order'].
+		'&page='.$_POST['page'].
+		'&nb='.$_POST['nb'];
 	}
 	
Index: admin/preferences.php
===================================================================
--- admin/preferences.php	(revision 745)
+++ admin/preferences.php	(revision 821)
@@ -42,4 +42,5 @@
 }
 $user_ui_iconset = @$core->auth->user_prefs->interface->iconset;
+$user_ui_nofavmenu = $core->auth->user_prefs->interface->nofavmenu;
 
 $default_tab = !empty($_GET['tab']) ? html::escapeHTML($_GET['tab']) : 'user-profile';
@@ -175,4 +176,5 @@
 		}
 		$core->auth->user_prefs->interface->put('iconset',(!empty($_POST['user_ui_iconset']) ? $_POST['user_ui_iconset'] : ''));
+		$core->auth->user_prefs->interface->put('nofavmenu',!empty($_POST['user_ui_nofavmenu']),'boolean');
 		
 		# Udate user
@@ -456,5 +458,9 @@
 '<p><label for="user_ui_enhanceduploader" class="classic">'.
 form::checkbox('user_ui_enhanceduploader',1,$user_ui_enhanceduploader).' '.
-__('Activate enhanced uploader in media manager').'</label></p>';
+__('Activate enhanced uploader in media manager').'</label></p>'.
+
+'<p><label for="user_ui_nofavmenu" class="classic">'.
+form::checkbox('user_ui_nofavmenu',1,$user_ui_nofavmenu).' '.
+__('Hide My favorites menu').'</label></p>';
 
 if (count($iconsets_combo) > 1) {
Index: admin/services.php
===================================================================
--- admin/services.php	(revision 782)
+++ admin/services.php	(revision 323)
@@ -25,5 +25,4 @@
 $core->rest->addFunction('delMeta',array('dcRestMethods','delMeta'));
 $core->rest->addFunction('setPostMeta',array('dcRestMethods','setPostMeta'));
-$core->rest->addFunction('searchCommentAuthor',array('dcRestMethods','searchCommentAuthor'));
 $core->rest->addFunction('searchMeta',array('dcRestMethods','searchMeta'));
 
@@ -393,29 +392,4 @@
 		return $rsp;
 	}
-
-	public static function searchCommentAuthor($core,$get)
-	{
-		$q = !empty($get['q']) ? strtoupper($get['q']) : null;
-		
-		$strReq = 'SELECT DISTINCT C.comment_author '.
-			'FROM '.$core->prefix.'comment C '.
-			'INNER JOIN '.$core->prefix.'post P on C.post_id = P.post_id '.
-			'WHERE P.blog_id = \''.$core->blog->id.'\' '.
-			'AND UPPER(comment_author) like \'%'.$core->con->escape($q).'%\''
-			;
-		//echo $strReq;
-		$rs = $core->con->select($strReq);
-		$rsp = new xmlTag();
-		
-		while ($rs->fetch())
-		{
-			$author = new xmlTag('author');
-			$author->name=$rs->comment_author;
-			$rsp->insertNode($author);
-		}
-		
-		return $rsp;
-	}
-
 }
 ?>
Index: admin/style/default.css
===================================================================
--- admin/style/default.css	(revision 883)
+++ admin/style/default.css	(revision 814)
@@ -11,4 +11,6 @@
 # -- END LICENSE BLOCK -----------------------------------------
 */
+
+/* ------------------------------------------------------------------ html */
 body {
 	font: 75%/1.5em Helvetica,Arial,sans-serif;
@@ -38,5 +40,4 @@
 	margin-bottom: 0.6em;
 }
-
 h2 {
 	color: #666;
@@ -51,9 +52,7 @@
 	font-size: 1.2em;
 }
-
 p, div.p {
 	margin: 0 0 1em 0;
 }
-
 hr {
 	height: 1px;
@@ -62,5 +61,4 @@
 	border-style: solid;
 }
-
 pre, code {
 	font: 100% "Andale Mono","Courier New",monospace;
@@ -79,5 +77,4 @@
 	cursor: help;
 }
-
 
 /* LAYOUT
@@ -444,5 +441,4 @@
 	color: #666;
 }
-
 #dashboard-items {
 	float: left;
@@ -552,5 +548,4 @@
 	height: 500px;
 }
-
 #add-file-f {
 	position: relative;
@@ -636,10 +631,8 @@
 	display: inline;
 }
-
 #default-favs h3 {
 	margin-top: 2em;
 	margin-bottom: 1em;
 }
-
 .fav-list {
 	list-style-type: none;
@@ -942,5 +935,4 @@
 	vertical-align: middle;
 }
-
 /* Si quelque chose a besoin d'être caché sauf pour les revues d'écran */
 .hidden {
@@ -977,9 +969,7 @@
 	overflow: auto;
 }
-
 .grid {
 	background: transparent repeat url('grid.png') 0 0;
 }
-
 .line p {
 	margin: 0;
@@ -988,5 +978,4 @@
 	color: #666;
 }
-
 ul.nice {
 	margin: 1em 0;
@@ -1032,4 +1021,5 @@
 	margin-bottom: .5em;
 }
+
 th, td {
 	border-width: 0 0 1px 0;
@@ -1041,9 +1031,9 @@
 th {
 	text-align: left;
+	border-bottom-color: #666;
 }
 .noborder td, td.noborder, .noborder th, th.noborder {
 	border-width: 0;
 }
-
 table .maximal, table.maximal {
 	width: 100%;
@@ -1052,8 +1042,22 @@
 	width: 1px;
 }
-
 table .nowrap {
 	white-space: nowrap;
 	vertical-align: top;
+}
+table.settings, table.prefs {
+	width: 80%;
+}
+table.settings th:first-child, table.prefs th:first-child {
+	width: 20%;
+}
+table.settings th + th, table.prefs th + th {
+	width: 30%;
+}
+table.settings th + th + th, table.prefs th + th + th {
+	width: 10%;
+}
+table.settings th:last-child, table.prefs th:last-child {
+	width: 40%;
 }
 
@@ -1128,5 +1132,4 @@
 	font-weight: normal;
 }
-
 input, textarea, select {
 	background: #f9f9f9;
@@ -1155,5 +1158,4 @@
 	background: transparent;
 }
-
 label {
 	display: block;
@@ -1196,5 +1198,4 @@
 	resize: vertical;
 }
-
 label.required {
 	font-weight: bold;
@@ -1209,5 +1210,5 @@
 p.field {
 	position: relative;
-
+	
 }
 p.field label {
@@ -1221,5 +1222,4 @@
 	top: 0;
 }
-
 label .maximal, textarea.maximal, input.maximal {
 	width: 100%;
@@ -1236,15 +1236,4 @@
 	padding-left: 20px;
 }
-
-a#toggle-filters {
-	font-weight: bold;
-	background: url(../images/plus.png) no-repeat 0 0;
-	padding-left: 20px;
-}
-
-a#toggle-filters.opened {
-	background: url(../images/minus.png) no-repeat 0 0;
-}
-
 .constrained {
 	margin: 0;
@@ -1362,5 +1351,5 @@
 	border-radius: .5em;
 	margin-bottom: .1em;	
-	background: #2C8FD1 url(add.png) no-repeat 6px center;
+	background: #2C8FD1 url(../images/add.png) no-repeat 6px center;
 	color: #fff;
 	padding: .2em 16px .2em 30px;
@@ -1370,29 +1359,2 @@
 	background-color: #2373A8;
 }
-
-form#filters {font-size: 100%; background: #f0f0f0; padding: 1em; border-radius: .5em; border: 1px solid #ddd;}
-form#filters .margintop {padding-top: 1.33em;}
-form#filters ul, form#filters p {list-style-type:none;margin: 0; padding: 0 0 .5em 0; margin-left: 1em;}
-form#filters .col30 {border-left: 1px solid #999;}
-form#filters .col30 h3 {margin-left: 1em;}
-
-p.line, li.line { position: relative; padding: 3px 0 0 28px; margin: 0 0 1em 0;}
-li.line input[type=submit] {position: absolute; left:0;top:0; padding: 0 .1em; margin: 0;}
-li.line input[type=checkbox], li.line input[type=checkbox] {position: absolute; left: 0; top: .2em; padding: 0 .1em; margin: 0;}
-li.line select { margin-right: 2em;}
-li.line label { display: block; width: 8em; float: left;}
-li.line label img {margin-right: 8px;}
-li.line span.or {
-	text-align: right;
-	margin-left: 5em;
-	font-weight: bold;
-}
-p.line label.or + select {margin-left: 2em;}
-li.line { padding: 0 0 0 20px; height: 1em;}
-li.line label {width: auto;}
-
-#available_filters input[type=submit] {padding: 0 .1em; margin-left: .5em;}
-
-div.pagination span, div.pagination a {
-	margin-right: 1em;
-}
Index: dmin/style/jquery-ui-1.8.16.custom.css
===================================================================
--- admin/style/jquery-ui-1.8.16.custom.css	(revision 758)
+++ 	(revision )
@@ -1,568 +1,0 @@
-/*
- * jQuery UI CSS Framework 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
-.ui-helper-clearfix { display: inline-block; }
-/* required comment for clearfix to work in Opera \*/
-* html .ui-helper-clearfix { height:1%; }
-.ui-helper-clearfix { display:block; }
-/* end clearfix */
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
-
-
-/*
- * jQuery UI CSS Framework 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- *
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
- */
-
-
-/* Component containers
-----------------------------------*/
-.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
-.ui-widget .ui-widget { font-size: 1em; }
-.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
-.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
-.ui-widget-content a { color: #333333; }
-.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
-.ui-widget-header a { color: #ffffff; }
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }
-.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; }
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }
-.ui-widget :active { outline: none; }
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
-.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
-.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
-.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
-.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
-.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
-.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
-.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
-.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
-.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
-.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
-.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
-.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
-
-/* positioning */
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-off { background-position: -96px -144px; }
-.ui-icon-radio-on { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
-.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
-.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
-.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
-
-/* Overlays */
-.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
-.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*
- * jQuery UI Resizable 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Resizable#theming
- */
-.ui-resizable { position: relative;}
-.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
-.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
-.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
-.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
-.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
-.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
-.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
-.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
-.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
-.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
- * jQuery UI Selectable 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Selectable#theming
- */
-.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
-/*
- * jQuery UI Accordion 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Accordion#theming
- */
-/* IE/Win - Fix animation bug - #4615 */
-.ui-accordion { width: 100%; }
-.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
-.ui-accordion .ui-accordion-li-fix { display: inline; }
-.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
-.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
-.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
-.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
-.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
-.ui-accordion .ui-accordion-content-active { display: block; }
-/*
- * jQuery UI Autocomplete 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Autocomplete#theming
- */
-.ui-autocomplete { position: absolute; cursor: default; }	
-
-/* workarounds */
-* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
-
-/*
- * jQuery UI Menu 1.8.16
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Menu#theming
- */
-.ui-menu {
-	list-style:none;
-	padding: 2px;
-	margin: 0;
-	display:block;
-	float: left;
-}
-.ui-menu .ui-menu {
-	margin-top: -3px;
-}
-.ui-menu .ui-menu-item {
-	margin:0;
-	padding: 0;
-	zoom: 1;
-	float: left;
-	clear: left;
-	width: 100%;
-}
-.ui-menu .ui-menu-item a {
-	text-decoration:none;
-	display:block;
-	padding:.2em .4em;
-	line-height:1.5;
-	zoom:1;
-}
-.ui-menu .ui-menu-item a.ui-state-hover,
-.ui-menu .ui-menu-item a.ui-state-active {
-	font-weight: normal;
-	margin: -1px;
-}
-/*
- * jQuery UI Button 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Button#theming
- */
-.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
-.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
-button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; } 
-button.ui-button-icons-only { width: 3.7em; } 
-
-/*button text element */
-.ui-button .ui-button-text { display: block; line-height: 1.4;  }
-.ui-button-text-only .ui-button-text { padding: .4em 1em; }
-.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
-.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
-.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
-.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
-/* no icon support for input elements, provide padding by default */
-input.ui-button { padding: .4em 1em; }
-
-/*button icon element(s) */
-.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
-.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
-.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
-.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-
-/*button sets*/
-.ui-buttonset { margin-right: 7px; }
-.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
-
-/* workarounds */
-button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
-/*
- * jQuery UI Dialog 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Dialog#theming
- */
-.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
-.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
-.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
-.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
-.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
-.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
-.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
-.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
-.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
-.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
-.ui-draggable .ui-dialog-titlebar { cursor: move; }
-/*
- * jQuery UI Slider 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Slider#theming
- */
-.ui-slider { position: relative; text-align: left; }
-.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
-.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
-
-.ui-slider-horizontal { height: .8em; }
-.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
-.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
-.ui-slider-horizontal .ui-slider-range-min { left: 0; }
-.ui-slider-horizontal .ui-slider-range-max { right: 0; }
-
-.ui-slider-vertical { width: .8em; height: 100px; }
-.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
-.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
-.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
-.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
- * jQuery UI Tabs 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Tabs#theming
- */
-.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
-.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
-.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
-.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
-.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
-.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
-.ui-tabs .ui-tabs-hide { display: none !important; }
-/*
- * jQuery UI Datepicker 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker#theming
- */
-.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
-.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
-.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
-.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
-.ui-datepicker .ui-datepicker-prev { left:2px; }
-.ui-datepicker .ui-datepicker-next { right:2px; }
-.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
-.ui-datepicker .ui-datepicker-next-hover { right:1px; }
-.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
-.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
-.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
-.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month, 
-.ui-datepicker select.ui-datepicker-year { width: 49%;}
-.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
-.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
-.ui-datepicker td { border: 0; padding: 1px; }
-.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
-.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
-.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi { width:auto; }
-.ui-datepicker-multi .ui-datepicker-group { float:left; }
-.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
-.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
-.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
-.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
-.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
-
-/* RTL support */
-.ui-datepicker-rtl { direction: rtl; }
-.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-
-/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
-.ui-datepicker-cover {
-    display: none; /*sorry for IE5*/
-    display/**/: block; /*sorry for IE5*/
-    position: absolute; /*must have*/
-    z-index: -1; /*must have*/
-    filter: mask(); /*must have*/
-    top: -4px; /*must have*/
-    left: -4px; /*must have*/
-    width: 200px; /*must have*/
-    height: 200px; /*must have*/
-}/*
- * jQuery UI Progressbar 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Progressbar#theming
- */
-.ui-progressbar { height:2em; text-align: left; }
-.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
Index: admin/user.php
===================================================================
--- admin/user.php	(revision 557)
+++ admin/user.php	(revision 860)
@@ -290,5 +290,13 @@
 if ($user_id)
 {
-	echo '<div class="clear fieldset"><h3>'.__('Permissions').'</h3>';
+	echo '<div class="clear fieldset"><h3>'.__('Permissions').'</h3>'.
+	'<form action="users_actions.php" method="post">'.
+	'<p><input type="submit" value="'.__('Add new permissions').'" />'.
+	form::hidden(array('redir'),'user.php?id='.$user_id).
+	form::hidden(array('action'),'blogs').
+	form::hidden(array('users[]'),$user_id).
+	$core->formNonce().
+	'</p>'.
+	'</form>';
 	
 	$permissions = $core->getUserPermissions($user_id);
@@ -305,8 +313,8 @@
 			if (count($v['p']) > 0)
 			{
-				echo '<h4><a href="blog.php?id='.html::escapeHTML($k).'">'.
-				html::escapeHTML($v['name']).'</a> ('.html::escapeHTML($k).') - '.
-				'<a href="permissions.php?blog_id[]='.$k.'&amp;user_id[]='.$user_id.'">'
-				.__('Change permissions').'</a></h4>';
+				echo 
+				'<form action="users_actions.php" method="post">'.
+				'<h4><a href="blog.php?id='.html::escapeHTML($k).'">'.
+				html::escapeHTML($v['name']).'</a> ('.html::escapeHTML($k).')</h4>';
 				
 				echo '<ul>';
@@ -316,13 +324,18 @@
 					}
 				}
-				echo '</ul>';
+				echo '</ul>'.
+				'<p><input type="submit" value="'.__('Change permissions').'" />'.
+				form::hidden(array('redir'),'user.php?id='.$user_id).
+				form::hidden(array('action'),'perms').
+				form::hidden(array('users[]'),$user_id).
+				form::hidden(array('blogs[]'),$k).
+				$core->formNonce().
+				'</p>'.
+				'</form>';
 			}
 		}
 	}
 	
-	echo
-	'<p><a href="permissions_blog.php?user_id[]='.$user_id.'">'.
-	__('Add new permissions').'</a></p>'.
-	'</div>';
+	echo '</div>';
 }
 
Index: admin/users.php
===================================================================
--- admin/users.php	(revision 782)
+++ admin/users.php	(revision 860)
@@ -15,31 +15,7 @@
 dcPage::checkSuper();
 
-# Delete users
-if (!empty($delete_users))
-{
-	foreach ($delete_users as $u)
-	{
-		try
-		{
-			# --BEHAVIOR-- adminBeforeUserDelete
-			$core->callBehavior('adminBeforeUserDelete',$u);
-			if ($u != $core->auth->userID()) {
-				$core->delUser($u);
-			}
-		}
-		catch (Exception $e)
-		{
-			$core->error->add($e->getMessage());
-		}
-	}
-	if (!$core->error->flag()) {
-		http::redirect('users.php?del=1');
-	}
-}
-
-
 # Creating filter combo boxes
 $sortby_combo = array(
-__('Username') => 'U.user_id',
+__('Username') => 'user_id',
 __('Last Name') => 'user_name',
 __('First Name') => 'user_firstname',
@@ -55,5 +31,5 @@
 # Actions combo box
 $combo_action = array(
-	__('Set permissions') => 'setpermissions',
+	__('Set permissions') => 'blogs',
 	__('Delete') => 'deleteuser'
 );
@@ -64,14 +40,18 @@
 
 # Get users
-$user_list = new adminUserList($core);
+$page = !empty($_GET['page']) ? $_GET['page'] : 1;
+$nb_per_page =  30;
+
+if (!empty($_GET['nb']) && (integer) $_GET['nb'] > 0) {
+	$nb_per_page = $_GET['nb'];
+}
 
 $q = !empty($_GET['q']) ? $_GET['q'] : '';
+$sortby = !empty($_GET['sortby']) ?	$_GET['sortby'] : 'user_id';
+$order = !empty($_GET['order']) ?		$_GET['order'] : 'asc';
+
+$params['limit'] = array((($page-1)*$nb_per_page),$nb_per_page);
 
 $show_filters = false;
-
-$params = new ArrayObject();
-
-# - Limit, sortby and order filter
-$params = $user_list->applyFilters($params);
 
 # - Search filter
@@ -81,11 +61,29 @@
 }
 
+# - Sortby and order filter
+if ($sortby !== '' && in_array($sortby,$sortby_combo)) {
+	if ($order !== '' && in_array($order,$order_combo)) {
+		$params['order'] = $sortby.' '.$order;
+	} else {
+		$order='asc';
+	}
+	
+	if ($sortby != 'user_id' || $order != 'asc') {
+		$show_filters = true;
+	}
+} else {
+	$sortby = 'user_id';
+	$order = 'asc';
+}
+
+# Get users
 try {
 	$rs = $core->getUsers($params);
 	$counter = $core->getUsers($params,1);
-	$user_list->setItems($rs,$counter->f(0));
+	$user_list = new adminUserList($core,$rs,$counter->f(0));
 } catch (Exception $e) {
 	$core->error->add($e->getMessage());
 }
+
 
 /* DISPLAY
@@ -96,5 +94,5 @@
 }
 
-dcPage::open(__('users'),$starting_script);
+dcPage::open(__('Users'),$starting_script);
 
 if (!$core->error->flag())
@@ -102,4 +100,7 @@
 	if (!empty($_GET['del'])) {
 		echo '<p class="message">'.__('User has been successfully removed.').'</p>';
+	}
+	if (!empty($_GET['upd'])) {
+			echo '<p class="message">'.__('The permissions have been successfully updated.').'</p>';
 	}
 	
@@ -114,10 +115,23 @@
 	echo
 	'<form action="users.php" method="get" id="filters-form">'.
-	'<fieldset><legend>'.__('Filters').'</legend>'.
+	'<fieldset class="two-cols"><legend>'.__('Filters').'</legend>'.
 	
+	'<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="col">'.
 	'<p><label for="q">'.__('Search:').' '.
 	form::field('q',20,255,html::escapeHTML($q)).
 	'</label></p>'.
-	'<p><input type="submit" value="'.__('Apply filters').'" /></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>'.
 	
 	'<br class="clear" />'. //Opera sucks
@@ -126,5 +140,6 @@
 	
 	# Show users
-	$user_list->display('<form action="dispatcher.php" method="get" id="form-users">'.
+	$user_list->display($page,$nb_per_page,
+	'<form action="users_actions.php" method="post" id="form-users">'.
 	
 	'%s'.
@@ -133,11 +148,16 @@
 	'<p class="col checkboxes-helpers"></p>'.
 	
-	'<p class="col right"><label for="dispatch_action" class="classic">'.
+	'<p class="col right"><label for="action" class="classic">'.
 	__('Selected users action:').' '.
-	form::combo('dispatch_action',$combo_action).
+	form::combo('action',$combo_action).
 	'</label> '.
 	'<input type="submit" value="'.__('ok').'" />'.
+	form::hidden(array('q'),html::escapeHTML($q)).
+	form::hidden(array('sortby'),$sortby).
+	form::hidden(array('order'),$order).
+	form::hidden(array('page'),$page).
+	form::hidden(array('nb'),$nb_per_page).
+	$core->formNonce().
 	'</p>'.
-	$user_list->getFormFieldsAsHidden().
 	'</div>'.
 	'</form>'
Index: admin/users_actions.php
===================================================================
--- admin/users_actions.php	(revision 860)
+++ admin/users_actions.php	(revision 860)
@@ -0,0 +1,284 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of Dotclear 2.
+#
+# Copyright (c) 2003-2011 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 -----------------------------------------
+
+require dirname(__FILE__).'/../inc/admin/prepend.php';
+
+dcPage::checkSuper();
+
+$users = array();
+if (!empty($_POST['users']) && is_array($_POST['users']))
+{
+	foreach ($_POST['users'] as $u)
+	{
+		if ($core->userExists($u)) {
+			$users[] = $u;
+		}
+	}
+}
+
+$blogs = array();
+if (!empty($_POST['blogs']) && is_array($_POST['blogs']))
+{
+	foreach ($_POST['blogs'] as $b)
+	{
+		if ($core->blogExists($b)) {
+			$blogs[] = $b;
+		}
+	}
+}
+
+/* Actions
+-------------------------------------------------------- */
+if (!empty($_POST['action']) && !empty($_POST['users']))
+{
+	$action = $_POST['action'];
+	
+	if (isset($_POST['redir']) && strpos($_POST['redir'],'://') === false)
+	{
+		$redir = $_POST['redir'];
+	}
+	else
+	{
+		$redir =
+		'users.php?q='.$_POST['q'].
+		'&sortby='.$_POST['sortby'].
+		'&order='.$_POST['order'].
+		'&page='.$_POST['page'].
+		'&nb='.$_POST['nb'];
+	}
+	
+	if (empty($users)) {
+		$core->error->add(__('No blog or user given.'));
+	}
+	
+	# --BEHAVIOR-- adminUsersActions
+	$core->callBehavior('adminUsersActions',$core,$users,$blogs,$action,$redir);
+	
+	# Delete users
+	if ($action == 'deleteuser' && !empty($users))
+	{
+		foreach ($users as $u)
+		{
+			try
+			{
+				if ($u == $core->auth->userID()) {
+					throw new Exception(__('Not delete yourself.'));
+				}
+				
+				# --BEHAVIOR-- adminBeforeUserDelete
+				$core->callBehavior('adminBeforeUserDelete',$u);
+				
+				$core->delUser($u);
+			}
+			catch (Exception $e)
+			{
+				$core->error->add($e->getMessage());
+			}
+		}
+		if (!$core->error->flag()) {
+			http::redirect($redir.'&del=1');
+		}
+	}
+	
+	# Update users perms
+	if ($action == 'updateperm' && !empty($users) && !empty($blogs))
+	{
+		try
+		{
+			if (empty($_POST['your_pwd']) || !$core->auth->checkPassword(crypt::hmac(DC_MASTER_KEY,$_POST['your_pwd']))) {
+				throw new Exception(__('Password verification failed'));
+			}
+			
+			foreach ($users as $u)
+			{
+				foreach ($blogs as $b)
+				{
+					$set_perms = array();
+					
+					if (!empty($_POST['perm'][$b]))
+					{
+						foreach ($_POST['perm'][$b] as $perm_id => $v)
+						{
+							if ($v) {
+								$set_perms[$perm_id] = true;
+							}
+						}
+					}
+					
+					$core->setUserBlogPermissions($u,$b,$set_perms,true);
+				}
+			}
+		}
+		catch (Exception $e)
+		{
+			$core->error->add($e->getMessage());
+		}
+		if (!$core->error->flag()) {
+			http::redirect($redir.'&upd=1');
+		}
+	}
+}
+
+/* DISPLAY
+-------------------------------------------------------- */
+dcPage::open(
+	__('Users'),
+	dcPage::jsLoad('js/_users_actions.js').
+	# --BEHAVIOR-- adminUsersActionsHeaders
+	$core->callBehavior('adminUsersActionsHeaders')
+);
+
+if (!isset($action)) {
+	dcPage::close();
+	exit;
+}
+
+$hidden_fields = '';
+foreach($users as $u) {
+	$hidden_fields .= form::hidden(array('users[]'),$u);
+}
+
+if (isset($_POST['redir']) && strpos($_POST['redir'],'://') === false)
+{
+	$hidden_fields .= form::hidden(array('redir'),html::escapeURL($_POST['redir']));
+}
+else
+{
+	$hidden_fields .=
+	form::hidden(array('q'),html::escapeHTML($_POST['q'])).
+	form::hidden(array('sortby'),$_POST['sortby']).
+	form::hidden(array('order'),$_POST['order']).
+	form::hidden(array('page'),$_POST['page']).
+	form::hidden(array('nb'),$_POST['nb']);
+}
+
+# --BEHAVIOR-- adminUsersActionsContent
+$core->callBehavior('adminUsersActionsContent',$core,$action,$hidden_fields);
+
+# Blog list where to set permissions
+if (!empty($users) && empty($blogs) && $action == 'blogs')
+{
+	try {
+		$rs = $core->getBlogs();
+		$nb_blog = $rs->count();
+	} catch (Exception $e) { }
+	
+	foreach ($users as $u) {
+		$user_list[] = '<a href="user.php?id='.$u.'">'.$u.'</a>';
+	}
+	
+	echo 
+	'<h2><a href="users.php">'.__('Users').'</a> &rsaquo; <span class="page-title">'.__('Permissions').'</span></h2>'.
+	'<p>'.sprintf(
+		__('Choose one or more blogs to which you want to give permissions to users %s.'),
+		implode(', ',$user_list)
+	).'</p>';
+	
+	if ($nb_blog == 0)
+	{
+		echo '<p><strong>'.__('No blog').'</strong></p>';
+	}
+	else
+	{
+		echo
+		'<form action="users_actions.php" method="post" id="form-blogs">'.
+		'<table class="clear"><tr>'.
+		'<th class="nowrap" colspan="2">'.__('Blog ID').'</th>'.
+		'<th class="nowrap">'.__('Blog name').'</th>'.
+		'<th class="nowrap">'.__('Entries').'</th>'.
+		'<th class="nowrap">'.__('Status').'</th>'.
+		'</tr>';
+		
+		while ($rs->fetch())
+		{
+			$img_status = $rs->blog_status == 1 ? 'check-on' : 'check-off';
+			$txt_status = $core->getBlogStatus($rs->blog_status);
+			$img_status = sprintf('<img src="images/%1$s.png" alt="%2$s" title="%2$s" />',$img_status,$txt_status);
+			
+			echo
+			'<tr class="line">'.
+			'<td class="nowrap">'.
+			form::checkbox(array('blogs[]'),$rs->blog_id,'','','',false,'title="'.__('select').' '.$rs->blog_id.'"').'</td>'.
+			'<td class="nowrap">'.$rs->blog_id.'</td>'.
+			'<td class="maximal">'.html::escapeHTML($rs->blog_name).'</td>'.
+			'<td class="nowrap">'.$core->countBlogPosts($rs->blog_id).'</td>'.
+			'<td class="status">'.$img_status.'</td>'.
+			'</tr>';
+		}
+		
+		echo
+		'</table>'.
+		'<p class="checkboxes-helpers"></p>'.
+		'<p><input type="submit" value="'.__('Set permissions').'" />'.
+		$hidden_fields.
+		form::hidden(array('action'),'perms').
+		$core->formNonce().'</p>'.
+		'</form>';
+	}
+}
+# Permissions list for each selected blogs
+elseif (!empty($blogs) && !empty($users) && $action == 'perms')
+{
+	$user_perm = array();
+	if (count($users) == 1) {
+			$user_perm = $core->getUserPermissions($users[0]);	
+	}
+	
+	foreach ($users as $u) {
+		$user_list[] = '<a href="user.php?id='.$u.'">'.$u.'</a>';
+	}
+	
+	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.'),
+		implode(', ',$user_list)
+	).'</p>'.
+	'<form id="permissions-form" action="users_actions.php" method="post">';
+	
+	foreach ($blogs as $b)
+	{
+		echo '<h3><a href="blog.php?id='.html::escapeHTML($b).'">'.html::escapeHTML($b).'</a>'.
+		form::hidden(array('blogs[]'),$b).'</h3>';
+		
+		foreach ($core->auth->getPermissionsTypes() as $perm_id => $perm)
+		{
+			$checked = false;
+			
+			if (count($users) == 1) {
+				$checked = isset($user_perm[$b]['p'][$perm_id]) && $user_perm[$b]['p'][$perm_id];
+			}
+			
+			echo
+			'<p><label for="perm'.html::escapeHTML($b).html::escapeHTML($perm_id).'" class="classic">'.
+			form::checkbox(array('perm['.html::escapeHTML($b).']['.html::escapeHTML($perm_id).']','perm'.html::escapeHTML($b).html::escapeHTML($perm_id)),
+			1,$checked).' '.
+			__($perm).'</label></p>';
+		}
+	}
+	
+	echo
+	'<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>'.
+	'</form>';
+}
+
+echo '<p><a class="back" href="'.html::escapeURL($redir).'">'.__('back').'</a></p>';
+
+dcPage::close();
+?>
Index: nc/admin/class.dc.filter.php
===================================================================
--- inc/admin/class.dc.filter.php	(revision 886)
+++ 	(revision )
@@ -1,796 +1,0 @@
-<?php
-# -- BEGIN LICENSE BLOCK ---------------------------------------
-#
-# This file is part of Dotclear 2.
-#
-# Copyright (c) 2003-2011 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 -----------------------------------------
-
-
-/**
-@ingroup DC_CORE
-@nosubgrouping
-@brief Interface to add extra data to filterset.
-
-Note : the instance will be cloned to ensure dual filter edit fields / displayed fields
-Be sure to enable correct object cloning then, using the __clone method
-*/
-interface dcFilterExtraInterface {
-	/**
-	Return extra data to display in right column
-	
-	@param	core		<b>dcCore</b>		Dotclear core reference
-	@param	form_prefix	<b>string</b>		form prefix to use for parameters
-	*/
-	public function getFormContent();
-
-	/**
-	Set dedicated data from form submission 
-	(either $_GET or $_POST depending on the context
-	
-	@param	data		<b>array</b>		Data to retrieve information from
-	*/
-	public function initializeFromData($data);
-	
-	/**
-	Save data to configuration
-	*/
-	public function save();
-	
-	/**
-	Load data from configuration
-	*/
-	public function load();
-		
-	/**
-	Update query parameters with given settings
-	@param	params		<b>ArrayObject</b>		Params being sent to query
-	*/
-	public function applyFilters($params);
-	
-	
-	/**
-	Update parameters that will be used for inter-forms communications
-	(either query string or hidden fields).
-	The associative has to be updated with $param['key']='value'
-	@param	params		<b>ArrayObject</b>		Params to update
-	*/
-	public function updateRequestParams($params);
-}
-
-/**
-@ingroup DC_CORE
-@nosubgrouping
-@brief Dotclear FilterSet class.
-
-Dotclear FilterSet handles filters and columns when displaying items lists.
-*/
-class dcFilterSet {
-
-	protected $lfilters;		/// <b>array</b> lists of defined filters
-	protected $efilters;		/// <b>array</b> lists of defined filters
-	protected $form_prefix;		/// <b>string</b> displayed form prefix
-	protected $action; 			/// <b>string</b> form action page
-	protected $hideform;		/// <b>boolean</b> start form display hidden by default or not
-	protected $lextra;			/// <b>string</b> columns form
-	protected $eextra;			/// <b>string</b> columns form
-	protected $name;			/// <b>string</b> fieldset name
-	
-	/**
-	Inits dcFilterSet object
-	
-	@param	core		<b>dcCore</b>		Dotclear core reference
-	@param	form_prefix	<b>string</b>		form prefix to use for parameters
-	*/
-	public function __construct($name,$action,$form_prefix="f_") {
-		$this->name = $name;
-		$this->form_prefix=$form_prefix;
-		$this->lfilters = new ArrayObject();
-		$this->efilters = new ArrayObject();
-		$this->action = $action;
-		$this->lextra = null;
-		$this->eextra = null;
-		$this->filtered = false;
-	}
-	
-	/**
-	Adds a new filter to list
-	
-	@param	filter		<b>dcFilter</b>		the filter to add
-	*/
-	public function addFilter (Filter $filter) {
-		$filter->setFormPrefix($this->form_prefix);
-		$filter->setFilterSet($this);
-		$this->efilters[$filter->id] = $filter;
-		$this->lfilters[$filter->id] = clone $filter;
-		return $this;
-	}
-	
-	/**
-	Saves user filters to preferences
-	*/
-	protected function saveFilters() {
-		$ser = array();
-		$ws = $GLOBALS['core']->auth->user_prefs->addWorkspace('filters');
-		$data = new ArrayObject();
-		$data= $this->getFiltersAsParams($this->efilters);
-		$ws->put($this->name,serialize($data->getArrayCopy()),'string');
-		return $data;
-	}
-	
-	/**
-	Loads user filters from preferences
-	*/
-	protected function loadFilters() {
-		$ws = $GLOBALS['core']->auth->user_prefs->addWorkspace('filters');
-		$data = (!is_null($ws->{$this->name})) ? unserialize($ws->{$this->name}) : array();
-		if (is_array($data))
-			return $data;
-		else
-			return array();
-	}
-	
-	/**
-	Updates filters values according to form_data
-	To be called before any call to display() or getForm()
-	
-	@param	form_data	<b>array</b>	form values (usually $_GET or $_POST)
-	*/
-	protected function initializeFromData ($filters, $extra, $form_data) {
-		$this->hideform = true;
-		foreach ($filters as $filter) {
-			$filter->initializeFromData ($form_data);
-		}
-		if ($extra != null) {
-			$extra-> initializeFromData ($form_data);
-		}
-	}
-	
-	/**
-	Defines additional form in layout (right column)
-	
-	@param	html	<b>string</b>		the code to add
-	*/
-	public function setExtra($extra)
-	{
-		$this->lextra = $extra;
-		$this->eextra = clone $extra;
-		
-	}
-	
-	/**
-	Returns form fields as hidden fields
-	
-	@return	<b>string</b>	the corresponding html code
-	*/
-	public function getFormFieldsAsHidden() {
-		$ret='';
-		$arr = new ArrayObject();
-		foreach ($this->lfilters as $f) {
-			if ($f->isEnabled())
-				$f->updateRequestParams($arr);
-		}
-		if ($this->lextra != null) {
-			$this->lextra->updateRequestParams($arr);
-		}
-		foreach ($arr as $k=>$v) {
-			$ret.= form::hidden(array($k),$v);
-		}
-		$queryParams = $this->getFiltersAsParams($this->lfilters);
-		if ($this->lextra != null) {
-			$this->lextra->updateRequestParams($queryParams);
-		}
-		$ret .= form::hidden(array($this->form_prefix."query"), http_build_query($queryParams));
-		return $ret;
-	}
-
-	/**
-	Sets up filterset from $get and $post parameters
-	
-	*/
-	public function setup($get,$post) {
-		/* Use cases :
-			(1) $post not empty for formfilter fields :
-				* efilters are set from $post
-				* lfilters are set from $get
-				* keep filters div shown
-			(2) $post empty : 
-				* both efilters and lfilters are set from $get
-				* hide filter div
-		*/
-		$action = false;
-		$allowed_actions = array('clear_filters','add','del_','apply','reset');
-		// Fetch each $post parameter to see whether filters are concerned.
-		// Only 1 action at a time is allowed.
-		foreach ($post as $k => $v) {
-			if (strpos($k,$this->form_prefix)===0) {
-				$tmp = substr($k,strlen($this->form_prefix));
-				foreach ($allowed_actions as $a) {
-					if (strpos($tmp,$a)===0) {
-						$action = $tmp;
-						break;
-					}
-				}
-			}
-		}
-		if ($action !== false) {
-			// Use case (1)
-			if ($action != 'clear_filters' && $action != 'reset')  {
-				$this->initializeFromData($this->efilters,$this->eextra, $post);
-				if ($action == 'add'){
-					if (isset($post['add_filter']) 
-						&& isset($this->efilters[$post['add_filter']])) {
-					$this->efilters[$post['add_filter']]->add();
-					}
-				} elseif (strpos($action,'del_') === 0) {
-					$count = preg_match('#del_(.+)_([0-9]+)#',$action,$match);
-					if (($count == 1) && isset($this->efilters[$match[1]])) {
-						$this->efilters[$match[1]]->remove($match[2]);
-					}
-				} elseif ($action=="apply") {
-					$data = $this->saveFilters();
-					if ($this->eextra != null) {
-						$this->eextra->save();
-					}
-					$query = http_build_query($data,'','&');
-					if ($query != '') {
-						$query = (strpos($this->action,'?') === false ? '?' : '&').$query;
-					}
-					http::redirect($this->action.$query);
-					exit;
-				}
-			}
-			if (isset($post[$this->form_prefix."query"])) {
-				parse_str($post[$this->form_prefix."query"],$out);
-				$this->initializeFromData($this->lfilters,$this->lextra, $out);
-				if ($action == 'reset') {
-					$this->initializeFromData($this->efilters,$this->eextra, $out);
-				}
-			}
-			$this->hideform=false;
-		} else {
-			// Use case (2)
-			$load_from_settings = true;
-			foreach($get as $k=>$v) {
-				if (strpos($k,$this->form_prefix)===0) {
-					$load_from_settings=false;
-					break;
-				}
-			}
-			if ($load_from_settings) {
-				$get = new ArrayObject(array_merge($this->loadFilters(),$get));
-			}
-			$this->initializeFromData($this->efilters, $this->eextra, $get);
-			$this->initializeFromData($this->lfilters, $this->lextra, $get);
-
-		}
-	}
-	/**
-	Retrieves filterset generated form
-	
-	@param	method	<b>string</b>		form method to use (default: "get")
-	*/
-	public function getForm() {
-		$ret = '';
-		
-		if ($this->hideform) {
-			$formclass = ' class="hidden"';
-			$toggleclass = '';
-		} else {
-			$formclass='';
-			$toggleclass = ' class="opened"';
-		}
-		
-		$ret .= '<p>'.
-			'<a href="#" id="toggle-filters"'.$toggleclass.'>'.
-			__('Toggle filters and display options').
-			'</a></p>'.
-			'<div class="two-cols">'.
-			'<form id="filters" action="'.$this->action.'" method="post"'.$formclass.'>'.
-			'<div class="col70">'.
-			'<h3>'.__('Entries filters').'</h3>'.
-			'<table summary="'.__('Query filters').'" id="tfilters">'.
-			'<tbody>';
-		$count=0;
-		$form_combo=array();
-		$form_combo['-']='';
-		if (count($this->efilters)) {
-			foreach ($this->efilters as $filter) {
-				if ($filter->isEnabled()) {
-					$ret .= $filter->getFormLine();
-				}
-				$form_combo[$filter->name]=$filter->id;
-				$count++;
-			}
-		}
-		$ret .= '</tbody></table>'.
-			'<h3 class="margintop">'.__('Add a filter').'</h3>'.
-			'<p id="available_filters">'.
-			form::combo("add_filter",$form_combo).
-			'<input type="submit" value=" + " title="'.__('Add this filter').'" name="'.$this->form_prefix.'add" />'.
-			'</p>'.
-			'<p class="clear"><input class="delete" type="submit" value="'.__('Delete all filters').'" name="'.
-			$this->form_prefix.'clear_filters" />'.
-			'&nbsp;<input  type="submit" value="'.__('Reset').'" name="'.
-			$this->form_prefix.'reset" /></p>'.
-			'</div>';
-		if ($this->eextra != '') {
-			$ret .=
-				'<div class="col30">'.
-				$this->eextra->getFormContent().
-				'</div>';
-		}
-		$queryParams = $this->getFiltersAsParams($this->lfilters);
-		if ($this->lextra != null) {
-			$this->lextra->updateRequestParams($queryParams);
-		}
-		
-		$ret .=
-			'<p class="clear margintop">'.
-			'<input type="submit" value="'.__('Apply filters and display options').
-			'" name="'.$this->form_prefix.'apply" /></p>'.
-			form::hidden(array($this->form_prefix."query"),http_build_query($queryParams)).
-			$GLOBALS['core']->formNonce().
-			'</form>'.
-			'</div>';
-		return $ret;
-	}
-	/**
-	Retrieves the filters values as parameters
-	
-	@param	filters	<b>array</b>	list of concerned filters
-	
-	@return	<b>array</b>	the array of parameters
-
-	*/
-
-	protected function getFiltersAsParams($filters) {
-		$arr = new ArrayObject();
-		foreach ($filters as $f) {
-			if ($f->isEnabled())
-				$f->updateRequestParams($arr);
-		}
-		return $arr;
-	}
-	
-	public function getFiltersText() {
-		$ret = '<p>'.__('Currently applied filters :').'</p><ul>';
-		foreach ($this->lfilters as $f) {
-			if ($f->isEnabled())
-				$ret .= '<li>'.$f->getAsText().'</li>'."\n";
-		}
-		$ret .= '</ul>';
-		return $ret;
-	}
-	
-	/**
-	Displays required fieldset http header
-	To be called in page header, of course.
-	*/
-	public function header() {
-		$ret = dcPage::jsLoad('js/filters.js');
-		foreach($this->efilters as $f) {
-			$ret .= $f->header();
-		}
-		return $ret;
-	}
-	
-	
-	/**
-	Displays the fieldset
-	*/
-	public function display() {
-		echo $this->getForm();
-	}
-
-	/**
-	Applies fieldset and return resulting parameters for request
-	
-	@param	method	<b>string</b>		form method to use (default: "get")
-	@param	method	<b>string</b>		form method to use (default: "get")
-	
-	*/
-	public function applyFilters($params) {
-		foreach ($this->lfilters as $filter) {
-			if ($filter->isEnabled()) {
-				$filter->applyFilter($params);
-				$this->filtered = true;
-			}
-		}
-		if ($this->lextra != null) {
-			$this->lextra->applyFilters($params);
-		}
-		return $this->filtered;
-	}
-	
-	public function getDelName($field_id,$pos) {
-		return $this->form_prefix.'del_'.$field_id.'_'.$pos;
-	}
-}
-
-
-/**
-@ingroup DC_CORE
-@nosubgrouping
-@brief abstract filter class.
-
-Dotclear Filter handles administration filters for each list
-A filter fills in a parameter array, as defined in dcBlog class
-*/
-abstract class Filter {
-	public $filterset;			///<b>string</b> filterset parent
-	public $id;					///<b>string</b> field id (local to fieldset)
-	public $name;				///<b>string</b> filter name
-	public $desc;				///<b>string</b> field description
-	protected $request_param;	///<b>string</b> resulting parameter array key
-	protected $enabled;			///<b>string</b> true if filter is enabled
-	protected $values;			///<b>array</b> possible filter values
-	public $field_id;			///<b>string</b> field id (global to the page)
-	
-	/**
-	Inits Filter object
-	
-	@param	id		<b>string</b>	field id
-	@param	form_prefix	<b>string</b>		form prefix to use for parameters
-	*/
-	public function __construct ($id,$name,$desc,$request_param) {
-		$this->id = $id;
-		$this->name=$name;
-		$this->desc = $desc;
-		$this->request_param = $request_param;
-		$this->enabled=false;
-		$this->values = array();
-		$this->field_id = $this->id;
-	}
-	
-	/**
-	Defines the filterset containing this filter
-	
-	@param	prefix		<b>dcFilterset</b>	the filterset
-	*/
-	public function setFilterSet($fs) {
-		$this->filterset = $fs;
-	}
-	
-	/**
-	Defines form prefix for filter
-	
-	@param	prefix		<b>string</b>	the form prefix
-	*/
-	public function setFormPrefix($prefix) {
-		$this->field_id = $prefix.$this->id;
-	}
-	
-	/**
-	Get a field id
-	
-	@param	pos		<b>integer</b>	position of field, in case of multiple field (0 if only 1 field set, default value)
-	@return	<b>string</b> The field ID
-	*/
-	protected function getFieldId($pos=0) {
-		if ($pos == 0) {
-			return $this->field_id;
-		} else {
-			return $this->field_id.'_'.$pos;
-		}
-	}
-	
-	/**
-	Tells whether the filter is enabled or not
-	
-	@return	<b>boolean</b> true if enabled, false otherwise
-	*/
-	public function isEnabled() {
-		return $this->enabled;
-	}
-	
-	/**
-	Adds the current filter to the list
-	*/
-	public function add() {
-		// By default here, only 1 value allowed. Simply enable the filter
-		$this->enabled = true;
-	}
-	
-	/**
-	Removes a value from filter
-	*/
-	public function remove($pos) {
-		if (isset($this->values[$pos])) {
-			array_splice($this->values,$pos,1);
-			$this->enabled = (count($this->values)!=0);
-		}
-	}
-	
-	/**
-	Returns HTML code for form field
-	
-	@param	pos		<b>integer</b>	position of the field to display 
-									(in case of multiple values)
-	@return <b>string</b> the html code
-	*/
-	abstract protected function getFormFields($pos=0);
-	
-	/**
-	Extract values from data (data being an array, such as $_GET or $_POST)
-	
-	@param	$data	<b>array</b>	data to parse
-	@return	<b>array</b>	field values
-	
-	*/
-	protected function getValuesFromData($data) {
-		$count=0;
-		$arr = array();
-		while (isset($data[$this->getFieldId($count)])) {
-			$arr[$count] = $data[$this->getFieldId($count)];
-			$count++;
-		}
-		return $arr;
-	}
-	
-	public function initializeFromData($form_data) {
-		$this->values = $this->getValuesFromData($form_data);
-		$this->enabled = (count($this->values)!=0);
-	}
-	
-	/**
-	Returns HTML code for the hole filter lines
-	
-	@return <b>string</b> the html code
-	*/
-	
-	public function getFormLine() {
-		$ret='';
-		for ($cur=0; $cur < count($this->values); $cur++) {
-			$ret .= '<tr class="'.$this->id.'">';
-			$del_id = $this->filterset->getDelName($this->id,$cur);
-			$ret .= '<td><input id="'.$del_id.'" class="delete" '.
-					'type="submit" title="Delete the following filter : " value=" - " name="'.$del_id.'"/></td>'.
-					$this->getFormFields($cur);
-			$ret .= '</tr>';
-		}
-		return $ret;
-	}
-	
-	public function updateRequestParams($arr) {
-		for ($cur=0; $cur < count($this->values); $cur++) {
-			$arr[$this->getFieldId($cur)]=$this->values[$cur];
-		}
-	}
-	
-	/**
-	Convert filter values into a $param filter, used for the upcoming SQL request
-	
-	@param <b>ArrayObject</b> the parameters array to enrich
-	*/
-	public function applyFilter($params) {
-	}
-	
-	public function setValues($value) {
-		$this->values = $value;
-	}
-	
-	public function getValue() {
-		return $this->values;
-	}
-
-	public function header() {
-		return '';
-	}
-	
-	public abstract function getAsText();
-
-	
-}
-
-/**
-@ingroup DC_CORE
-@nosubgrouping
-@brief abstract filter class.
-
-Handle combo filter on admin side. Can be single or multi-valued
-*/
-class comboFilter extends Filter {
-	protected $options;
-	protected $default;
-	protected $no_value;
-	protected $verb;
-	protected $extra;
-	
-	public function __construct($id,$name,$desc,$request_param,$options,$extra=array()) {
-		parent::__construct($id,$name,$desc,$request_param);
-		$this->options = $options;
-		$this->extra = $extra;
-		$this->verb = "is";
-		$this->values=array();
-	}
-	
-	protected function getValuesFromData($data) {
-		$val = parent::getValuesFromData($data);
-		if (isset($data[$this->field_id.'_v'])) {
-			$verb = $data[$this->field_id.'_v'];
-		} else {
-			$verb = "is";
-		}
-		$arr = array(
-			'values' => $val,
-			'verb' => $verb
-		);
-		return $arr;
-	}
-	
-	public function add() {
-		parent::add();
-		if (isset($this->extra['singleval']) && (count($this->values) > 0))
-			return;
-		$this->values[]=current($this->options);
-	}
-	
-	public function getType() {
-		return "combo";
-	}
-
-	public function serialize() {
-		$data = parent::serialize();
-		$data['verb'] = $this->verb;
-		return $data;
-	}
-	
-	public function unserialize ($data) {
-		parent::unserialize($data);
-		$this->verb = $data['verb'];
-	}
-	
-	public function initializeFromData($form_data) {
-		$arr = $this->getValuesFromData($form_data);
-		$this->values = $arr['values'];
-		$this->verb = $arr['verb'];
-		$this->enabled = (count($this->values) != 0);
-	}
-
-	public function getFormFields($pos=0) {
-		if ($pos == 0) {
-			$ret = '<td id="'.$this->getFieldId($pos).'" title="'.$this->desc.'" class="filter-title">'.
-				''.$this->desc.' : </td>'.
-				'<td>'.
-				form::combo($this->field_id.'_v',
-					array(__('is')=>'is',__('is not')=>'isnot'),$this->verb,'','',
-					false,'title="'.sprintf(__('%s is or is not'),$this->desc).'"').
-				'</td>';
-		} else {
-			$ret = '<td id="'.$this->getFieldId($pos).'" title="or" colspan="2" class="or">'.
-				__('or').' : </td>';
-		};
-		$ret .= '<td>'.form::combo($this->getFieldId($pos),$this->options,$this->values[$pos],
-			'','',false,'title="'.__('Choose an option').'"').'</td>';
-		return $ret;
-	}
-	
-	public function updateRequestParams($arr) {
-		parent::updateRequestParams($arr);
-		
-		$arr[$this->field_id.'_v']=$this->verb;
-	}
-	
-	public function applyFilter($params) {
-		$attr = $this->request_param;
-		if ($this->verb != "is") {
-			$params[$attr."_not"] = true;
-		}
-		if (isset($this->extra['singleval']))
-			$params[$attr]=$this->values[0];
-		else
-			$params[$attr]=$this->values;
-}
-	
-	public function getValues() {
-		return array_merge($this->values,array($this->field_id.'_v',$this->verb));
-	}
-	
-	public function getAsText() {
-		$arr=array();
-		foreach ($this->values as $value) {
-			$arr[]=array_search($value,$this->options);
-		}
-		return sprintf("%s %s %s",$this->desc,$this->verb,join(',',$arr));
-	}
-}
-
-
-class categoryFilter extends comboFilter {
-	public function getAsText() {
-		$arr=array();
-		foreach ($this->values as $value) {
-			$cat=array_search($value,$this->options);
-			$arr[]=preg_replace("#^.* ([^ ]+) .*$#",'$1',$cat);
-		}
-		return sprintf("%s %s %s",$this->desc,$this->verb,join(',',$arr));
-	}
-}
-/**
-@ingroup DC_CORE
-@nosubgrouping
-@brief abstract filter class.
-
-Handle boolean filter on admin side.
-*/
-class booleanFilter extends Filter {
-	protected $options;
-	
-	public function __construct($id,$name,$desc,$request_param,$options) {
-		parent::__construct($id,$name,$desc,$request_param);
-		$this->options = $options;
-		$this->values=array();
-	}
-	
-	
-	public function getType() {
-		return "boolean";
-	}
-	public function add() {
-		parent::add();
-		$this->values=current($this->options);
-	}
-
-	public function getFormFields($pos=0) {
-		return '<td colspan="2">'.$this->desc.'</td><td>'.
-			form::combo($this->getFieldId($pos),$this->options,$this->values[$pos],
-				'','',false,'title="'.__('Choose an option').'"').'</td>';
-	}
-	
-	public function applyFilter($params) {
-		$params[$this->request_param]=$this->values[0];
-	}
-	
-	public function getAsText() {
-		return sprintf("%s %s",$this->desc,$this->values[0]);
-	}
-}
-
-
-class textFilter extends Filter {
-	protected $size;
-	protected $max;
-	
-	public function __construct($id,$name,$desc,$request_param,$size,$max) {
-		parent::__construct($id,$name,$desc,$request_param);
-		$this->size = $size;
-		$this->max = $max;
-		$this->values=array();
-	}
-	
-	
-	public function getType() {
-		return "text";
-	}
-	public function add() {
-		parent::add();
-		$this->values[]='';
-	}
-
-	public function getFormFields($pos=0) {
-		return '<td colspan="2">'.$this->desc.'</td><td>'.
-			form::field($this->getFieldId($pos),$this->size,$this->max,html::escapeHTML($this->values[0])).
-			'</td>';
-	}
-	
-	public function applyFilter($params) {
-		$params[$this->request_param]=$this->values[0];
-	}
-	
-	public function setValues($value) {
-		parent::setValues(array($value));
-	}
-
-	public function getAsText() {
-		return sprintf("%s %s",$this->desc,$this->values[0]);
-	}
-	
-}
-
-
-?>
Index: nc/admin/class.dc.list.php
===================================================================
--- inc/admin/class.dc.list.php	(revision 805)
+++ 	(revision )
@@ -1,1140 +1,0 @@
-<?php
-# -- BEGIN LICENSE BLOCK ---------------------------------------
-#
-# This file is part of Dotclear 2.
-#
-# Copyright (c) 2003-2011 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_RC_PATH')) { return; }
-
-/**
-@ingroup DC_CORE
-@nosubgrouping
-@brief Dotclear items pager class.
-
-Dotclear items pager handles pagination for every admin list.
-*/
-class adminItemsPager extends pager
-{
-	public function getLinks()
-	{
-		$htmlText = '';
-		$htmlStart = '';
-		$htmlEnd = '';
-		$htmlPrev = '';
-		$htmlNext = '';
-		$htmlDirectAccess = '';
-		$htmlHidden = '';
-		
-		$this->setURL();
-		
-		# Page text
-		$htmlText = '<span>'.sprintf(__('Page %s over %s'),$this->env,$this->nb_pages).'</span>';
-		
-		# Previous page
-		if($this->env != 1) {
-			$htmlPrev = '<a href="'.sprintf($this->page_url,$this->env-1).'" class="prev">'.
-			$htmlPrev .= $this->html_prev.'</a>';
-		}
-		
-		# Next page
-		if($this->env != $this->nb_pages) {
-			$htmlNext = '<a href="'.sprintf($this->page_url,$this->env+1).'" class="next">';
-			$htmlNext .= $this->html_next.'</a>';
-		}
-		
-		# Start
-		if($this->env != 1) {
-			$htmlStart = '<a href="'.sprintf($this->page_url,1).'" class="start">'.
-			$htmlStart .= $this->html_start.'</a>';
-		}
-		
-		# End
-		if($this->env != $this->nb_pages) {
-			$htmlEnd = '<a href="'.sprintf($this->page_url,$this->nb_pages).'" class="end">'.
-			$htmlEnd .= $this->html_end.'</a>';
-		}
-		
-		# Direct acces
-		$htmlDirectAccess = 
-			'<span>'.__('Direct access to page').'&nbsp;'.
-			form::field(array('page'),3,3,$this->env).'&nbsp;'.
-			'<input type="submit" value="'.__('ok').'" />'.
-			'</span>';
-			
-		# Hidden fields
-		foreach ($_GET as $k => $v) {
-			if ($k != $this->var_page) {
-				$htmlHidden .= form::hidden(array($k),$v);
-			}
-		}
-		
-		$res =
-			'<form method="get" action="'.$this->base_url.'"><p>'.
-			$htmlStart.
-			$htmlPrev.
-			$htmlText.
-			$htmlNext.
-			$htmlEnd.
-			$htmlDirectAccess.
-			$htmlHidden.
-			'</p></form>';
-		
-		return $this->nb_elements > 0 ? $res : '';
-	}
-}
-
-/**
-@ingroup DC_CORE
-@nosubgrouping
-@brief Dotclear items column class.
-
-Dotclear items column handles each column object use in adminItemsList class.
-*/
-class adminItemsColumn
-{
-	protected $core;		/// <b>object</b> dcCore object
-	protected $id;			/// <b>string</b> ID of defined column
-	protected $alias;		/// <b>string</b> ID of defined column
-	protected $title;		/// <b>string</b> Title of defined column
-	protected $callback;	/// <b>array</b> Callback calls to display defined column
-	protected $html;		/// <b>array</b> Extra HTML for defined column
-	
-	/**
-	Inits Generic column object
-	
-	@param	id		<b>string</b>		Column id
-	@param	alias	<b>string</b>		Column alias for SQL
-	@param	title	<b>string</b>		Column title (for table headers)
-	@param	callback	<b>array</b>		Column callback (used for display)
-	@param	html		<b>array</b>		Extra html (used for table headers)
-	@param	sortable	<b>boolean</b>		Defines if the column can be sorted or not
-	@param	listable	<b>boolean</b>		Defines if the column can be listed or not
-	@param	can_hide	<b>boolean</b>		Defines if the column can be hidden or not
-	*/
-	public function __construct($id,$alias,$title,$callback,$html = null,$sortable = true,$listable = true,$can_hide = true)
-	{
-		if (!is_string($id) || $id === '') {
-			throw new Exception(__('Invalid column ID'));
-		}
-		
-		if (!is_string($title)) {
-			throw new Exception(__('Invalid column title'));
-		}
-		
-		if (is_null($html) || !is_array($html)) {
-			$html = array();
-		}
-		
-		if (!is_bool($sortable)) {
-			$sortable = true;
-		}
-		
-		if (!is_bool($listable)) {
-			$listable = true;
-		}
-		
-		if (!is_bool($can_hide)) {
-			$can_hide = true;
-		}
-		
-		if (!is_string($alias) && $sortable) {
-			throw new Exception(__('Invalid column alias'));
-		}
-		
-		try {
-			if (!is_array($callback) || count($callback) < 2) {
-				throw new Exception(__('Callback parameter should be an array'));
-			}
-			$r = new ReflectionClass($callback[0]);
-			$f = $r->getMethod($callback[1]);
-			$p = $r->getParentClass();
-			$find_parent = false;
-			
-			while (!$p) {
-				if ($p->name == 'adminItemsList') {
-					$find_parent = true;
-				}
-				else {
-					$p->getParentClass();
-				}
-			}
-			
-			if (!$p || !$f) {
-				throw new Exception(__('Callback class should be inherited of adminItemsList class'));
-			}
-		}
-		catch (Exception $e) {
-			throw new Exception(sprintf(__('Invalid column callback: %s'),$e->getMessage()));
-		}
-		
-		$this->id = $id;
-		$this->alias = $alias;
-		$this->title = $title;
-		$this->callback = $callback;
-		$this->html = $html;
-		$this->sortable = $sortable;
-		$this->listable = $listable;
-		$this->can_hide = $can_hide;
-		$this->visibility = true;
-	}
-	
-	/**
-	Gets information of defined column
-	
-	@param	info		<b>string</b>		Column info to retrive
-	
-	@return	<b>mixed</b>	The information requested, null otherwise
-	*/
-	public function getInfo($info)
-	{
-		return property_exists(get_class($this),$info) ? $this->{$info} : null;
-	}
-	
-	/**
-	Sets visibility of defined column
-	
-	@param	visibility	<b>boolean</b>		Column visibility
-	*/
-	public function setVisibility($visibility)
-	{
-		if (is_bool($visibility) && $this->can_hide) {
-			$this->visibility = $visibility;
-		}
-		else {
-			$this->visibility = true;
-		}
-	}
-	
-	/**
-	Returns visibility status of defined column
-	
-	@return	<b>boolean</b>		true if column is visible, false otherwise
-	*/
-	public function isVisible()
-	{
-		return $this->visibility;
-	}
-	
-	/**
-	Returns if the defined column can be sorted
-	
-	@return	<b>boolean</b>		true if column is sortable, false otherwise
-	*/
-	public function isSortable()
-	{
-		return $this->sortable;
-	}
-	
-	/**
-	Returns if the defined column can be listed
-	
-	@return	<b>boolean</b>		true if column is listable, false otherwise
-	*/
-	public function isListable()
-	{
-		return $this->listable;
-	}
-	
-	/**
-	Returns if the defined column can be hidden
-	
-	@return	<b>boolean</b>	true if column can be hidden, false otherwise
-	*/
-	public function canHide()
-	{
-		return $this->can_hide;
-	}
-}
-
-/**
-@ingroup DC_CORE
-@nosubgrouping
-@brief abstract items list class.
-
-Dotclear items list handles administration lists
-*/
-abstract class adminItemsList implements dcFilterExtraInterface
-{
-	protected $core;
-	protected $rs;
-	protected $rs_count;
-	protected $columns;
-	protected $sortby;
-	protected $order;
-	protected $nb_per_page;
-	protected $page;
-	protected $default_sortby;
-	protected $default_order;
-	
-	/*
-	Sets columns of defined list
-	*/
-	abstract function setColumns();
-	
-	/**
-	Inits List object
-	
-	@param	core		<b>dcCore</b>		dcCore object
-	*/
-	public function __construct($core)
-	{
-		
-		$this->core = $core;
-		$this->context = get_class($this);
-		$this->columns = new ArrayObject();
-		$this->form_prefix = 'col_';
-		
-		$this->html_prev = __('prev');
-		$this->html_next = __('next');
-		$this->html_start = __('start');
-		$this->html_end = __('end');
-		
-		$this->nb_per_page = 10;
-		
-		$this->setColumns();
-		
-		# --BEHAVIOR-- adminItemsListConstruct
-		$core->callBehavior('adminItemsListConstruct',$this);
-		
-	}
-	
-	public function __clone() {
-		$arr = new ArrayObject();
-		foreach ($this->columns as $k=>$v) {
-			$arr[$k]= clone $v;
-		}
-		$this->columns = $arr;
-	}
-	/**
-	Apply limit, sortby and order filters to items parameters
-	
-	@param	params	<b>array</b>	Items parameters
-	
-	@return	<b>array</b>		Items parameters
-	*/
-	public function applyFilters($params)
-	{
-		if (!is_null($this->sortby) && !is_null($this->order)) {
-			if (
-				isset($this->columns[$this->sortby]) &&
-				in_array($this->order,array('asc','desc'))
-			) {
-				$params['order'] = $this->columns[$this->sortby]->getInfo('alias').' '.$this->order;
-			}
-		}
-		
-		$params['limit'] = array((($this->page-1)*$this->nb_per_page),$this->nb_per_page);
-		
-		return $params;
-	}
-	
-	/**
-	Sets items and items counter
-	
-	@param	rs		<b>recordSet</b>	Items recordSet to display
-	@param	rs_count	<b>int</b>		Total items number
-	*/
-	public function setItems($rs,$rs_count)
-	{
-		$this->rs = $rs;
-		$this->rs_count = $rs_count;
-	}
-	
-	/**
-	Returns HTML code form used to choose which column to display
-	
-	@return	<b>string</b>		HTML code form
-	*/
-	public function getFormContent()
-	{
-		$block = 
-		'<h3>'.__('Displayed information').'</h3>'.
-		'<ul>%s</ul>';
-		
-		$list = array();
-		$sortby_combo = array();
-		foreach ($this->columns as $k => $v) {
-			$col_id = $this->form_prefix.$k;
-			$col_label = sprintf('<label for="%s">%s</label>',$col_id,$v->getInfo('title'));
-			$col_html = sprintf('<li class="line">%s</li>',$col_label.form::checkbox($col_id,1,$v->isVisible(),null,null,!$v->canHide()));
-			
-			if ($v->isListable()) {
-				array_push($list,$col_html);
-			}
-			$sortby_combo[$v->getInfo('title')] = $k;
-		}
-		$order_combo = array(
-				__('Descending') => 'desc',
-				__('Ascending') => 'asc'
-		);
-		
-		$nb_per_page = !is_null($this->nb_per_page) ? $this->nb_per_page : 10;
-		
-		return
-		sprintf($block,implode('',$list)).
-		'<p><label for="nb_per_page">'.__('Items per page:').
-		'</label>&nbsp;'.form::field('nb_per_page',3,3,$nb_per_page).
-		'</p>'.
-		'<p><label for="sortby">'.__('Sort by:').
-		'</label>&nbsp;'.form::combo('sortby',$sortby_combo,$this->sortby).
-		'</p>'.
-		'<p><label for="order">'.__('Order:').
-		'</label>&nbsp;'.form::combo('order',$order_combo,$this->order).
-		'</p>';
-	}
-	
-	public function updateRequestParams($params) {
-		if (!is_null($this->sortby) && isset($this->columns[$this->sortby])) {
-			$params['sortby'] = $this->columns[$this->sortby]->getInfo('alias');
-		}
-		if (!is_null($this->order)) {
-			$params['order'] = $this->order;
-		}
-		if (!is_null($this->nb_per_page)) {
-			$params['nb_per_page'] = $this->nb_per_page;
-		}
-		if (!is_null($this->page)) {
-			$params['page'] = $this->page;
-		}
-		foreach ($this->columns as $k => $v) {
-			if($v->isVisible())
-				$params[$this->form_prefix.$k] = 1;
-		}
-
-	}
-	
-	/**
-	Returns HTML hidden fields for list options
-	
-	@return	<b>string</b>		HTML hidden fields
-	*/
-	public function getFormFieldsAsHidden()
-	{
-		$res = '';
-		
-		if (!is_null($this->sortby)) {
-			$res .= form::hidden(array('sortby'),$this->sortby);
-		}
-		if (!is_null($this->order)) {
-			$res .= form::hidden(array('order'),$this->order);
-		}
-		if (!is_null($this->nb_per_page)) {
-			$res .= form::hidden(array('nb_per_page'),$this->nb_per_page);
-		}
-		if (!is_null($this->page)) {
-			$res .= form::hidden(array('page'),$this->page);
-		}
-		
-		return $res;
-	}
-	
-	/**
-	Returns HTML code list to display
-	
-	@param	enclose_block	<b>string</b>		HTML wrapper of defined list
-	
-	@return	<b>string</b>		HTML code list
-	*/
-	public function display($enclose_block = '')
-	{
-		if ($this->rs->isEmpty())
-		{
-			echo '<p><strong>'.__('No item').'</strong></p>';
-		}
-		else
-		{
-			$pager = new adminItemsPager($this->page,$this->rs_count,$this->nb_per_page,10);
-			$pager->html_prev = $this->html_prev;
-			$pager->html_next = $this->html_next;
-			$pager->html_start = $this->html_start;
-			$pager->html_end = $this->html_end;
-			$pager->var_page = 'page';
-			
-			$html_block =
-			'<table class="maximal clear">'.
-			$this->getCaption($this->page).
-			'<thead><tr>';
-			
-			foreach ($this->columns as $k => $v) {
-				if ($v->isVisible()) {
-					$title = $v->getInfo('title');
-					if ($v->isSortable()) {
-						$title = sprintf('<a href="%2$s">%1$s</a>',$title,$this->getSortLink($v));
-					}
-					$html_extra = '';
-					foreach ($v->getInfo('html') as $i => $j) {
-						$html_extra = $i.'="'.implode(' ',$j).'"';
-					}
-					$html_extra = !empty($html_extra) ? ' '.$html_extra : '';
-					$html_block .= sprintf('<th scope="col"%2$s>%1$s</th>',$title,$html_extra);
-				}
-			}
-			
-			$html_block .=
-			'</tr></thead>'.
-			'<tbody>%s</tbody>'.
-			'</table>';
-			
-			if ($enclose_block) {
-				$html_block = sprintf($enclose_block,$html_block);
-			}
-			
-			echo '<div class="pagination">'.$pager->getLinks().'</div>';
-			
-			$blocks = explode('%s',$html_block);
-			
-			echo $blocks[0];
-			
-			while ($this->rs->fetch())
-			{
-				echo $this->displayLine();
-			}
-			
-			echo $blocks[1];
-			
-			echo '<div class="pagination">'.$pager->getLinks().'</div>';
-		}
-	}
-	
-	/**
-	Adds column to defined list
-	
-	@param	id		<b>string</b>		Column id
-	@param	alias	<b>string</b>		Column alias for SQL
-	@param	title	<b>string</b>		Column title (for table headers)
-	@param	callback	<b>array</b>		Column callback (used for display)
-	@param	html		<b>string</b>		Extra html (used for table headers)
-	@param	sortable	<b>boolean</b>		Defines if the column can be sorted or not
-	@param	listable	<b>boolean</b>		Defines if the column can be listed or not
-	@param	can_hide	<b>boolean</b>		Defines if the column can be hidden or not
-	*/
-	protected function addColumn($id,$alias,$title,$callback,$html = null,$sortable = true,$listable = true,$can_hide = true)
-	{
-		try {
-			if (is_null($html) || !is_array($html)) {
-				$html = array();
-			}
-			if ($this->sortby === $alias && !is_null($this->order)) {
-				if (array_key_exists('class',$html)) {
-					array_push($html['class'],$this->order);
-				}
-				else {
-					$html['class'] = array($this->order);
-				}
-			}
-			$c = new adminItemsColumn($id,$alias,$title,$callback,$html,$sortable,$listable,$can_hide);
-			$this->columns[$id] = $c;
-		}
-		catch (Exception $e) {
-			if (DC_DEBUG) {
-				$this->core->error->add(sprintf('[%s] %s',$id,$e->getMessage()));
-			}
-		}
-	}
-	
-	/**
-	Returns default caption text
-	
-	@return	<b>string</b>		Default caption
-	*/
-	protected function getDefaultCaption()
-	{
-		return;
-	}
-	
-	/**
-	Returns default HTML code line
-	
-	@return	<b>string</b>		Default HTMl code line
-	*/
-	protected function getDefaultLine()
-	{
-		return '<tr class="line">%s</tr>';
-	}
-	
-	/**
-	Loads list from user settings
-	*/
-	public function load() {
-		$ws = $this->core->auth->user_prefs->addWorkspace('lists');
-		$user_pref = !is_null($ws->{$this->context.'_opts'}) ? unserialize($ws->{$this->context.'_opts'}) : array();
-		$this->sortby = array_key_exists('sortby',$user_pref) ? $user_pref['sortby'] : $this->default_sortby;
-		$this->order = array_key_exists('order',$user_pref) ? $user_pref['order'] : $this->default_order;
-		$this->nb_per_page = array_key_exists('nb_per_page',$user_pref) ? $user_pref['nb_per_page'] : 10;
-		$user_pref = !is_null($ws->{$this->context.'_col'}) ? unserialize($ws->{$this->context.'_col'}) : array();
-		foreach ($this->columns as $k => $v) {
-			$visibility =  array_key_exists($k,$user_pref) ? $user_pref[$k] : true;
-			$v->setVisibility($visibility);
-		}
-		if ($this->sortby != null && !isset($this->columns[$this->sortby])) {
-			// No alias found
-			$this->sortby=$this->default_sortby;
-			$this->order=$this->default_order;
-		}
-
-	}
-	
-	/**
-	Saves list to user settings
-	*/
-	public function save() {
-		$ws = $this->core->auth->user_prefs->addWorkspace('lists');
-		$user_pref = !is_null($ws->{$this->context.'_opts'}) ? unserialize($ws->{$this->context.'_opts'}) : array();
-		$user_pref['order'] = $this->order;
-		$user_pref['nb_per_page'] = $this->nb_per_page;
-		$user_pref['sortby'] = $this->sortby;
-		
-		$this->core->auth->user_prefs->lists->put($this->context.'_opts',serialize($user_pref),'string');
-		
-		$user_pref = !is_null($ws->{$this->context.'_col'}) ? unserialize($ws->{$this->context.'_col'}) : array();
-		
-		foreach ($this->columns as $k => $v) {
-			$user_pref[$k] = $v->isVisible();
-		}
-		$this->core->auth->user_prefs->lists->put($this->context.'_col',serialize($user_pref),'string');
-	}
-	
-	/**
-	Set dedicated data from form submission 
-	(either $_GET or $_POST depending on the context
-	
-	@param	data		<b>array</b>		Data to retrieve information from
-	*/
-	public function initializeFromData ($data)
-	{
-		$load_from_settings = true;
-		foreach ($data as $k=>$v) {
-			if (strpos($k,$this->form_prefix) === 0) {
-				$load_from_settings = false;
-			}
-		}
-		if ($load_from_settings) {
-			$this->load();
-		}
-		# Sortby
-		$this->sortby = array_key_exists('sortby',$data) ? $data['sortby'] : $this->sortby;
-		$this->order = array_key_exists('order',$data) ? $data['order'] : $this->order;
-		$this->nb_per_page = array_key_exists('nb_per_page',$data) ? (integer) $data['nb_per_page'] : $this->nb_per_page;
-		# Page
-		$this->page = array_key_exists('page',$data) ? (integer) $data['page'] : 1;
-		if ($load_from_settings)
-			return;
-		foreach ($this->columns as $k => $v) {
-			$key = $this->form_prefix.$k;
-			$visibility = !array_key_exists($key,$data) ? false : true;
-			$v->setVisibility($visibility);
-		}
-	}
-	
-	/**
-	Returns HTML code for each line of defined list
-	
-	@return	<b>string</b>		HTML code line
-	*/
-	private function displayLine()
-	{
-		$res = '';
-		
-		foreach ($this->columns as $k => $v) {
-			if ($v->isVisible()) {
-				$c = $v->getInfo('callback');
-				$res .= $this->{$c[1]}();
-			}
-		}
-		
-		return sprintf($this->getDefaultLine(),$res);
-	}
-	
-	/**
-	Returns caption of defined list
-	
-	@param	page			<b>string|int</b>	Current page
-	
-	@return	<b>string</b>		HTML caption tag
-	*/
-	private function getCaption($page)
-	{
-		$caption = $this->getDefaultCaption();
-		
-		if (!empty($caption)) {
-			$caption = sprintf(
-				'<caption>%s - %s</caption>',
-				$caption,sprintf(__('Page %s'),$page)
-			);
-		}
-		
-		return $caption;
-	}
-	
-	/**
-	Returns link to sort the defined column
-	
-	@param	c		<b>adminGenericColumn</b>	Current column
-	
-	@return	<b>string</b>		HTML link
-	*/
-	private function getSortLink($c)
-	{
-		$order = 'desc';
-		if (!is_null($this->sortby) && $this->sortby === $c->getInfo('id')) {
-			if (!is_null($this->order) && $this->order === $order) {
-				$order = 'asc';
-			}
-		}
-		
-		$args = $_GET;
-		$args['sortby'] = $c->getInfo('id');
-		$args['order'] = $order;
-		
-		array_walk($args,create_function('&$v,$k','$v=$k."=".$v;'));
-		
-		$url = $_SERVER['PHP_SELF'];
-		$url .= '?'.implode('&amp;',$args);
-		
-		return $url;
-	}
-}
-
-/**
-@ingroup DC_CORE
-@nosubgrouping
-@brief abstract posts list class.
-
-Handle posts list on admin side
-*/
-class adminPostList extends adminItemsList
-{
-	public function setColumns()
-	{
-		$this->addColumn('title','post_title',__('Title'),array('adminPostList','getTitle'),array('class' => array('maximal')),true,true,false);
-		$this->addColumn('date','post_dt',__('Date'),array('adminPostList','getDate'));
-		$this->addColumn('datetime','post_dt',__('Date and time'),array('adminPostList','getDateTime'));
-		$this->addColumn('category','cat_title',__('Category'),array('adminPostList','getCategory'));
-		$this->addColumn('author','user_id',__('Author'),array('adminPostList','getAuthor'));
-		$this->addColumn('comments','nb_comment',__('Comments'),array('adminPostList','getComments'));
-		$this->addColumn('trackbacks','nb_trackback',__('Trackbacks'),array('adminPostList','getTrackbacks'));
-		$this->addColumn('status','post_status',__('Status'),array('adminPostList','getStatus'));
-		$this->default_sortby = 'datetime';
-		$this->default_order = 'desc';
-
-	}
-	
-	protected function getDefaultCaption()
-	{
-		return __('Entries list');
-	}
-	
-	protected function getDefaultLine()
-	{
-		return
-		'<tr class="line'.($this->rs->post_status != 1 ? ' offline' : '').'"'.
-		' id="p'.$this->rs->post_id.'">%s</tr>';
-	}
-	
-	protected function getTitle()
-	{
-		return
-		'<th scope="row" class="maximal">'.
-		form::checkbox(array('entries[]'),$this->rs->post_id,'','','',!$this->rs->isEditable()).'&nbsp;'.
-		'<a href="'.$this->core->getPostAdminURL($this->rs->post_type,$this->rs->post_id).'">'.
-		html::escapeHTML($this->rs->post_title).'</a></th>';
-	}
-	
-	protected function getDate()
-	{
-		return '<td class="nowrap">'.dt::dt2str(__('%Y-%m-%d'),$this->rs->post_dt).'</td>';
-	}
-	
-	protected function getDateTime()
-	{
-		return '<td class="nowrap">'.dt::dt2str(__('%Y-%m-%d %H:%M'),$this->rs->post_dt).'</td>';
-	}
-	
-	protected function getCategory()
-	{
-		if ($this->core->auth->check('categories',$this->core->blog->id)) {
-			$cat_link = '<a href="category.php?id=%s">%s</a>';
-		} else {
-			$cat_link = '%2$s';
-		}
-		
-		if ($this->rs->cat_title) {
-			$cat_title = sprintf($cat_link,$this->rs->cat_id,
-			html::escapeHTML($this->rs->cat_title));
-		} else {
-			$cat_title = __('None');
-		}
-		
-		return '<td class="nowrap">'.$cat_title.'</td>';
-	}
-	
-	protected function getAuthor()
-	{
-		return '<td class="nowrap">'.$this->rs->user_id.'</td>';
-	}
-	
-	protected function getComments()
-	{
-		return '<td class="nowrap">'.$this->rs->nb_comment.'</td>';
-	}
-	
-	protected function getTrackbacks()
-	{
-		return '<td class="nowrap">'.$this->rs->nb_trackback.'</td>';
-	}
-	
-	protected function getStatus()
-	{
-		$img = '<img alt="%1$s" title="%1$s" src="images/%2$s" />';
-		switch ($this->rs->post_status) {
-			case 1:
-				$img_status = sprintf($img,__('published'),'check-on.png');
-				break;
-			case 0:
-				$img_status = sprintf($img,__('unpublished'),'check-off.png');
-				break;
-			case -1:
-				$img_status = sprintf($img,__('scheduled'),'scheduled.png');
-				break;
-			case -2:
-				$img_status = sprintf($img,__('pending'),'check-wrn.png');
-				break;
-		}
-		
-		$protected = '';
-		if ($this->rs->post_password) {
-			$protected = sprintf($img,__('protected'),'locker.png');
-		}
-		
-		$selected = '';
-		if ($this->rs->post_selected) {
-			$selected = sprintf($img,__('selected'),'selected.png');
-		}
-		
-		$attach = '';
-		$nb_media = $this->rs->countMedia();
-		if ($nb_media > 0) {
-			$attach_str = $nb_media == 1 ? __('%d attachment') : __('%d attachments');
-			$attach = sprintf($img,sprintf($attach_str,$nb_media),'attach.png');
-		}
-		
-		return '<td class="nowrap status">'.$img_status.' '.$selected.' '.$protected.' '.$attach.'</td>';
-	}
-}
-
-/**
-@ingroup DC_CORE
-@nosubgrouping
-@brief abstract mini posts list class.
-
-Handle mini posts list on admin side (used for link popup)
-*/
-class adminPostMiniList extends adminPostList
-{
-	public function setColumns()
-	{
-		$this->addColumn('title','post_title',__('Title'),array('adminPostMiniList','getTitle'),array('class' => array('maximal')),true,true,false);
-		$this->addColumn('date','post_dt',__('Date'),array('adminPostList','getDate'));
-		$this->addColumn('author','user_id',__('Author'),array('adminPostList','getAuthor'));
-		$this->addColumn('status','post_status',__('Status'),array('adminPostList','getStatus'));
-	}
-	
-	protected function getTitle() 
-	{
-		return
-		'<th scope="row" class="maximal">'.
-		form::checkbox(array('entries[]'),$this->rs->post_id,'','','',!$this->rs->isEditable()).'&nbsp;'.
-		'<a href="'.$this->core->getPostAdminURL($this->rs->post_type,$this->rs->post_id).'" '.
-		'title="'.html::escapeHTML($this->rs->getURL()).'">'.
-		html::escapeHTML($this->rs->post_title).'</a></td>';
-	}
-}
-
-/**
-@ingroup DC_CORE
-@nosubgrouping
-@brief abstract comments list class.
-
-Handle comments list on admin side
-*/
-class adminCommentList extends adminItemsList
-{
-	public function setColumns()
-	{
-		$this->addColumn('title','post_title',__('Title'),array('adminCommentList','getTitle'),array('class' => array('maximal')),true,true,false);
-		$this->addColumn('date','comment_dt',__('Date'),array('adminCommentList','getDate'));
-		$this->addColumn('author','comment_author',__('Author'),array('adminCommentList','getAuthor'));
-		$this->addColumn('type','comment_trackback',__('Type'),array('adminCommentList','getType'));
-		$this->addColumn('status','comment_status',__('Status'),array('adminCommentList','getStatus'));
-		$this->addColumn('edit',null,'',array('adminCommentList','getEdit'),null,false,false,false);
-		$this->default_sortby = 'date';
-		$this->default_order = 'desc';
-	}
-	
-	protected function getDefaultCaption()
-	{
-		return __('Comments list');
-	}
-	
-	protected function getDefaultLine()
-	{
-		return
-		'<tr class="line'.($this->rs->comment_status != 1 ? ' offline' : '').'"'.
-		' id="c'.$this->rs->comment_id.'">%s</tr>';
-	}
-	
-	protected function getTitle()
-	{
-		$post_url = $this->core->getPostAdminURL($this->rs->post_type,$this->rs->post_id);
-		
-		return
-		'<th scope="row" class="maximal">'.
-		form::checkbox(array('comments[]'),$this->rs->comment_id,'','','',0).'&nbsp;'.
-		'<a href="'.$post_url.'">'.
-		html::escapeHTML($this->rs->post_title).'</a>'.
-		($this->rs->post_type != 'post' ? ' ('.html::escapeHTML($this->rs->post_type).')' : '').'</th>';
-	}
-	
-	protected function getDate()
-	{
-		return '<td class="nowrap">'.dt::dt2str(__('%Y-%m-%d %H:%M'),$this->rs->comment_dt).'</td>';
-	}
-	
-	protected function getAuthor()
-	{
-		global $author, $status, $sortby, $order, $nb_per_page;
-		
-		$author_url =
-		'comments.php?n='.$nb_per_page.
-		'&amp;status='.$status.
-		'&amp;sortby='.$sortby.
-		'&amp;order='.$order.
-		'&amp;author='.rawurlencode($this->rs->comment_author);
-		
-		$comment_author = html::escapeHTML($this->rs->comment_author);
-		if (mb_strlen($comment_author) > 20) {
-			$comment_author = mb_strcut($comment_author,0,17).'...';
-		}
-		
-		return '<td class="nowrap"><a href="'.$author_url.'">'.$comment_author.'</a></td>';
-	}
-	
-	protected function getType()
-	{
-		return '<td class="nowrap">'.($this->rs->comment_trackback ? __('trackback') : __('comment')).'</td>';
-	}
-	
-	protected function getStatus()
-	{
-		$img = '<img alt="%1$s" title="%1$s" src="images/%2$s" />';
-		switch ($this->rs->comment_status) {
-			case 1:
-				$img_status = sprintf($img,__('published'),'check-on.png');
-				break;
-			case 0:
-				$img_status = sprintf($img,__('unpublished'),'check-off.png');
-				break;
-			case -1:
-				$img_status = sprintf($img,__('pending'),'check-wrn.png');
-				break;
-			case -2:
-				$img_status = sprintf($img,__('junk'),'junk.png');
-				break;
-		}
-		
-		return '<td class="nowrap status">'.$img_status.'</td>';
-	}
-	
-	protected function getEdit()
-	{
-		$comment_url = 'comment.php?id='.$this->rs->comment_id;
-		
-		return
-		'<td class="nowrap status"><a href="'.$comment_url.'">'.
-		'<img src="images/edit-mini.png" alt="" title="'.__('Edit this comment').'" /></a></td>';
-	}
-}
-
-/**
-@ingroup DC_CORE
-@nosubgrouping
-@brief abstract users list class.
-
-Handle users list on admin side
-*/
-class adminUserList extends adminItemsList
-{
-	public function setColumns()
-	{
-		$this->addColumn('username','U.user_id',__('Username'),array('adminUserList','getUserName'),array('class' => array('maximal')),true,true,false);
-		$this->addColumn('firstname','user_firstname',__('First name'),array('adminUserList','getFirstName'),array('class' => array('nowrap')));
-		$this->addColumn('lastname','user_name',__('Last name'),array('adminUserList','getLastName'),array('class' => array('nowrap')));
-		$this->addColumn('displayname','user_displayname',__('Display name'),array('adminUserList','getDisplayName'),array('class' => array('nowrap')));
-		$this->addColumn('entries','nb_post',__('Entries'),array('adminUserList','getEntries'),array('class' => array('nowrap')));
-		$this->default_sortby='lastname';
-		$this->default_order='asc';
-	}
-	
-	protected function getDefaultCaption()
-	{
-		return __('Users list');
-	}
-	
-	protected function getUserName()
-	{
-		$img = '<img alt="%1$s" title="%1$s" src="images/%2$s" />';
-		$img_status = '';
-		
-		$p = $this->core->getUserPermissions($this->rs->user_id);
-		
-		if (isset($p[$this->core->blog->id]['p']['admin'])) {
-			$img_status = sprintf($img,__('admin'),'admin.png');
-		}
-		if ($this->rs->user_super) {
-			$img_status = sprintf($img,__('superadmin'),'superadmin.png');
-		}
-		
-		return
-		'<th scope="row" class="maximal">'.form::hidden(array('nb_post[]'),(integer) $this->rs->nb_post).
-		form::checkbox(array('user_id[]'),$this->rs->user_id).'&nbsp;'.
-		'<a href="user.php?id='.$this->rs->user_id.'">'.
-		$this->rs->user_id.'</a>&nbsp;'.$img_status.'</th>';
-	}
-	
-	protected function getFirstName()
-	{
-		return '<td class="nowrap">'.$this->rs->user_firstname.'</td>';
-	}
-	
-	protected function getLastName()
-	{
-		return '<td class="nowrap">'.$this->rs->user_name.'</td>';
-	}
-	
-	protected function getDisplayName()
-	{
-		return '<td class="nowrap">'.$this->rs->user_displayname.'</td>';
-	}
-	
-	protected function getEntries()
-	{
-		return
-		'<td class="nowrap"><a href="posts.php?user_id='.$this->rs->user_id.'">'.
-		$this->rs->nb_post.'</a></td>';
-	}
-}
-
-/**
-@ingroup DC_CORE
-@nosubgrouping
-@brief abstract blogs list class.
-
-Handle blogs list on admin side
-*/
-class adminBlogList extends adminItemsList
-{
-	public function setColumns()
-	{
-		$this->addColumn('blogname','UPPER(blog_name)',__('Blog name'),array('adminBlogList','getBlogName'),array('class' => array('maximal')),true,true,false);
-		$this->addColumn('lastupdate','blog_upddt',__('Last update'),array('adminBlogList','getLastUpdate'),array('class' => array('nowrap')));
-		$this->addColumn('entries',null,__('Entries'),array('adminBlogList','getEntries'),array('class' => array('nowrap')),false);
-		$this->addColumn('blogid','B.blog_id',__('Blog ID'),array('adminBlogList','getBlogId'),array('class' => array('nowrap')));
-		$this->addColumn('action',null,'',array('adminBlogList','getAction'),array('class' => array('nowrap')),false);
-		$this->addColumn('status','blog_status',__('status'),array('adminBlogList','getStatus'),array('class' => array('nowrap')));
-		$this->default_sortby='lastupdate';
-		$this->default_order='desc';
-	}
-	
-	protected function getDefaultCaption()
-	{
-		return __('Blogs list');
-	}
-	
-	protected function getBlogName()
-	{
-		return
-		'<th scope="row" class="maximal"><a href="index.php?switchblog='.$this->rs->blog_id.'" '.
-		'title="'.sprintf(__('Switch to blog %s'),$this->rs->blog_id).'">'.
-		html::escapeHTML($this->rs->blog_name).'</a></th>';
-	}
-	
-	protected function getLastUpdate()
-	{
-		$offset = dt::getTimeOffset($this->core->auth->getInfo('user_tz'));
-		$blog_upddt = dt::str(__('%Y-%m-%d %H:%M'),strtotime($this->rs->blog_upddt) + $offset);
-	
-		return '<td class="nowrap">'.$blog_upddt.'</td>';
-	}
-	
-	protected function getEntries()
-	{
-		return '<td class="nowrap">'.$this->core->countBlogPosts($this->rs->blog_id).'</td>';
-	}
-	
-	protected function getBlogId()
-	{
-		return '<td class="nowrap">'.html::escapeHTML($this->rs->blog_id).'</td>';
-	}
-	
-	protected function getAction()
-	{
-		$edit_link = '';
-		$blog_id = html::escapeHTML($this->rs->blog_id);
-	
-		if ($GLOBALS['core']->auth->isSuperAdmin()) {
-			$edit_link = 
-			'<a href="blog.php?id='.$blog_id.'" '.
-			'title="'.sprintf(__('Edit blog %s'),$blog_id).'">'.
-			__('edit').'</a>';
-		}
-		
-		return '<td class="nowrap">'.$edit_link.'</td>';
-	}
-	
-	protected function getStatus()
-	{
-		$img_status = $this->rs->blog_status == 1 ? 'check-on' : 'check-off';
-		$txt_status = $GLOBALS['core']->getBlogStatus($this->rs->blog_status);
-		$img_status = sprintf('<img src="images/%1$s.png" alt="%2$s" title="%2$s" />',$img_status,$txt_status);
-		
-		return '<td class="status">'.$img_status.'</td>';
-	}
-}
-
-/**
-@ingroup DC_CORE
-@nosubgrouping
-@brief abstract blogs permissions list class.
-
-Handle blogs permissions list on admin side
-*/
-class adminBlogPermissionsList extends adminBlogList
-{
-	public function setColumns()
-	{
-		$this->addColumn('blogid','B.blog_id',__('Blog ID'),array('adminBlogPermissionsList','getBlogId'),array('class' => array('nowrap')),false,true,false);
-		$this->addColumn('blogname','UPPER(blog_name)',__('Blog name'),array('adminBlogPermissionsList','getBlogName'),array('class' => array('maximal')),false);
-		$this->addColumn('entries',null,__('Entries'),array('adminBlogList','getEntries'),array('class' => array('nowrap')),false);
-		$this->addColumn('status','blog_status',__('status'),array('adminBlogList','getStatus'),array('class' => array('nowrap')),false);
-	}
-	
-	protected function getBlogId()
-	{
-		return
-		'<th scope="row" class="nowrap">'.
-		form::checkbox(array('blog_id[]'),$this->rs->blog_id,'','','',false,'title="'.__('select').' '.$this->rs->blog_id.'"').
-		$this->rs->blog_id.'</th>';
-	}
-	
-	protected function getBlogName()
-	{
-		return '<td class="maximal">'.html::escapeHTML($this->rs->blog_name).'</td>';
-	}
-}
-
-?>
Index: inc/admin/lib.dc.page.php
===================================================================
--- inc/admin/lib.dc.page.php	(revision 782)
+++ inc/admin/lib.dc.page.php	(revision 812)
@@ -124,5 +124,5 @@
 		
 		'<div id="header">'.
-		'<ul id="prelude"><li><a href="#content">Aller au contenu</a></li><li><a href="#main-menu">Aller au menu</a></li></ul>'."\n".
+		'<ul id="prelude"><li><a href="#content">'.__('Go to the content').'</a></li><li><a href="#main-menu">'.__('Go to the menu').'</a></li></ul>'."\n".
 		'<div id="top"><h1><a href="index.php">'.DC_VENDOR_NAME.'</a></h1></div>'."\n";	
 		
@@ -515,11 +515,4 @@
 	}
 	
-	public static function jqueryUI()
-	{
-		return
-		'<link rel="stylesheet" type="text/css" href="style/jquery-ui-1.8.16.custom.css" />'."\n".
-		self::jsLoad('js/jquery/jquery-ui-1.8.16.custom.min.js');
-	}
-
 	public static function jsColorPicker()
 	{
Index: inc/admin/lib.pager.php
===================================================================
--- inc/admin/lib.pager.php	(revision 782)
+++ inc/admin/lib.pager.php	(revision 860)
@@ -12,12 +12,4 @@
 if (!defined('DC_RC_PATH')) { return; }
 
-/**
-@ingroup DC_CORE
-@nosubgrouping
-@brief Dotclear generic list class.
-@deprecated Please use class adminItemslist to create admin lists
-
-Dotclear generic list handles every admin list.
-*/
 class adminGenericList
 {
@@ -26,17 +18,6 @@
 	protected $rs_count;
 	
-	/**
-	@deprecated Please use class adminItemslist to create admin lists
-	
-	@param	core		<b>dcCore</b>		dcCore object
-	@param	rs		<b>recordSet</b>	Items recordSet to display
-	@param	rs_count	<b>int</b>		Total items number
-	*/
 	public function __construct($core,$rs,$rs_count)
 	{
-		// For backward compatibility only: the developer tried to create
-		// a list with the old constructor.
-		ob_start($this->raiseDeprecated(get_class($this)));
-		
 		$this->core =& $core;
 		$this->rs =& $rs;
@@ -45,23 +26,395 @@
 		$this->html_next = __('next&#187;');
 	}
-	
-	/**
-	Raises a E_USER_NOTICE error for deprecated classes. 
-	This allows the developer to know he's been using deprecated classes.
-	
-	@param	name	<b>string</b>	Name of the deprecated classes that was called.
-	*/
-	private function raiseDeprecated($name)
-	{
-		if (DC_DEBUG) {
-			$trace = debug_backtrace();
-			array_shift($trace);
-			$grand = array_shift($trace);
-			$msg = 'Deprecated class called. (';
-			$msg .= $name.' was called from '.$grand['file'].' ['.$grand['line'].'])';
-			trigger_error($msg, E_USER_NOTICE);
-		}
-	}
 }
 
+class adminPostList extends adminGenericList
+{
+	public function display($page,$nb_per_page,$enclose_block='')
+	{
+		if ($this->rs->isEmpty())
+		{
+			echo '<p><strong>'.__('No entry').'</strong></p>';
+		}
+		else
+		{
+			$pager = new pager($page,$this->rs_count,$nb_per_page,10);
+			$pager->html_prev = $this->html_prev;
+			$pager->html_next = $this->html_next;
+			$pager->var_page = 'page';
+			
+			$html_block =
+			'<table class="clear"><tr>'.
+			'<th colspan="2">'.__('Title').'</th>'.
+			'<th>'.__('Date').'</th>'.
+			'<th>'.__('Category').'</th>'.
+			'<th>'.__('Author').'</th>'.
+			'<th>'.__('Comments').'</th>'.
+			'<th>'.__('Trackbacks').'</th>'.
+			'<th>'.__('Status').'</th>'.
+			'</tr>%s</table>';
+			
+			if ($enclose_block) {
+				$html_block = sprintf($enclose_block,$html_block);
+			}
+			
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			
+			$blocks = explode('%s',$html_block);
+			
+			echo $blocks[0];
+			
+			while ($this->rs->fetch())
+			{
+				echo $this->postLine();
+			}
+			
+			echo $blocks[1];
+			
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+		}
+	}
+	
+	private function postLine()
+	{
+		if ($this->core->auth->check('categories',$this->core->blog->id)) {
+			$cat_link = '<a href="category.php?id=%s">%s</a>';
+		} else {
+			$cat_link = '%2$s';
+		}
+		
+		if ($this->rs->cat_title) {
+			$cat_title = sprintf($cat_link,$this->rs->cat_id,
+			html::escapeHTML($this->rs->cat_title));
+		} else {
+			$cat_title = __('None');
+		}
+		
+		$img = '<img alt="%1$s" title="%1$s" src="images/%2$s" />';
+		switch ($this->rs->post_status) {
+			case 1:
+				$img_status = sprintf($img,__('published'),'check-on.png');
+				break;
+			case 0:
+				$img_status = sprintf($img,__('unpublished'),'check-off.png');
+				break;
+			case -1:
+				$img_status = sprintf($img,__('scheduled'),'scheduled.png');
+				break;
+			case -2:
+				$img_status = sprintf($img,__('pending'),'check-wrn.png');
+				break;
+		}
+		
+		$protected = '';
+		if ($this->rs->post_password) {
+			$protected = sprintf($img,__('protected'),'locker.png');
+		}
+		
+		$selected = '';
+		if ($this->rs->post_selected) {
+			$selected = sprintf($img,__('selected'),'selected.png');
+		}
+		
+		$attach = '';
+		$nb_media = $this->rs->countMedia();
+		if ($nb_media > 0) {
+			$attach_str = $nb_media == 1 ? __('%d attachment') : __('%d attachments');
+			$attach = sprintf($img,sprintf($attach_str,$nb_media),'attach.png');
+		}
+		
+		$res = '<tr class="line'.($this->rs->post_status != 1 ? ' offline' : '').'"'.
+		' id="p'.$this->rs->post_id.'">';
+		
+		$res .=
+		'<td class="nowrap">'.
+		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>'.
+		'<td class="nowrap">'.dt::dt2str(__('%Y-%m-%d %H:%M'),$this->rs->post_dt).'</td>'.
+		'<td class="nowrap">'.$cat_title.'</td>'.
+		'<td class="nowrap">'.$this->rs->user_id.'</td>'.
+		'<td class="nowrap">'.$this->rs->nb_comment.'</td>'.
+		'<td class="nowrap">'.$this->rs->nb_trackback.'</td>'.
+		'<td class="nowrap status">'.$img_status.' '.$selected.' '.$protected.' '.$attach.'</td>'.
+		'</tr>';
+		
+		return $res;
+	}
+}
+
+class adminPostMiniList extends adminGenericList
+{
+	public function display($page,$nb_per_page,$enclose_block='')
+	{
+		if ($this->rs->isEmpty())
+		{
+			echo '<p><strong>'.__('No entry').'</strong></p>';
+		}
+		else
+		{
+			$pager = new pager($page,$this->rs_count,$nb_per_page,10);
+			$pager->html_prev = $this->html_prev;
+			$pager->html_next = $this->html_next;
+			$pager->var_page = 'page';
+			
+			$html_block =
+			'<table class="clear"><tr>'.
+			'<th>'.__('Title').'</th>'.
+			'<th>'.__('Date').'</th>'.
+			'<th>'.__('Author').'</th>'.
+			'<th>'.__('Status').'</th>'.
+			'</tr>%s</table>';
+			
+			if ($enclose_block) {
+				$html_block = sprintf($enclose_block,$html_block);
+			}
+			
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			
+			$blocks = explode('%s',$html_block);
+			
+			echo $blocks[0];
+			
+			while ($this->rs->fetch())
+			{
+				echo $this->postLine();
+			}
+			
+			echo $blocks[1];
+			
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+		}
+	}
+	
+	private function postLine()
+	{
+		$img = '<img alt="%1$s" title="%1$s" src="images/%2$s" />';
+		switch ($this->rs->post_status) {
+			case 1:
+				$img_status = sprintf($img,__('published'),'check-on.png');
+				break;
+			case 0:
+				$img_status = sprintf($img,__('unpublished'),'check-off.png');
+				break;
+			case -1:
+				$img_status = sprintf($img,__('scheduled'),'scheduled.png');
+				break;
+			case -2:
+				$img_status = sprintf($img,__('pending'),'check-wrn.png');
+				break;
+		}
+		
+		$protected = '';
+		if ($this->rs->post_password) {
+			$protected = sprintf($img,__('protected'),'locker.png');
+		}
+		
+		$selected = '';
+		if ($this->rs->post_selected) {
+			$selected = sprintf($img,__('selected'),'selected.png');
+		}
+		
+		$attach = '';
+		$nb_media = $this->rs->countMedia();
+		if ($nb_media > 0) {
+			$attach_str = $nb_media == 1 ? __('%d attachment') : __('%d attachments');
+			$attach = sprintf($img,sprintf($attach_str,$nb_media),'attach.png');
+		}
+		
+		$res = '<tr class="line'.($this->rs->post_status != 1 ? ' offline' : '').'"'.
+		' id="p'.$this->rs->post_id.'">';
+		
+		$res .=
+		'<td class="maximal"><a href="'.$this->core->getPostAdminURL($this->rs->post_type,$this->rs->post_id).'" '.
+		'title="'.html::escapeHTML($this->rs->getURL()).'">'.
+		html::escapeHTML($this->rs->post_title).'</a></td>'.
+		'<td class="nowrap">'.dt::dt2str(__('%Y-%m-%d %H:%M'),$this->rs->post_dt).'</td>'.
+		'<td class="nowrap">'.$this->rs->user_id.'</td>'.
+		'<td class="nowrap status">'.$img_status.' '.$selected.' '.$protected.' '.$attach.'</td>'.
+		'</tr>';
+		
+		return $res;
+	}
+}
+
+class adminCommentList extends adminGenericList
+{
+	public function display($page,$nb_per_page,$enclose_block='')
+	{
+		if ($this->rs->isEmpty())
+		{
+			echo '<p><strong>'.__('No comment').'</strong></p>';
+		}
+		else
+		{
+			$pager = new pager($page,$this->rs_count,$nb_per_page,10);
+			$pager->html_prev = $this->html_prev;
+			$pager->html_next = $this->html_next;
+			$pager->var_page = 'page';
+			
+			$html_block =
+			'<table><tr>'.
+			'<th colspan="2">'.__('Title').'</th>'.
+			'<th>'.__('Date').'</th>'.
+			'<th>'.__('Author').'</th>'.
+			'<th>'.__('Type').'</th>'.
+			'<th>'.__('Status').'</th>'.
+			'<th>&nbsp;</th>'.
+			'</tr>%s</table>';
+			
+			if ($enclose_block) {
+				$html_block = sprintf($enclose_block,$html_block);
+			}
+			
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			
+			$blocks = explode('%s',$html_block);
+			
+			echo $blocks[0];
+			
+			while ($this->rs->fetch())
+			{
+				echo $this->commentLine();
+			}
+			
+			echo $blocks[1];
+			
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+		}
+	}
+	
+	private function commentLine()
+	{
+		global $author, $status, $sortby, $order, $nb_per_page;
+		
+		$author_url =
+		'comments.php?n='.$nb_per_page.
+		'&amp;status='.$status.
+		'&amp;sortby='.$sortby.
+		'&amp;order='.$order.
+		'&amp;author='.rawurlencode($this->rs->comment_author);
+		
+		$post_url = $this->core->getPostAdminURL($this->rs->post_type,$this->rs->post_id);
+		
+		$comment_url = 'comment.php?id='.$this->rs->comment_id;
+		
+		$comment_dt =
+		dt::dt2str($this->core->blog->settings->system->date_format.' - '.
+		$this->core->blog->settings->system->time_format,$this->rs->comment_dt);
+		
+		$img = '<img alt="%1$s" title="%1$s" src="images/%2$s" />';
+		switch ($this->rs->comment_status) {
+			case 1:
+				$img_status = sprintf($img,__('published'),'check-on.png');
+				break;
+			case 0:
+				$img_status = sprintf($img,__('unpublished'),'check-off.png');
+				break;
+			case -1:
+				$img_status = sprintf($img,__('pending'),'check-wrn.png');
+				break;
+			case -2:
+				$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).'...';
+		}
+		
+		$res = '<tr class="line'.($this->rs->comment_status != 1 ? ' offline' : '').'"'.
+		' id="c'.$this->rs->comment_id.'">';
+		
+		$res .=
+		'<td class="nowrap">'.
+		form::checkbox(array('comments[]'),$this->rs->comment_id,'','','',0).'</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="'.$author_url.'">'.$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').'" /></a></td>';
+		
+		$res .= '</tr>';
+		
+		return $res;
+	}
+}
+
+class adminUserList extends adminGenericList
+{
+	public function display($page,$nb_per_page,$enclose_block='')
+	{
+		if ($this->rs->isEmpty())
+		{
+			echo '<p><strong>'.__('No user').'</strong></p>';
+		}
+		else
+		{
+			$pager = new pager($page,$this->rs_count,$nb_per_page,10);
+			$pager->html_prev = $this->html_prev;
+			$pager->html_next = $this->html_next;
+			$pager->var_page = 'page';
+			
+			$html_block =
+			'<table class="clear"><tr>'.
+			'<th colspan="2">'.__('Username').'</th>'.
+			'<th>'.__('First Name').'</th>'.
+			'<th>'.__('Last Name').'</th>'.
+			'<th>'.__('Display name').'</th>'.
+			'<th class="nowrap">'.__('Entries').'</th>'.
+			'</tr>%s</table>';
+			
+			if ($enclose_block) {
+				$html_block = sprintf($enclose_block,$html_block);
+			}
+			
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			
+			$blocks = explode('%s',$html_block);
+			
+			echo $blocks[0];
+			
+			while ($this->rs->fetch())
+			{
+				echo $this->userLine();
+			}
+			
+			echo $blocks[1];
+			
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+		}
+	}
+	
+	private function userLine()
+	{
+		$img = '<img alt="%1$s" title="%1$s" src="images/%2$s" />';
+		$img_status = '';
+		
+		$p = $this->core->getUserPermissions($this->rs->user_id);
+		
+		if (isset($p[$this->core->blog->id]['p']['admin'])) {
+			$img_status = sprintf($img,__('admin'),'admin.png');
+		}
+		if ($this->rs->user_super) {
+			$img_status = sprintf($img,__('superadmin'),'superadmin.png');
+		}
+		return
+		'<tr class="line">'.
+		'<td class="nowrap">'.form::hidden(array('nb_post[]'),(integer) $this->rs->nb_post).
+		form::checkbox(array('users[]'),$this->rs->user_id).'</td>'.
+		'<td class="maximal"><a href="user.php?id='.$this->rs->user_id.'">'.
+		$this->rs->user_id.'</a>&nbsp;'.$img_status.'</td>'.
+		'<td class="nowrap">'.$this->rs->user_firstname.'</td>'.
+		'<td class="nowrap">'.$this->rs->user_name.'</td>'.
+		'<td class="nowrap">'.$this->rs->user_displayname.'</td>'.
+		'<td class="nowrap"><a href="posts.php?user_id='.$this->rs->user_id.'">'.
+		$this->rs->nb_post.'</a></td>'.
+		'</tr>';
+	}
+}
 ?>
Index: inc/admin/prepend.php
===================================================================
--- inc/admin/prepend.php	(revision 692)
+++ inc/admin/prepend.php	(revision 859)
@@ -37,5 +37,5 @@
 function dc_prepare_url($url) {
 
-	$u = str_replace(array('?','&amp;'),array('\?','&'),$url);
+	$u = str_replace(array('?','&amp;','/'),array('\?','&','\\/'),$url);
 	return (!strpos($u,'\?') ? 
 		'/'.$u.'$/' :
@@ -215,4 +215,7 @@
 	}
 	unset($hfiles,$locales_root);
+
+	$core->auth->user_prefs->addWorkspace('interface');
+	$user_ui_nofavmenu = $core->auth->user_prefs->interface->nofavmenu;
 
 	# Standard favorites
@@ -266,5 +269,6 @@
 	# Menus creation
 	$_menu['Dashboard'] = new dcMenu('dashboard-menu',null);
-	$_menu['Favorites'] = new dcMenu('favorites-menu','My favorites');
+	if (!$user_ui_nofavmenu)
+		$_menu['Favorites'] = new dcMenu('favorites-menu','My favorites');
 	$_menu['Blog'] = new dcMenu('blog-menu','Blog');
 	$_menu['System'] = new dcMenu('system-menu','System');
@@ -282,5 +286,6 @@
 	$_menu['Blog']->title = __('Blog');
 	$_menu['Plugins']->title = __('Plugins');
-	$_menu['Favorites']->title = __('My favorites');
+	if (!$user_ui_nofavmenu)
+		$_menu['Favorites']->title = __('My favorites');
 
 /*	
@@ -333,36 +338,38 @@
 		$core->auth->check('usage,contentadmin',$core->blog->id) && $core->auth->blog_count > 1);
 
-	// Set favorites menu
-	$ws = $core->auth->user_prefs->addWorkspace('favorites');
-	$count = 0;
-	foreach ($ws->dumpPrefs() as $k => $v) {
-		// User favorites only
-		if (!$v['global']) {
-			$fav = unserialize($v['value']);
-			if (dc_valid_fav($fav['url'])) {
-				$count++;
-				$_menu['Favorites']->addItem(__($fav['title']),$fav['url'],$fav['small-icon'],
-					preg_match(dc_prepare_url($fav['url']),$_SERVER['REQUEST_URI']),
-					(($fav['permissions'] == '*') || $core->auth->check($fav['permissions'],$core->blog->id)),$fav['id'],$fav['class']);
-			}
-		}
-	}	
-	if (!$count) {
-		// Global favorites if any
+	if (!$user_ui_nofavmenu) {
+		// Set favorites menu
+		$ws = $core->auth->user_prefs->addWorkspace('favorites');
+		$count = 0;
 		foreach ($ws->dumpPrefs() as $k => $v) {
-			$fav = unserialize($v['value']);
-			if (dc_valid_fav($fav['url'])) {
-				$count++;
-				$_menu['Favorites']->addItem(__($fav['title']),$fav['url'],$fav['small-icon'],
-					preg_match(dc_prepare_url($fav['url']),$_SERVER['REQUEST_URI']),
-					(($fav['permissions'] == '*') || $core->auth->check($fav['permissions'],$core->blog->id)),$fav['id'],$fav['class']);
-			}
-		}
-	}
-	if (!$count) {
-		// No user or global favorites, add "new entry" fav
-		$_menu['Favorites']->addItem(__('New entry'),'post.php','images/menu/edit.png',
-			preg_match('/post.php$/',$_SERVER['REQUEST_URI']),
-			$core->auth->check('usage,contentadmin',$core->blog->id),'menu-new-post',null);
+			// User favorites only
+			if (!$v['global']) {
+				$fav = unserialize($v['value']);
+				if (dc_valid_fav($fav['url'])) {
+					$count++;
+					$_menu['Favorites']->addItem(__($fav['title']),$fav['url'],$fav['small-icon'],
+						preg_match(dc_prepare_url($fav['url']),$_SERVER['REQUEST_URI']),
+						(($fav['permissions'] == '*') || $core->auth->check($fav['permissions'],$core->blog->id)),$fav['id'],$fav['class']);
+				}
+			}
+		}	
+		if (!$count) {
+			// Global favorites if any
+			foreach ($ws->dumpPrefs() as $k => $v) {
+				$fav = unserialize($v['value']);
+				if (dc_valid_fav($fav['url'])) {
+					$count++;
+					$_menu['Favorites']->addItem(__($fav['title']),$fav['url'],$fav['small-icon'],
+						preg_match(dc_prepare_url($fav['url']),$_SERVER['REQUEST_URI']),
+						(($fav['permissions'] == '*') || $core->auth->check($fav['permissions'],$core->blog->id)),$fav['id'],$fav['class']);
+				}
+			}
+		}
+		if (!$count) {
+			// No user or global favorites, add "new entry" fav
+			$_menu['Favorites']->addItem(__('New entry'),'post.php','images/menu/edit.png',
+				preg_match('/post.php$/',$_SERVER['REQUEST_URI']),
+				$core->auth->check('usage,contentadmin',$core->blog->id),'menu-new-post',null);
+		}
 	}
 }
Index: inc/core/class.dc.blog.php
===================================================================
--- inc/core/class.dc.blog.php	(revision 782)
+++ inc/core/class.dc.blog.php	(revision 836)
@@ -106,22 +106,4 @@
 	}
 	
-	/**
-	Returns sql statement for a given parameter. 
-	Computes in() or not_in lists in parameter
-
-	@param	params	<b>array</b> query parameters
-	@param	param_name	<b>array</b> parameter to check
-	@param	sql column	<b>array</b> sql column matching parameter name
-	
-	@return	<b>string</b> the generated SQL statement
-	*/
-	protected function getInParamStr($params, $param_name, $sql_column) {
-		$not='';
-		if (isset($params[$param_name.'_not'])) {
-			$not = "NOT ";
-		}
-		return $sql_column.' '.$not.$this->con->in($params[$param_name]).' ';
-	}
-	
 	/// @name Common public methods
 	//@{
@@ -335,5 +317,5 @@
 		
 		# We need to apply filter after counting
-		if (!empty($params['cat_id']))
+		if (isset($params['cat_id']) && $params['cat_id'] !== '')
 		{
 			$found = false;
@@ -350,5 +332,6 @@
 		}
 		
-		if (!empty($params['cat_url']) && empty($params['cat_id']))
+		if (isset($params['cat_url']) && ($params['cat_url'] !== '') 
+			&& !isset($params['cat_id']))
 		{
 			$found = false;
@@ -597,5 +580,5 @@
 	{
 		if (!$this->core->auth->check('categories',$this->id)) {
-			throw new Exception(__('You are not allowed to delete categories'));
+			throw new Exception(__('You are not allowed to reset categories order'));
 		}
 		
@@ -687,4 +670,8 @@
 	public function getPosts($params=array(),$count_only=false)
 	{
+		# --BEHAVIOR-- coreBlogBeforeGetPosts
+		$params = new ArrayObject($params);
+		$this->core->callBehavior('coreBlogBeforeGetPosts',$params);
+
 		if ($count_only)
 		{
@@ -759,5 +746,5 @@
 		}
 		
-		if (!empty($params['post_id'])) {
+		if (isset($params['post_id']) && $params['post_id'] !== '') {
 			if (is_array($params['post_id'])) {
 				array_walk($params['post_id'],create_function('&$v,$k','if($v!==null){$v=(integer)$v;}'));
@@ -768,13 +755,13 @@
 		}
 		
-		if (!empty($params['post_url'])) {
+		if (isset($params['post_url']) && $params['post_url'] !== '') {
 			$strReq .= "AND post_url = '".$this->con->escape($params['post_url'])."' ";
 		}
 		
 		if (!empty($params['user_id'])) {
-			$strReq .= 'AND '.$this->getInParamStr($params,'user_id','U.user_id');
-		}
-		
-		if (!empty($params['cat_id']))
+			$strReq .= "AND U.user_id = '".$this->con->escape($params['user_id'])."' ";
+		}
+		
+		if (isset($params['cat_id']) && $params['cat_id'] !== '')
 		{
 			if (!is_array($params['cat_id'])) {
@@ -786,5 +773,5 @@
 			$strReq .= 'AND '.$this->getPostsCategoryFilter($params['cat_id'],'cat_id').' ';
 		}
-		elseif (!empty($params['cat_url']))
+		elseif (isset($params['cat_url']) && $params['cat_url'] !== '')
 		{
 			if (!is_array($params['cat_url'])) {
@@ -799,5 +786,5 @@
 		/* Other filters */
 		if (isset($params['post_status'])) {
-			$strReq .= 'AND '.$this->getInParamStr($params,'post_status','post_status');
+			$strReq .= 'AND post_status = '.(integer) $params['post_status'].' ';
 		}
 		
@@ -822,5 +809,5 @@
 		
 		if (!empty($params['post_lang'])) {
-			$strReq .= 'AND '.$this->getInParamStr($params,'post_lang','P.post_lang');
+			$strReq .= "AND P.post_lang = '".$this->con->escape($params['post_lang'])."' ";
 		}
 		
@@ -1023,8 +1010,8 @@
 		$cat_field = $catReq = $limit = '';
 		
-		if (!empty($params['cat_id'])) {
+		if (isset($params['cat_id']) && $params['cat_id'] !== '') {
 			$catReq = 'AND P.cat_id = '.(integer) $params['cat_id'].' ';
 			$cat_field = ', C.cat_url ';
-		} elseif (!empty($params['cat_url'])) {
+		} elseif (isset($params['cat_url']) && $params['cat_url'] !== '') {
 			$catReq = "AND C.cat_url = '".$this->con->escape($params['cat_url'])."' ";
 			$cat_field = ', C.cat_url ';
@@ -1406,6 +1393,6 @@
 		
 		$now = dt::toUTC(time());
-		$to_change = array();
-		
+		$to_change = new ArrayObject();
+
 		if ($rs->isEmpty()) {
 			return;
@@ -1425,16 +1412,21 @@
 			}
 		}
-		
-		if (!empty($to_change))
-		{
+		if (count($to_change))
+		{
+			# --BEHAVIOR-- coreBeforeScheduledEntriesPublish
+			$this->core->callBehavior('coreBeforeScheduledEntriesPublish',$this,$to_change);
+
 			$strReq =
 			'UPDATE '.$this->prefix.'post SET '.
 			'post_status = 1 '.
 			"WHERE blog_id = '".$this->con->escape($this->id)."' ".
-			'AND post_id '.$this->con->in($to_change).' ';
-			
+			'AND post_id '.$this->con->in((array)$to_change).' ';
 			$this->con->execute($strReq);
 			$this->triggerBlog();
-		}
+
+			# --BEHAVIOR-- coreAfterScheduledEntriesPublish
+			$this->core->callBehavior('coreAfterScheduledEntriesPublish',$this,$to_change);
+		}
+		
 	}
 	
@@ -1465,4 +1457,5 @@
 	{
 		$field = $field == 'cat_id' ? 'cat_id' : 'cat_url';
+		
 		$sub = array();
 		$not = array();
@@ -1478,11 +1471,7 @@
 			if (isset($args['not'])) { $not[$id] = 1; }
 			if (isset($args['sub'])) { $sub[$id] = 1; }
-			$nullExcluded = false;
 			if ($field == 'cat_id') {
 				if (preg_match('/^null$/i',$id)) {
 					$queries[$id] = 'P.cat_id IS NULL';
-					if (isset($not[$id]) && ($not[$id] == 1)) {
-						$nullExcluded = true;
-					}
 				}
 				else {
@@ -1526,12 +1515,9 @@
 		
 		if ($sql[1]) {
-			if ($nullExcluded) {
-				$sql[1] = 'NOT('.$sql[1].')';
-			} else {
-				$sql[1] = '(P.cat_id IS NULL OR NOT('.$sql[1].'))';
-			}
+			$sql[1] = '(P.cat_id IS NULL OR NOT('.$sql[1].'))';
 		} else {
 			unset($sql[1]);
 		}
+		
 		return implode(' AND ',$sql);
 	}
@@ -1819,20 +1805,21 @@
 		}
 		
-		if (!empty($params['post_id'])) {
+		if (isset($params['post_id']) && $params['post_id'] !== '') {
 			$strReq .= 'AND P.post_id = '.(integer) $params['post_id'].' ';
 		}
 		
-		if (!empty($params['cat_id'])) {
+		if (isset($params['cat_id']) && $params['cat_id'] !== '') {
 			$strReq .= 'AND P.cat_id = '.(integer) $params['cat_id'].' ';
 		}
 		
-		if (!empty($params['comment_id'])) {
+		if (isset($params['comment_id']) && $params['comment_id'] !== '') {
 			$strReq .= 'AND comment_id = '.(integer) $params['comment_id'].' ';
 		}
 		
 		if (isset($params['comment_status'])) {
-			$strReq .= 'AND '.$this->getInParamStr($params,'comment_status','comment_status');
-		} 
-		elseif (!empty($params['comment_status_not'])) // older method, deprecated
+			$strReq .= 'AND comment_status = '.(integer) $params['comment_status'].' ';
+		}
+		
+		if (!empty($params['comment_status_not']))
 		{
 			$strReq .= 'AND comment_status <> '.(integer) $params['comment_status_not'].' ';
@@ -1850,7 +1837,4 @@
 			$q_author = $this->con->escape(str_replace('*','%',strtolower($params['q_author'])));
 			$strReq .= "AND LOWER(comment_author) LIKE '".$q_author."' ";
-		}
-		if (isset($params['comment_author'])) {
-			$strReq .= "AND comment_author ".$this->con->in($params['comment_author']).' ';
 		}
 		
Index: inc/dbschema/upgrade-cli.php
===================================================================
--- inc/dbschema/upgrade-cli.php	(revision 270)
+++ inc/dbschema/upgrade-cli.php	(revision 838)
@@ -36,5 +36,5 @@
 	$core->con->begin();
 	try {
-		$changes = dotclearUpgrade(&$core);
+		$changes = dotclearUpgrade($core);
 	} catch (Exception $e) {
 		$core->con->rollback();
Index: inc/prepend.php
===================================================================
--- inc/prepend.php	(revision 782)
+++ inc/prepend.php	(revision 801)
@@ -55,16 +55,8 @@
 $__autoload['dcPage']				= dirname(__FILE__).'/admin/lib.dc.page.php';
 $__autoload['adminGenericList']		= dirname(__FILE__).'/admin/lib.pager.php';
-$__autoload['adminItemsList']			= dirname(__FILE__).'/admin/class.dc.list.php';
-$__autoload['adminPostList']			= dirname(__FILE__).'/admin/class.dc.list.php';
-$__autoload['adminPostMiniList']		= dirname(__FILE__).'/admin/class.dc.list.php';
-$__autoload['adminCommentList']		= dirname(__FILE__).'/admin/class.dc.list.php';
-$__autoload['adminUserList']			= dirname(__FILE__).'/admin/class.dc.list.php';
-$__autoload['adminBlogList']			= dirname(__FILE__).'/admin/class.dc.list.php';
-$__autoload['adminBlogPermissionsList']	= dirname(__FILE__).'/admin/class.dc.list.php';
-$__autoload['dcFilterSet']			= dirname(__FILE__).'/admin/class.dc.filter.php';
-$__autoload['dcFilter']				= dirname(__FILE__).'/admin/class.dc.filter.php';
-$__autoload['textFilter']				= dirname(__FILE__).'/admin/class.dc.filter.php';
-$__autoload['comboFilter']				= dirname(__FILE__).'/admin/class.dc.filter.php';
-$__autoload['dcFilterExtraInterface']				= dirname(__FILE__).'/admin/class.dc.filter.php';
+$__autoload['adminPostList']			= dirname(__FILE__).'/admin/lib.pager.php';
+$__autoload['adminPostMiniList']		= dirname(__FILE__).'/admin/lib.pager.php';
+$__autoload['adminCommentList']		= dirname(__FILE__).'/admin/lib.pager.php';
+$__autoload['adminUserList']			= dirname(__FILE__).'/admin/lib.pager.php';
 
 $__autoload['dcTemplate']			= dirname(__FILE__).'/public/class.dc.template.php';
@@ -131,5 +123,5 @@
 # Constants
 define('DC_ROOT',path::real(dirname(__FILE__).'/..'));
-define('DC_VERSION','2.4.0');
+define('DC_VERSION','2.5-dev');
 define('DC_DIGESTS',dirname(__FILE__).'/digests');
 define('DC_L10N_ROOT',dirname(__FILE__).'/../locales');
Index: inc/public/class.dc.template.php
===================================================================
--- inc/public/class.dc.template.php	(revision 779)
+++ inc/public/class.dc.template.php	(revision 863)
@@ -572,5 +572,7 @@
 		$res = "<?php\n";
 		$res .= $p;
-		$res .= $this->core->callBehavior("templatePrepareParams","Archives", $attr,$content);
+		$res .= $this->core->callBehavior("templatePrepareParams", 
+			array("tag" => "Archives","method" => "blog::getDates"), 
+			$attr,$content);
 		$res .= '$_ctx->archives = $core->blog->getDates($params); unset($params);'."\n";
 		$res .= "?>\n";
@@ -680,5 +682,7 @@
 		$res = "<?php\n";
 		$res .= $p;
-		$res .= $this->core->callBehavior("templatePrepareParams","ArchiveNext", $attr, $content);
+		$res .= $this->core->callBehavior("templatePrepareParams",
+			array("tag" => "ArchiveNext","method" => "blog::getDates"), 
+			$attr, $content);
 		$res .= '$_ctx->archives = $core->blog->getDates($params); unset($params);'."\n";
 		$res .= "?>\n";
@@ -717,5 +721,7 @@
 		
 		$res = "<?php\n";
-		$res .= $this->core->callBehavior("templatePrepareParams","ArchivePrevious", $attr, $content);
+		$res .= $this->core->callBehavior("templatePrepareParams",
+			array("tag" => "ArchivePrevious","method" => "blog::getDates"), 
+			$attr, $content);
 		$res .= $p;
 		$res .= '$_ctx->archives = $core->blog->getDates($params); unset($params);'."\n";
@@ -940,5 +946,7 @@
 		$res = "<?php\n";
 		$res .= $p;
-		$res .= $this->core->callBehavior("templatePrepareParams","Categories", $attr, $content);
+		$res .= $this->core->callBehavior("templatePrepareParams", 
+			array("tag" => "Categories","method" => "blog::getCategories"), 
+			$attr,$content);
 		$res .= '$_ctx->categories = $core->blog->getCategories($params);'."\n";
 		$res .= "?>\n";
@@ -1210,5 +1218,7 @@
 		$res = "<?php\n";
 		$res .= $p;
-		$res .= $this->core->callBehavior("templatePrepareParams","Entries",$attr,$content);
+		$res .= $this->core->callBehavior("templatePrepareParams", 
+			array("tag" => "Entries","method" => "blog::getPosts"), 
+			$attr,$content);
 		$res .= '$_ctx->post_params = $params;'."\n";
 		$res .= '$_ctx->posts = $core->blog->getPosts($params); unset($params);'."\n";
@@ -1880,5 +1890,7 @@
 		$res = "<?php\n";
 		$res .= $p;
-		$res .= $this->core->callBehavior("templatePrepareParams","Languages",$attr,$content);
+		$res .= $this->core->callBehavior("templatePrepareParams", 
+			array("tag" => "Languages","method" => "blog::getLangs"), 
+			$attr,$content);
 		$res .= '$_ctx->langs = $core->blog->getLangs($params); unset($params);'."\n";
 		$res .= "?>\n";
@@ -1955,4 +1967,7 @@
 		$p = "<?php\n";
 		$p .= '$params = $_ctx->post_params;'."\n";
+		$p .= $this->core->callBehavior("templatePrepareParams", 
+			array("tag" => "Pagination","method" => "blog::getPosts"), 
+			$attr,$content);
 		$p .= '$_ctx->pagination = $core->blog->getPosts($params,true); unset($params);'."\n";
 		$p .= "?>\n";
@@ -1964,5 +1979,4 @@
 		return
 			$p.
-			$this->core->callBehavior("templatePrepareParams","Pagination",$attr,$content).
 			'<?php if ($_ctx->pagination->f(0) > $_ctx->posts->count()) : ?>'.
 			$content.
@@ -2104,5 +2118,7 @@
 		
 		$res = "<?php\n";
-		$res .= $this->core->callBehavior("templatePrepareParams","Comments",$attr,$content);
+		$res .= $this->core->callBehavior("templatePrepareParams", 
+			array("tag" => "Comments","method" => "blog::getComments"), 
+			$attr,$content);
 		$res .= $p;
 		$res .= '$_ctx->comments = $core->blog->getComments($params); unset($params);'."\n";
@@ -2704,5 +2720,7 @@
 		$res = "<?php\n";
 		$res .= $p;
-		$res .= $this->core->callBehavior("templatePrepareParams","Pings",$attr,$content);
+		$res .= $this->core->callBehavior("templatePrepareParams", 
+			array("tag" => "Pings","method" => "blog::getComments"), 
+			$attr,$content);
 		$res .= '$_ctx->pings = $core->blog->getComments($params); unset($params);'."\n";
 		$res .= "if (\$_ctx->posts !== null) { \$core->blog->withoutPassword(true);}\n";
@@ -2784,5 +2802,5 @@
 	current_mode		CDATA	#IMPLIED	-- tests if current URL mode is the one given in parameter
 	has_tpl			CDATA     #IMPLIED  -- tests if a named template exists
-	has_tag			CDATA     #IMPLIED  -- tests if a named template tag exists (see Tag plugin for code)
+	has_tag			CDATA     #IMPLIED  -- tests if a named template block or value exists
 	blog_id			CDATA     #IMPLIED  -- tests if current blog ID is the one given in parameter
 	comments_active	(0|1)	#IMPLIED	-- test if comments are enabled blog-wide 
@@ -2838,4 +2856,13 @@
 			}
 			$if[] = $sign."\$core->tpl->getFilePath('".addslashes($attr['has_tpl'])."') !== false";
+		}
+		
+		if (isset($attr['has_tag'])) {
+			$sign = 'true';
+			if (substr($attr['has_tag'],0,1) == '!') {
+				$sign = 'false';
+				$attr['has_tag'] = substr($attr['has_tag'],1);
+			}
+			$if[] =  "\$core->tpl->tagExists('".addslashes($attr['has_tag'])."') === ".$sign;
 		}
 		
Index: inc/public/lib.tpl.context.php
===================================================================
--- inc/public/lib.tpl.context.php	(revision 772)
+++ inc/public/lib.tpl.context.php	(revision 839)
@@ -363,5 +363,5 @@
 		if ($_ctx->posts)
 		{
-			$subject = $_ctx->posts->post_excerpt_xhtml.$_ctx->posts->post_content_xhtml.$_ctx->posts->cat_desc;
+			$subject = $_ctx->posts->post_excerpt_xhtml.$_ctx->posts->post_content_xhtml;
 			if (preg_match_all($pattern,$subject,$m) > 0)
 			{
Index: locales/_pot/main.pot
===================================================================
--- locales/_pot/main.pot	(revision 782)
+++ locales/_pot/main.pot	(revision 791)
@@ -8,5 +8,5 @@
 "Project-Id-Version: Dotclear 2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-13 15:13+0100\n"
+"POT-Creation-Date: 2012-02-06 06:58+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
@@ -90,5 +90,5 @@
 
 #: admin/auth.php:339 admin/comment.php:202 admin/install/index.php:326
-#: admin/post.php:550 admin/preferences.php:389 admin/user.php:229
+#: admin/post.php:549 admin/preferences.php:389 admin/user.php:229
 #: inc/admin/lib.dc.page.php:397
 msgid "Email:"
@@ -178,5 +178,5 @@
 #: admin/langs.php:249 admin/plugins.php:328 admin/plugins.php:330
 #: admin/plugins.php:342 admin/plugins.php:344 admin/popup_link.php:42
-#: admin/post.php:362 admin/post.php:371 admin/post.php:546 admin/post.php:558
+#: admin/post.php:362 admin/post.php:371 admin/post.php:545 admin/post.php:557
 #: admin/user.php:200 admin/user.php:206 admin/user.php:213 admin/user.php:280
 msgid "Required field"
@@ -378,5 +378,5 @@
 msgstr ""
 
-#: admin/blog_pref.php:338 admin/post.php:425
+#: admin/blog_pref.php:338 admin/post.php:424
 msgid "Accept comments"
 msgstr ""
@@ -399,5 +399,5 @@
 msgstr ""
 
-#: admin/blog_pref.php:357 admin/post.php:427
+#: admin/blog_pref.php:357 admin/post.php:426
 msgid "Accept trackbacks"
 msgstr ""
@@ -486,5 +486,5 @@
 #: admin/category.php:234 admin/category.php:248 admin/comment.php:224
 #: admin/index.php:325 admin/install/index.php:339 admin/media_item.php:501
-#: admin/permissions.php:149 admin/post.php:385 admin/post.php:565
+#: admin/permissions.php:149 admin/post.php:385 admin/post.php:564
 #: admin/posts_actions.php:235 admin/posts_actions.php:252
 #: admin/preferences.php:431 admin/preferences.php:514 admin/user.php:282
@@ -770,5 +770,5 @@
 
 #: admin/blogs.php:138 admin/comments.php:36 admin/permissions_blog.php:155
-#: admin/post.php:580 admin/posts.php:99 admin/posts.php:113
+#: admin/post.php:579 admin/posts.php:99 admin/posts.php:113
 #: inc/admin/lib.pager.php:53 inc/admin/lib.pager.php:165
 #: inc/admin/lib.pager.php:261
@@ -790,5 +790,5 @@
 msgstr ""
 
-#: admin/categories.php:24 inc/core/class.dc.xmlrpc.php:1126
+#: admin/categories.php:24 inc/core/class.dc.xmlrpc.php:1130
 msgid "This category does not exist."
 msgstr ""
@@ -869,5 +869,5 @@
 #: admin/categories.php:169 admin/comment.php:227 admin/comments.php:120
 #: admin/langs.php:197 admin/media.php:459 admin/plugins.php:257
-#: admin/plugins.php:300 admin/post.php:396 admin/post.php:489
+#: admin/plugins.php:300 admin/post.php:395 admin/post.php:488
 #: admin/posts.php:132 admin/search.php:107 admin/search.php:150
 #: admin/users.php:58
@@ -939,5 +939,5 @@
 msgstr ""
 
-#: admin/comment.php:93 admin/post.php:516 inc/admin/lib.pager.php:246
+#: admin/comment.php:93 admin/post.php:515 inc/admin/lib.pager.php:246
 msgid "No comment"
 msgstr ""
@@ -987,5 +987,5 @@
 msgstr ""
 
-#: admin/comment.php:207 admin/post.php:554 inc/admin/lib.dc.page.php:395
+#: admin/comment.php:207 admin/post.php:553 inc/admin/lib.dc.page.php:395
 msgid "Web site:"
 msgstr ""
@@ -995,5 +995,5 @@
 msgstr ""
 
-#: admin/comment.php:218 admin/post.php:559
+#: admin/comment.php:218 admin/post.php:558
 msgid "Comment:"
 msgstr ""
@@ -1007,5 +1007,5 @@
 msgstr ""
 
-#: admin/comments.php:33 admin/post.php:578 admin/posts.php:95
+#: admin/comments.php:33 admin/post.php:577 admin/posts.php:95
 #: inc/admin/lib.pager.php:48 inc/admin/lib.pager.php:163
 #: inc/admin/lib.pager.php:258
@@ -1017,5 +1017,5 @@
 msgstr ""
 
-#: admin/comments.php:35 admin/post.php:577 admin/posts.php:98
+#: admin/comments.php:35 admin/post.php:576 admin/posts.php:98
 #: inc/admin/lib.pager.php:50 inc/admin/lib.pager.php:164
 #: inc/admin/lib.pager.php:259
@@ -1023,20 +1023,20 @@
 msgstr ""
 
-#: admin/comments.php:113 admin/post.php:481 admin/search.php:96
+#: admin/comments.php:113 admin/post.php:480 admin/search.php:96
 #: admin/search.php:143
 msgid "publish"
 msgstr ""
 
-#: admin/comments.php:114 admin/post.php:482 admin/search.php:97
+#: admin/comments.php:114 admin/post.php:481 admin/search.php:97
 #: admin/search.php:144
 msgid "unpublish"
 msgstr ""
 
-#: admin/comments.php:115 admin/post.php:483 admin/search.php:99
+#: admin/comments.php:115 admin/post.php:482 admin/search.php:99
 #: admin/search.php:145
 msgid "mark as pending"
 msgstr ""
 
-#: admin/comments.php:116 admin/post.php:484 admin/search.php:146
+#: admin/comments.php:116 admin/post.php:483 admin/search.php:146
 msgid "mark as junk"
 msgstr ""
@@ -1071,5 +1071,5 @@
 msgstr ""
 
-#: admin/comments.php:219 admin/post.php:524 admin/search.php:167
+#: admin/comments.php:219 admin/post.php:523 admin/search.php:167
 msgid "Selected comments action:"
 msgstr ""
@@ -1079,5 +1079,5 @@
 msgstr ""
 
-#: admin/comments.php:222 admin/post.php:528 admin/posts.php:288
+#: admin/comments.php:222 admin/post.php:527 admin/posts.php:288
 #: admin/search.php:129 admin/search.php:169 admin/users.php:166
 #: inc/admin/lib.dc.page.php:79
@@ -1085,5 +1085,5 @@
 msgstr ""
 
-#: admin/comments_actions.php:101 admin/post.php:498 admin/post.php:512
+#: admin/comments_actions.php:101 admin/post.php:497 admin/post.php:511
 #: inc/admin/lib.pager.php:51 inc/admin/prepend.php:308
 msgid "Comments"
@@ -1159,5 +1159,5 @@
 msgstr ""
 
-#: admin/index.php:253 admin/update.php:172
+#: admin/index.php:253 admin/update.php:175
 msgid "information about this version"
 msgstr ""
@@ -1175,5 +1175,5 @@
 msgstr ""
 
-#: admin/index.php:323 admin/post.php:406 admin/posts.php:248
+#: admin/index.php:323 admin/post.php:405 admin/posts.php:248
 #: admin/posts_actions.php:227
 msgid "Category:"
@@ -2158,70 +2158,70 @@
 msgstr ""
 
-#: admin/post.php:393
+#: admin/post.php:392
 msgid "Preview"
 msgstr ""
 
-#: admin/post.php:410
+#: admin/post.php:409
 msgid "Entry status:"
 msgstr ""
 
-#: admin/post.php:414
+#: admin/post.php:413
 msgid "Published on:"
 msgstr ""
 
-#: admin/post.php:418
+#: admin/post.php:417
 msgid "Text formating:"
 msgstr ""
 
-#: admin/post.php:422
+#: admin/post.php:421
 msgid "Convert to XHTML"
 msgstr ""
 
-#: admin/post.php:429
+#: admin/post.php:428
 msgid "Selected entry"
 msgstr ""
 
-#: admin/post.php:431
+#: admin/post.php:430
 msgid "Entry lang:"
 msgstr ""
 
-#: admin/post.php:435
+#: admin/post.php:434
 msgid "Entry password:"
 msgstr ""
 
-#: admin/post.php:440
+#: admin/post.php:439
 msgid "Basename:"
 msgstr ""
 
-#: admin/post.php:444
+#: admin/post.php:443
 msgid "Warning: If you set the URL manually, it may conflict with another entry."
 msgstr ""
 
-#: admin/post.php:462 admin/trackbacks.php:81 admin/trackbacks.php:119
+#: admin/post.php:461 admin/trackbacks.php:81 admin/trackbacks.php:119
 #: admin/trackbacks.php:130
 msgid "Ping blogs"
 msgstr ""
 
-#: admin/post.php:504 inc/admin/lib.pager.php:52
+#: admin/post.php:503 inc/admin/lib.pager.php:52
 msgid "Trackbacks"
 msgstr ""
 
-#: admin/post.php:509
+#: admin/post.php:508
 msgid "No trackback"
 msgstr ""
 
-#: admin/post.php:541 admin/post.php:542
+#: admin/post.php:540 admin/post.php:541
 msgid "Add a comment"
 msgstr ""
 
-#: admin/post.php:546
+#: admin/post.php:545
 msgid "Name:"
 msgstr ""
 
-#: admin/post.php:579
+#: admin/post.php:578
 msgid "IP address"
 msgstr ""
 
-#: admin/post.php:591 inc/admin/lib.pager.php:95 inc/admin/lib.pager.php:194
+#: admin/post.php:590 inc/admin/lib.pager.php:95 inc/admin/lib.pager.php:194
 #: inc/admin/lib.pager.php:308 inc/core/class.dc.blog.php:96
 #: inc/core/class.dc.blog.php:101
@@ -2229,5 +2229,5 @@
 msgstr ""
 
-#: admin/post.php:594 inc/admin/lib.pager.php:98 inc/admin/lib.pager.php:197
+#: admin/post.php:593 inc/admin/lib.pager.php:98 inc/admin/lib.pager.php:197
 #: inc/admin/lib.pager.php:311 inc/core/class.dc.blog.php:95
 #: inc/core/class.dc.blog.php:100
@@ -2235,5 +2235,5 @@
 msgstr ""
 
-#: admin/post.php:597 inc/admin/lib.pager.php:104 inc/admin/lib.pager.php:203
+#: admin/post.php:596 inc/admin/lib.pager.php:104 inc/admin/lib.pager.php:203
 #: inc/admin/lib.pager.php:314 inc/core/class.dc.blog.php:93
 #: inc/core/class.dc.blog.php:99
@@ -2241,18 +2241,18 @@
 msgstr ""
 
-#: admin/post.php:600 inc/admin/lib.pager.php:317
+#: admin/post.php:599 inc/admin/lib.pager.php:317
 #: inc/core/class.dc.blog.php:98
 msgid "junk"
 msgstr ""
 
-#: admin/post.php:609
+#: admin/post.php:608
 msgid "select this comment"
 msgstr ""
 
-#: admin/post.php:609
+#: admin/post.php:608
 msgid "select this trackback"
 msgstr ""
 
-#: admin/post.php:615 inc/admin/lib.pager.php:340
+#: admin/post.php:614 inc/admin/lib.pager.php:340
 msgid "Edit this comment"
 msgstr ""
@@ -2609,5 +2609,5 @@
 msgstr ""
 
-#: admin/update.php:22 admin/update.php:156 admin/update.php:159
+#: admin/update.php:22 admin/update.php:159 admin/update.php:162
 msgid "Dotclear update"
 msgstr ""
@@ -2623,64 +2623,64 @@
 msgstr ""
 
-#: admin/update.php:125
+#: admin/update.php:126
 msgid "The following files of your Dotclear installation have been modified so we won't try to update your installation. Please try to <a href=\"http://dotclear.org/download\">update manually</a>."
 msgstr ""
 
-#: admin/update.php:132
+#: admin/update.php:133
 #, php-format
 msgid "The following files of your Dotclear installation are not readable. Please fix this or try to make a backup file named %s manually."
 msgstr ""
 
-#: admin/update.php:139
+#: admin/update.php:140
 msgid "The following files of your Dotclear installation cannot be written. Please fix this or try to <a href=\"http://dotclear.org/download\">update manually</a>."
 msgstr ""
 
-#: admin/update.php:166
+#: admin/update.php:169
 msgid "No newer Dotclear version available."
 msgstr ""
 
-#: admin/update.php:171
+#: admin/update.php:174
 #, php-format
 msgid "Dotclear %s is available."
 msgstr ""
 
-#: admin/update.php:175
+#: admin/update.php:178
 msgid "To upgrade your Dotclear installation simply click on the following button. A backup file of your current installation will be created in your root directory."
 msgstr ""
 
-#: admin/update.php:179
+#: admin/update.php:182
 msgid "Update Dotclear"
 msgstr ""
 
-#: admin/update.php:186
+#: admin/update.php:189
 msgid "Update backup files"
 msgstr ""
 
-#: admin/update.php:187
+#: admin/update.php:190
 msgid "The following files are backups of previously updates. You can revert your previous installation or delete theses files."
 msgstr ""
 
-#: admin/update.php:199
+#: admin/update.php:202
 msgid "Please note that reverting your Dotclear version may have some unwanted side-effects. Consider reverting only if you experience strong issues with this new version."
 msgstr ""
 
-#: admin/update.php:201
+#: admin/update.php:204
 #, php-format
 msgid "You should not revert to version prior to last one (%s)."
 msgstr ""
 
-#: admin/update.php:203
+#: admin/update.php:206
 msgid "Delete selected file"
 msgstr ""
 
-#: admin/update.php:204
+#: admin/update.php:207
 msgid "Revert to selected file"
 msgstr ""
 
-#: admin/update.php:213
+#: admin/update.php:216
 msgid "Congratulations, you're one click away from the end of the update."
 msgstr ""
 
-#: admin/update.php:214
+#: admin/update.php:217
 msgid "Finish the update."
 msgstr ""
@@ -3270,88 +3270,88 @@
 msgstr ""
 
-#: inc/core/class.dc.blog.php:1103
+#: inc/core/class.dc.blog.php:1104
 msgid "You are not allowed to create an entry"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:1161
+#: inc/core/class.dc.blog.php:1162
 msgid "You are not allowed to update entries"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:1167 inc/core/class.dc.blog.php:1348
+#: inc/core/class.dc.blog.php:1168 inc/core/class.dc.blog.php:1349
 msgid "No such entry ID"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:1196
+#: inc/core/class.dc.blog.php:1197
 msgid "You are not allowed to edit this entry"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:1220 inc/core/class.dc.blog.php:1238
+#: inc/core/class.dc.blog.php:1221 inc/core/class.dc.blog.php:1239
 #: inc/core/class.dc.meta.php:168 inc/core/class.dc.meta.php:182
 msgid "You are not allowed to change this entry status"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:1257 inc/core/class.dc.blog.php:1300
-#: inc/core/class.dc.blog.php:1318
+#: inc/core/class.dc.blog.php:1258 inc/core/class.dc.blog.php:1301
+#: inc/core/class.dc.blog.php:1319
 msgid "You are not allowed to change this entry category"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:1275
+#: inc/core/class.dc.blog.php:1276
 msgid "You are not allowed to mark this entry as selected"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:1342
+#: inc/core/class.dc.blog.php:1343
 msgid "You are not allowed to delete entries"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:1363
+#: inc/core/class.dc.blog.php:1364
 msgid "You are not allowed to delete this entry"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:1517
+#: inc/core/class.dc.blog.php:1518
 msgid "No entry title"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:1521 inc/core/class.dc.blog.php:1537
+#: inc/core/class.dc.blog.php:1522 inc/core/class.dc.blog.php:1538
 msgid "No entry content"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:1699
+#: inc/core/class.dc.blog.php:1700
 msgid "Empty entry URL"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:1935
+#: inc/core/class.dc.blog.php:1945
 msgid "You are not allowed to update comments"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:1941 inc/core/class.dc.blog.php:1947
-#: inc/core/class.dc.blog.php:2009
+#: inc/core/class.dc.blog.php:1951 inc/core/class.dc.blog.php:1957
+#: inc/core/class.dc.blog.php:2019
 msgid "No such comment ID"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:1954
+#: inc/core/class.dc.blog.php:1964
 msgid "You are not allowed to update this comment"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:1987
+#: inc/core/class.dc.blog.php:1997
 msgid "You are not allowed to change this comment's status"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:2003
+#: inc/core/class.dc.blog.php:2013
 msgid "You are not allowed to delete comments"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:2025
+#: inc/core/class.dc.blog.php:2035
 msgid "You are not allowed to delete this comment"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:2040
+#: inc/core/class.dc.blog.php:2050
 msgid "You must provide a comment"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:2044
+#: inc/core/class.dc.blog.php:2054
 msgid "You must provide an author name"
 msgstr ""
 
-#: inc/core/class.dc.blog.php:2048
+#: inc/core/class.dc.blog.php:2058
 msgid "Email address is not valid."
 msgstr ""
Index: locales/_pot/plugins.pot
===================================================================
--- locales/_pot/plugins.pot	(revision 782)
+++ locales/_pot/plugins.pot	(revision 791)
@@ -8,5 +8,5 @@
 "Project-Id-Version: Dotclear 2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-13 15:13+0100\n"
+"POT-Creation-Date: 2012-02-06 06:58+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
@@ -43,5 +43,5 @@
 #: plugins/aboutConfig/index.php:141 plugins/antispam/index.php:176
 #: plugins/blogroll/index.php:247 plugins/blogroll/index.php:372
-#: plugins/simpleMenu/index.php:159 plugins/simpleMenu/index.php:527
+#: plugins/simpleMenu/index.php:159 plugins/simpleMenu/index.php:524
 #: plugins/userPref/index.php:137
 msgid "Description"
@@ -189,5 +189,5 @@
 
 #: plugins/antispam/filters/class.dc.filter.words.php:122
-msgid "Add a word"
+msgid "Add a word "
 msgstr ""
 
@@ -335,13 +335,13 @@
 msgstr ""
 
-#: plugins/antispam/index.php:217
+#: plugins/antispam/index.php:223
 msgid "Syndication"
 msgstr ""
 
-#: plugins/antispam/index.php:219
+#: plugins/antispam/index.php:225
 msgid "Junk comments RSS feed"
 msgstr ""
 
-#: plugins/antispam/index.php:220
+#: plugins/antispam/index.php:226
 msgid "Published comments RSS feed"
 msgstr ""
@@ -567,5 +567,5 @@
 msgstr ""
 
-#: plugins/blogroll/index.php:248 plugins/simpleMenu/index.php:528
+#: plugins/blogroll/index.php:248 plugins/simpleMenu/index.php:525
 msgid "URL"
 msgstr ""
@@ -1557,5 +1557,5 @@
 msgstr ""
 
-#: plugins/simpleMenu/index.php:158 plugins/simpleMenu/index.php:526
+#: plugins/simpleMenu/index.php:158 plugins/simpleMenu/index.php:523
 msgid "Label"
 msgstr ""
@@ -1604,89 +1604,89 @@
 msgstr ""
 
+#: plugins/simpleMenu/index.php:414
+msgid "Menu item has been successfully added."
+msgstr ""
+
 #: plugins/simpleMenu/index.php:417
-msgid "Menu item has been successfully added."
-msgstr ""
-
-#: plugins/simpleMenu/index.php:420
 msgid "Menu items have been successfully removed."
 msgstr ""
 
-#: plugins/simpleMenu/index.php:423 plugins/simpleMenu/index.php:426
+#: plugins/simpleMenu/index.php:420 plugins/simpleMenu/index.php:423
 msgid "Menu items have been successfully updated."
 msgstr ""
 
-#: plugins/simpleMenu/index.php:432
+#: plugins/simpleMenu/index.php:429
 msgid "Add item"
 msgstr ""
 
-#: plugins/simpleMenu/index.php:438
+#: plugins/simpleMenu/index.php:435
 msgid "Select type"
 msgstr ""
 
-#: plugins/simpleMenu/index.php:439
+#: plugins/simpleMenu/index.php:436
 msgid "Type of item menu:"
 msgstr ""
 
-#: plugins/simpleMenu/index.php:440 plugins/simpleMenu/index.php:477
+#: plugins/simpleMenu/index.php:437 plugins/simpleMenu/index.php:474
 msgid "Continue..."
 msgstr ""
 
-#: plugins/simpleMenu/index.php:451
+#: plugins/simpleMenu/index.php:448
 msgid "Select language:"
 msgstr ""
 
-#: plugins/simpleMenu/index.php:455
+#: plugins/simpleMenu/index.php:452
 msgid "Select category:"
 msgstr ""
 
-#: plugins/simpleMenu/index.php:459
+#: plugins/simpleMenu/index.php:456
 msgid "Select month (if necessary):"
 msgstr ""
 
-#: plugins/simpleMenu/index.php:463
+#: plugins/simpleMenu/index.php:460
 msgid "Select page:"
 msgstr ""
 
-#: plugins/simpleMenu/index.php:467
+#: plugins/simpleMenu/index.php:464
 msgid "Select tag (if necessary):"
 msgstr ""
 
-#: plugins/simpleMenu/index.php:487
+#: plugins/simpleMenu/index.php:484
 msgid "Label of item menu:"
 msgstr ""
 
-#: plugins/simpleMenu/index.php:489
+#: plugins/simpleMenu/index.php:486
 msgid "Description of item menu:"
 msgstr ""
 
-#: plugins/simpleMenu/index.php:491
+#: plugins/simpleMenu/index.php:488
 msgid "URL of item menu:"
 msgstr ""
 
-#: plugins/simpleMenu/index.php:493
+#: plugins/simpleMenu/index.php:490
 msgid "Add this item"
 msgstr ""
 
-#: plugins/simpleMenu/index.php:507
+#: plugins/simpleMenu/index.php:504
 msgid "Add an item"
 msgstr ""
 
-#: plugins/simpleMenu/index.php:518
+#: plugins/simpleMenu/index.php:515
 msgid "Menu items list"
 msgstr ""
 
+#: plugins/simpleMenu/index.php:552
+msgid "Update menu"
+msgstr ""
+
+#: plugins/simpleMenu/index.php:554
+msgid "Delete selected menu items"
+msgstr ""
+
 #: plugins/simpleMenu/index.php:555
-msgid "Update menu"
-msgstr ""
-
-#: plugins/simpleMenu/index.php:557
-msgid "Delete selected menu items"
-msgstr ""
-
-#: plugins/simpleMenu/index.php:558
 msgid "Are you sure you want to remove selected menu items?"
 msgstr ""
 
-#: plugins/simpleMenu/index.php:565
+#: plugins/simpleMenu/index.php:562
 msgid "Currently no menu items"
 msgstr ""
@@ -2014,19 +2014,19 @@
 msgstr ""
 
+#: plugins/widgets/_widgets_functions.php:194
+#, php-format
+msgid "This blog's entries %s feed"
+msgstr ""
+
 #: plugins/widgets/_widgets_functions.php:195
 #, php-format
-msgid "This blog's entries %s feed"
-msgstr ""
-
-#: plugins/widgets/_widgets_functions.php:196
-#, php-format
 msgid "This blog's comments %s feed"
 msgstr ""
 
-#: plugins/widgets/_widgets_functions.php:207
+#: plugins/widgets/_widgets_functions.php:206
 msgid "Entries feed"
 msgstr ""
 
-#: plugins/widgets/_widgets_functions.php:215
+#: plugins/widgets/_widgets_functions.php:214
 msgid "Comments feed"
 msgstr ""
Index: locales/fr/date.po
===================================================================
--- locales/fr/date.po	(revision 438)
+++ locales/fr/date.po	(revision 0)
@@ -10,8 +10,8 @@
 "Last-Translator: Olivier Meunier <olivier@dotclear.net>\n"
 "Language-Team: \n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
 "X-Poedit-Language: French\n"
 
Index: locales/fr/main.po
===================================================================
--- locales/fr/main.po	(revision 782)
+++ locales/fr/main.po	(revision 887)
@@ -2,17 +2,22 @@
 # Copyright (C) 2006.
 # Olivier Meunier <olivier@dotclear.net>, 2006.
+#
+# Translators:
+# Franck  <carnet.franck.paul@gmail.com>, 2011.
+# Stéphane Aulery <lkppo@free.fr>, 2012.
+# xave <xave@dotclear.net>, 2012.
 msgid ""
 msgstr ""
-"Project-Id-Version: Dotclear 2\n"
+"Project-Id-Version: Dotclear\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-06 18:11+0100\n"
-"PO-Revision-Date: 2011-10-13 19:26+0100\n"
+"POT-Creation-Date: 2012-08-13 09:59+0200\n"
+"PO-Revision-Date: 2012-08-13 07:13+0000\n"
 "Last-Translator: xave <xave@dotclear.net>\n"
-"Language-Team: \n"
-"Language: \n"
+"Language-Team: French (http://www.transifex.com/projects/p/dotclear/language/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: French\n"
+"Language: fr\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
 
 msgid "Dotclear has been upgraded."
@@ -33,5 +38,5 @@
 #, php-format
 msgid "The e-mail was sent successfully to %s."
-msgstr "Le message a été envoyé avec succès à %s."
+msgstr "Message envoyé avec succès à %s."
 
 msgid "Your new password"
@@ -90,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."
@@ -132,5 +137,5 @@
 
 msgid "Please note that changing your blog ID may require changes in your public index.php file."
-msgstr "Veuillez noter que changer l'identifiant de votre blog peut nécessiter des modifications dans votre fichier index.php public."
+msgstr "Veuillez noter que changer l'identifiant de votre blog peut nécessiter des modifications de votre fichier index.php public."
 
 msgid "Blog name:"
@@ -211,5 +216,5 @@
 
 msgid "That blog Id is already in use."
-msgstr "Cet identifiant est déjà utilisé"
+msgstr "Cet identifiant est déjà utilisé."
 
 msgid "Invalid language code"
@@ -220,8 +225,8 @@
 
 msgid "Warning: except for special configurations, it is generally advised to have a trailing \"/\" in your blog URL in PATH_INFO mode."
-msgstr "Attention: sauf cas particulier, il est généralement conseillé de terminer l'URL de votre blog par \"/\" en mode PATH_INFO."
+msgstr "Attention : sauf cas particulier, il est généralement conseillé de terminer l'URL de votre blog par \"/\" en mode PATH_INFO."
 
 msgid "Warning: except for special configurations, it is generally advised to have a trailing \"?\" in your blog URL in QUERY_STRING mode."
-msgstr "Attention: sauf cas particulier, il est généralement conseillé de terminer l'URL de votre blog par \"?\" en mode QUERY_STRING."
+msgstr "Attention: sauf cas particulier, il est généralement conseillé de terminer l'URL de votre blog par \\\"?\\\" en mode QUERY_STRING."
 
 msgid "Blog has been successfully created."
@@ -247,5 +252,5 @@
 
 msgid "Blog editor name:"
-msgstr "Nom de l'éditeur du blog :"
+msgstr "Nom de l'auteur du blog :"
 
 msgid "Default language:"
@@ -309,5 +314,5 @@
 
 msgid "Display smilies on entries and comments"
-msgstr "Afficher des émoticones dans les billets et commentaires"
+msgstr "Afficher des émoticônes dans les billets et commentaires"
 
 #, php-format
@@ -386,10 +391,10 @@
 msgstr "Aucun utilisateur"
 
+msgid "Super administrator"
+msgstr "Super administrateur"
+
 msgid "Change permissions"
 msgstr "Changer les permissions"
 
-msgid "Super administrator"
-msgstr "Super administrateur"
-
 msgid "You can't remove default theme."
 msgstr "Vous ne pouvez pas supprimer le thème par défaut."
@@ -402,5 +407,5 @@
 
 msgid "An error occurred while downloading the file."
-msgstr "Une erreur est survenue lors du téléchargement du fichier."
+msgstr "Une erreur est survenue pendant le téléchargement du fichier."
 
 #, php-format
@@ -433,15 +438,15 @@
 
 msgid "Theme has been successfully installed."
-msgstr "Le thème a été installé avec succès."
+msgstr "Thème installé avec succès."
 
 msgid "Theme has been successfully upgraded"
-msgstr "Le thème a été mis à jour avec succès."
+msgstr "Thème mis à jour avec succès."
 
 msgid "Theme has been successfully deleted."
-msgstr "Le thème a été supprimé avec succès."
+msgstr "Thème supprimé avec succès."
 
 #, php-format
 msgid "You can find additional themes for your blog on %s."
-msgstr "Vous pouvez trouver de nouveaux thèmes pour votre blog sur %s."
+msgstr "Vous pouvez trouver d'autres thèmes pour votre blog sur %s."
 
 msgid "To install or upgrade a theme you generally just need to upload it in \"Install or upgrade a theme\" section."
@@ -489,5 +494,5 @@
 
 msgid "Theme configuration"
-msgstr "Configurer le thème"
+msgstr "Configuration du thème"
 
 msgid "back"
@@ -693,5 +698,5 @@
 "Bonjour,\n"
 "\n"
-"Vous avez déposé un commentaire sur&nbsp;\n"
+"Vous avez déposé un commentaire sur :\n"
 "%s\n"
 "\n"
@@ -738,11 +743,11 @@
 
 msgid "unpublish"
-msgstr "hors ligne"
+msgstr "mettre hors ligne"
 
 msgid "mark as pending"
-msgstr "en attente"
+msgstr "mettre en attente"
 
 msgid "mark as junk"
-msgstr "indésirable"
+msgstr "mettre en indésirable"
 
 msgid "Type:"
@@ -851,5 +856,5 @@
 #, php-format
 msgid "PHP version is %s (5.0 or earlier needed)."
-msgstr "La version de PHP est %s (5.0 ou plus récent nécessaire.)"
+msgstr "La version de PHP est %s (5.0 ou plus récente nécessaire.)"
 
 msgid "Multibyte string module (mbstring) is not available."
@@ -869,5 +874,5 @@
 
 msgid "PCRE engine does not support UTF-8 strings."
-msgstr "Le moteur d'expressions rationnelles PCRE ne gère pas les chaînes UTF-8."
+msgstr "Le moteur d'expressions rationnelles PCRE n'accepte pas les chaînes UTF-8."
 
 msgid "SPL module is not available."
@@ -876,5 +881,5 @@
 #, php-format
 msgid "MySQL version is %s (4.1 or earlier needed)."
-msgstr "La version de MySQL est %s (4.1 ou plus récent nécessaire)."
+msgstr "La version de MySQL est %s (4.1 ou plus récente nécessaire)."
 
 msgid "MySQL InnoDB engine is not available."
@@ -883,5 +888,5 @@
 #, php-format
 msgid "PostgreSQL version is %s (8.0 or earlier needed)."
-msgstr "La version de PostgreSQL est %s (8.0 ou plus récent nécessaire)."
+msgstr "La version de PostgreSQL est %s (8.0 ou plus récente nécessaire)."
 
 msgid "Please set a master key (DC_MASTER_KEY) in configuration file."
@@ -927,5 +932,7 @@
 "<p>This is a comment.</p>\n"
 "<p>To delete it, log in and view your blog's comments. Then you might remove or edit it.</p>"
-msgstr "<p>Ceci est un commentaire</p><p>Pour le supprimer, connectez-vous et affichez les commentaires de votre blog. Vous pourrez alors le supprimer ou le modifier.</p>"
+msgstr ""
+"<p>Ceci est un commentaire</p>\n"
+"<p>Pour le supprimer, connectez-vous et affichez les commentaires de votre blog. Vous pourrez alors le supprimer ou le modifier.</p>"
 
 msgid "Dotclear Install"
@@ -964,5 +971,5 @@
 
 msgid "All done!"
-msgstr "Terminé !"
+msgstr "C'est terminé !"
 
 msgid "Dotclear has been successfully installed. Here is some useful information you should keep."
@@ -985,9 +992,17 @@
 
 msgid "Installation can not be completed"
-msgstr "L'installation ne peut pas être menée à bien"
+msgstr "L'installation ne peut pas être terminée"
 
 msgid "For the said reasons, Dotclear can not be installed. Please refer to <a href=\"http://dotclear.org/documentation/2.0/admin/install\">the documentation</a> to learn how to correct the problem."
 msgstr "Pour les raisons ci-dessus, Dotclear ne peut pas être installé. Référez-vous à <a href=\"http://fr.dotclear.org/documentation/2.0/admin/install\">la documentation</a> pour savoir comment corriger le problème."
 
+#, fuzzy, php-format
+msgid "Path <strong>%s</strong> is not writable."
+msgstr "Le répertoire de cache %s n'est pas accessible en écriture."
+
+#, fuzzy
+msgid "Dotclear installation wizard could not create configuration file for you. You must change folder right or create the <strong>config.php</strong> file manually, please refer to <a href=\"http://dotclear.org/documentation/2.0/admin/install\">the documentation</a> to learn how to do this."
+msgstr "Pour les raisons ci-dessus, Dotclear ne peut pas être installé. Référez-vous à <a href=\"http://fr.dotclear.org/documentation/2.0/admin/install\">la documentation</a> pour savoir comment corriger le problème."
+
 #, php-format
 msgid "File %s does not exist."
@@ -1017,5 +1032,5 @@
 
 msgid "Please provide the following information needed to create your configuration file."
-msgstr "Merci de fournir les informations suivantes :"
+msgstr "Merci de fournir les informations suivantes qui sont nécessaires pour créer votre fichier de configuration."
 
 msgid "Database type:"
@@ -1056,11 +1071,11 @@
 
 msgid "Language has been successfully deleted."
-msgstr "La langue a été supprimée avec succès."
+msgstr "Langue supprimée avec succès."
 
 msgid "Language has been successfully installed."
-msgstr "La langue a été installée avec succès."
+msgstr "Langue installée avec succès."
 
 msgid "Language has been successfully upgraded"
-msgstr "La langue a été mise à jour avec succès."
+msgstr "Langue mise à jour avec succès."
 
 msgid "Here you can install, upgrade or remove languages for your Dotclear installation."
@@ -1116,5 +1131,5 @@
 
 msgid "The zip file does not appear to be a valid Dotclear language pack."
-msgstr "Le fichier zip ne semble pas être un fichier valide de langue Dotclear."
+msgstr "Le fichier zip ne semble pas être un fichier de langue Dotclear valide."
 
 msgid "An error occurred during language upgrade."
@@ -1125,14 +1140,14 @@
 
 msgid "By names, in ascending order"
-msgstr "Par noms, croissants"
+msgstr "Par noms croissants"
 
 msgid "By names, in descending order"
-msgstr "Par noms, décroissants"
+msgstr "Par noms décroissants"
 
 msgid "By dates, in ascending order"
-msgstr "Par dates, croissantes"
+msgstr "Par dates croissantes"
 
 msgid "By dates, in descending order"
-msgstr "Par dates, décroissantes"
+msgstr "Par dates décroissantes"
 
 msgid "Media manager"
@@ -1194,8 +1209,8 @@
 
 msgid "Please take care to publish media that you own and that are not protected by copyright."
-msgstr "Veuillez prendre garde à ne publier que des médias que vous possédez ou qui ne sont pas protégés contre la copie."
+msgstr "Veuillez prendre garde à ne publier que des médias que vous possédez ou qui ne sont pas protégés par le droit d'auteur."
 
 msgid "Choose a file:"
-msgstr "Choisissez un fichier :"
+msgstr "Choisir un fichier :"
 
 #, php-format
@@ -1237,5 +1252,5 @@
 
 msgid "Thumbnails have been successfully updated."
-msgstr "Les miniatures ont été mises à jour avec succès."
+msgstr "Les miniatures mises à jour avec succès."
 
 msgid "Insert media item"
@@ -1351,5 +1366,5 @@
 
 msgid "This will extract archive in current directory and will overwrite existing files or directory."
-msgstr "Ceci va extraire l'archive dans le répertoire actuel et va écraser les fichiers ou répertoires existants."
+msgstr "Ceci va extraire l'archive dans le répertoire actuel et écrasera les fichiers ou répertoires existants."
 
 msgid "Extract mode:"
@@ -1377,15 +1392,645 @@
 msgstr "Changer le fichier"
 
+msgid "No content found on this plugin."
+msgstr "Aucun contenu pour cette extension."
+
+msgid "Plugin not found"
+msgstr "Extension introuvable"
+
+msgid "The plugin you reached does not exist or does not have an admin page."
+msgstr "L'extension que vous essayez d'atteindre n'existe pas ou n'a pas de page d'administration."
+
+msgid "No such plugin."
+msgstr "Extension inexistante."
+
+msgid "You don't have permissions to delete this plugin."
+msgstr "Vous n'avez pas les permissions pour effacer cette extension."
+
+msgid "You don't have permissions to deactivate this plugin."
+msgstr "Vous n'avez pas les permissions pour désactiver cette extension."
+
+msgid "Plugins management"
+msgstr "Gestion des extensions"
+
+msgid "Plugin has been successfully deleted."
+msgstr "Extension supprimée avec succès."
+
+msgid "Plugin has been successfully installed."
+msgstr "Extension installée avec succès."
+
+msgid "Plugin has been successfully upgraded"
+msgstr "Extension mise à jour avec succès."
+
+msgid "Plugins add new functionalities to Dotclear. Here you can activate or deactivate installed plugins."
+msgstr "Les extensions ajoutent de nouvelles fonctionnalités à Dotclear. Ici, vous pouvez activer ou désactiver les extensions installées."
+
+#, php-format
+msgid "You can find additional plugins for your blog on %s."
+msgstr "Vous pouvez trouver de nouvelles extensions pour votre blog sur %s."
+
+msgid "To install or upgrade a plugin you generally just need to upload it in \"Install or upgrade a plugin\" section."
+msgstr "Tout ce que vous avez à faire pour installer ou mettre à jour une extension est généralement de la déposer dans la section \"Installer ou mettre à jour une extension\"."
+
+msgid "To install or upgrade a plugin you just need to extract it in your plugins directory."
+msgstr "Tout ce que vous avez à faire pour installer une extension est de l'extraire dans votre répertoire d'extensions."
+
+msgid "Plugins"
+msgstr "Extensions"
+
+msgid "Activated plugins"
+msgstr "Extensions activées"
+
+msgid "Plugin"
+msgstr "Extension"
+
+msgid "Version"
+msgstr "Version"
+
+msgid "Details"
+msgstr "Détails"
+
+msgid "Deactivate"
+msgstr "Désactiver"
+
+msgid "Deactivated plugins"
+msgstr "Extensions désactivées"
+
+msgid "Activate"
+msgstr "Activer"
+
+msgid "Install or upgrade a plugin"
+msgstr "Installer ou mettre à jour une extension"
+
+msgid "You can install plugins by uploading or downloading zip files."
+msgstr "Vous pouvez installer des extensions en déposant ou téléchargeant des fichiers zip."
+
+msgid "Plugin zip file:"
+msgstr "Fichier zip de l'extension :"
+
+msgid "Upload plugin"
+msgstr "Déposer l'extension"
+
+msgid "Plugin zip file URL:"
+msgstr "URL du fichier zip de l'extension :"
+
+msgid "Download plugin"
+msgstr "Télécharger l'extension"
+
+msgid "To enable this function, please give write access to your plugins directory."
+msgstr "Pour activer cette fonction, donnez un accès en écriture à votre répertoire d'extensions."
+
+msgid "Add a link"
+msgstr "Ajouter un lien"
+
+msgid "Available"
+msgstr "Disponible"
+
+msgid "Most used"
+msgstr "Plus utilisées"
+
+msgid "Link URL:"
+msgstr "URL du lien :"
+
+msgid "Link title:"
+msgstr "Titre du lien :"
+
+msgid "Link language:"
+msgstr "Langue du lien :"
+
+msgid "Add a link to an entry"
+msgstr "Ajouter un lien vers un billet"
+
+msgid "Search entry:"
+msgstr "Rechercher un billet :"
+
+msgid "Search"
+msgstr "Recherche"
+
+msgid "cancel"
+msgstr "annuler"
+
+msgid "This entry does not exist."
+msgstr "Ce billet n'existe pas."
+
+msgid "Edit entry"
+msgstr "Modifier le billet"
+
+msgid "next entry"
+msgstr "billet suivant"
+
+msgid "previous entry"
+msgstr "billet précédent"
+
+msgid "Entry has been successfully updated."
+msgstr "Billet mis à jour avec succès."
+
+msgid "Entry has been successfully created."
+msgstr "Billet créé avec succès."
+
+msgid "File has been successfully attached."
+msgstr "Fichier attaché avec succès."
+
+msgid "Attachment has been successfully removed."
+msgstr "Annexe retirée avec succès."
+
+msgid "Comment has been successfully created."
+msgstr "Commentaire créé avec succès."
+
+msgid "Don't forget to validate your XHTML conversion by saving your post."
+msgstr "Enregistrez votre billet pour valider la transformation en XHTML."
+
+msgid "Go to this entry on the site"
+msgstr "Voir ce billet sur le site"
+
+msgid "new window"
+msgstr "nouvelle fenêtre"
+
+msgid "Excerpt:"
+msgstr "Extrait :"
+
+msgid "Notes:"
+msgstr "Notes :"
+
+msgid "Preview"
+msgstr "Prévisualiser"
+
+msgid "Entry status:"
+msgstr "État du billet :"
+
+msgid "Published on:"
+msgstr "Publié le :"
+
+msgid "Text formating:"
+msgstr "Format du texte :"
+
+msgid "Convert to XHTML"
+msgstr "Convertir en XHTML"
+
+msgid "Selected entry"
+msgstr "Billet sélectionné"
+
+msgid "Entry lang:"
+msgstr "Langue du billet :"
+
+msgid "Entry password:"
+msgstr "Mot de passe du billet :"
+
+msgid "Basename:"
+msgstr "URL spécifique :"
+
+msgid "Warning: If you set the URL manually, it may conflict with another entry."
+msgstr "Attention : si vous indiquez l'URL manuellement, celle-ci peut entrer en conflit avec un autre billet."
+
+msgid "Ping blogs"
+msgstr "Faire des rétroliens"
+
+msgid "Trackbacks"
+msgstr "Rétroliens"
+
+msgid "No trackback"
+msgstr "Aucun rétrolien"
+
+msgid "Add a comment"
+msgstr "Ajouter un commentaire"
+
+msgid "Name:"
+msgstr "Nom :"
+
+msgid "IP address"
+msgstr "Adresse IP"
+
+msgid "published"
+msgstr "publié"
+
+msgid "unpublished"
+msgstr "non publié"
+
+msgid "pending"
+msgstr "en attente"
+
+msgid "junk"
+msgstr "indésirable"
+
+msgid "select this comment"
+msgstr "Sélectionner ce commentaire"
+
+msgid "select this trackback"
+msgstr "Sélectionner ce rétrolien"
+
+msgid "Edit this comment"
+msgstr "Modifier ce commentaire"
+
+msgid "This attachment does not exist"
+msgstr "Cette annexe n'existe pas"
+
+msgid "Remove attachment"
+msgstr "Supprimer l'annexe"
+
+msgid "Attachment"
+msgstr "Annexe"
+
+msgid "Are you sure you want to remove this attachment?"
+msgstr "Êtes-vous certain de vouloir supprimer cette annexe ?"
+
+msgid "selected"
+msgstr "sélectionné"
+
+msgid "not selected"
+msgstr "non sélectionné"
+
+msgid "Category"
+msgstr "Catégorie"
+
+msgid "Selected"
+msgstr "Sélectionné"
+
+msgid "Publish"
+msgstr "Publier"
+
+msgid "Unpublish"
+msgstr "Mettre hors ligne"
+
+msgid "Schedule"
+msgstr "Programmer"
+
+msgid "Mark as pending"
+msgstr "Mettre en attente"
+
+msgid "Mark"
+msgstr "Marquer"
+
+msgid "Mark as selected"
+msgstr "Sélectionner"
+
+msgid "Mark as unselected"
+msgstr "Désélectionner"
+
+msgid "Change"
+msgstr "Changer"
+
+msgid "Change category"
+msgstr "Changer la catégorie"
+
+msgid "Change author"
+msgstr "Changer l'auteur"
+
+msgid "Selected:"
+msgstr "Sélectionné :"
+
+msgid "Month:"
+msgstr "Mois :"
+
+msgid "Lang:"
+msgstr "Langue :"
+
+msgid "Entries per page"
+msgstr "Billets par page"
+
+msgid "Selected entries action:"
+msgstr "Action sur les billets sélectionnés :"
+
+msgid "This user does not exist"
+msgstr "Cet utilisateur n'existe pas"
+
+msgid "Change category for entries"
+msgstr "Changer la catégorie des billets"
+
+msgid "Change author for entries"
+msgstr "Changer l'auteur des billets"
+
+msgid "Author ID:"
+msgstr "Identifiant de l'utilisateur :"
+
+msgid "Default"
+msgstr "Défaut"
+
+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."
+
+msgid "No favorite selected"
+msgstr "Aucun favori sélectionné"
+
+msgid "Personal information has been successfully updated."
+msgstr "Informations personnelles mises à jour avec succès."
+
+msgid "Personal options has been successfully updated."
+msgstr "Vos options personnelles ont été enregistrées avec succès."
+
+msgid "Favorites have been successfully added."
+msgstr "Les favoris ont été ajoutés avec succès."
+
+msgid "Favorites have been successfully updated."
+msgstr "Les favoris ont été mis à jour avec succès."
+
+msgid "Favorites have been successfully removed."
+msgstr "Les favoris ont été retirés avec succès."
+
+msgid "Default favorites have been successfully updated."
+msgstr "Les favoris par défaut ont été enregistrés avec succès."
+
+msgid "My profile"
+msgstr "Mon profil"
+
+msgid "Display name:"
+msgstr "Pseudonyme :"
+
+msgid "User language:"
+msgstr "Langue de l'utilisateur :"
+
+msgid "User timezone:"
+msgstr "Fuseau horaire de l'utilisateur :"
+
+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."
+
+msgid "My options"
+msgstr "Mes options"
+
+msgid "Preferred format:"
+msgstr "Format d'édition préféré :"
+
+msgid "Default entry status:"
+msgstr "État des billets par défaut :"
+
+msgid "Entry edit field height:"
+msgstr "Taille de la zone d'édition :"
+
+msgid "Enable WYSIWYG mode"
+msgstr "Activer l'éditeur visuel"
+
+msgid "Activate enhanced uploader in media manager"
+msgstr "Activer l'interface avancée du gestionnaire de médias"
+
+#, fuzzy
+msgid "Hide My favorites menu"
+msgstr "Mes favoris"
+
+msgid "Iconset:"
+msgstr "Jeu d'icônes :"
+
+msgid "Do not use standard favicon"
+msgstr "Ne pas utiliser le favicon standard"
+
+msgid "This will be applied for all users"
+msgstr "Ce choix sera actif pour tous les utilisateurs"
+
+msgid "Accessibility options"
+msgstr "Options d'accessibilité"
+
+msgid "Disable javascript powered drag and drop for ordering items"
+msgstr "Désactiver le drag and drop javascript pour ordonnancer les éléments"
+
+msgid "Numeric fields will allow to type the elements' ordering number."
+msgstr "Des champs numériques permettront d'indiquer la position des éléments."
+
+msgid "Dashboard modules"
+msgstr "Modules du tableau de bord"
+
+msgid "Display documentation links"
+msgstr "Display documentation links"
+
+msgid "Display Dotclear news"
+msgstr "Afficher les nouvelles de Dotclear"
+
+msgid "Display quick entry form"
+msgstr "Afficher le formulaire de billet rapide"
+
+msgid "My favorites"
+msgstr "Mes favoris"
+
+#, php-format
+msgid "position of %s"
+msgstr "position de %s"
+
+msgid "Save order"
+msgstr "Enregistrer l'ordre"
+
+msgid "Delete selected favorites"
+msgstr "Retirer les favoris sélectionnés"
+
+msgid "Are you sure you want to remove selected favorites?"
+msgstr "Êtes-vous sûr de vouloir retirer les favoris sélectionnés ?"
+
+msgid "If you are a super administrator, you may define this set of favorites to be used by default on all blogs of this installation:"
+msgstr "Si vous êtes super administrateur, vous pouvez définir ce jeu de favoris comme l'ensemble par défaut pour tous les blogs de l'installation :"
+
+msgid "Define as default favorites"
+msgstr "Définir comme favoris par défaut"
+
+msgid "Currently no personal favorites."
+msgstr "La liste de vos favoris est vide pour le moment."
+
+msgid "Default favorites"
+msgstr "Favoris par défaut"
+
+msgid "Those favorites are displayed when My Favorites list is empty."
+msgstr "Favoris affichés quand la liste Mes Favoris est vide."
+
+msgid "Available favorites"
+msgstr "Favoris disponibles"
+
+msgid "Add to my favorites"
+msgstr "Ajouter à mes favoris"
+
+msgid "Search options"
+msgstr "Options de recherche"
+
+msgid "Query:"
+msgstr "Requête :"
+
+msgid "Search entries"
+msgstr "Rechercher des billets"
+
+msgid "Search comments"
+msgstr "Rechercher des commentaires"
+
+msgid "schedule"
+msgstr "programmer"
+
+msgid "change category"
+msgstr "changer la catégorie"
+
+msgid "change author"
+msgstr "changer l'auteur"
+
+#, php-format
+msgid "%d entries found"
+msgstr "%d billets trouvés"
+
+#, php-format
+msgid "%d entry found"
+msgstr "%d billet trouvé"
+
+#, php-format
+msgid "%d comment found"
+msgstr "%d commentaire trouvé"
+
+#, php-format
+msgid "%d comments found"
+msgstr "%d commentaires trouvés"
+
+msgid "This entry does not exist or is not published"
+msgstr "Ce billet n'existe pas ou n'est pas publié"
+
+msgid "All pings sent."
+msgstr "Tous les rétroliens ont été envoyés."
+
+#, php-format
+msgid "Back to \"%s\""
+msgstr "Retour à \"%s\""
+
+msgid "Auto discover ping URLs"
+msgstr "Découverte automatique des URL à rétrolier"
+
+msgid "URLs to ping:"
+msgstr "URLs à rétrolier :"
+
+msgid "Send excerpt:"
+msgstr "Envoyer l'extrait :"
+
+msgid "Previously sent pings"
+msgstr "Rétroliens déjà envoyés"
+
+msgid "Dotclear update"
+msgstr "Mise à jour de Dotclear"
+
+#, php-format
+msgid "Unable to delete file %s"
+msgstr "Impossible de supprimer le fichier %s"
+
+#, php-format
+msgid "Downloaded Dotclear archive seems to be corrupted. Try <a %s>download it</a> again."
+msgstr "L'archive de Dotclear téléchargée semble être corrompue. Essayer de la <a %s>télécharger</a> à nouveau."
+
+msgid "The following files of your Dotclear installation have been modified so we won't try to update your installation. Please try to <a href=\"http://dotclear.org/download\">update manually</a>."
+msgstr "Comme les fichiers suivants de votre installation de Dotclear ont été modifiés, votre installation ne peut être mise à jour. Merci de <a href=\"http://fr.dotclear.org/download\">mettre à jour manuellement</a>."
+
+#, php-format
+msgid "The following files of your Dotclear installation are not readable. Please fix this or try to make a backup file named %s manually."
+msgstr "Les fichiers suivants de votre installation de Dotclear ne peuvent pas être lus. Veuillez corriger ceci ou créer un fichier de backup nommé %s manuellement."
+
+msgid "The following files of your Dotclear installation cannot be written. Please fix this or try to <a href=\"http://dotclear.org/download\">update manually</a>."
+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 "No newer Dotclear version available."
+msgstr "Aucune nouvelle version de Dotclear n'est disponible."
+
+#, php-format
+msgid "Dotclear %s is available."
+msgstr "Dotclear %s est disponible."
+
+msgid "To upgrade your Dotclear installation simply click on the following button. A backup file of your current installation will be created in your root directory."
+msgstr "Pour mettre à jour votre installation de Dotclear, cliquez sur le bouton suivant. Un fichier de sauvegarde de votre installation actuelle sera créé dans votre répertoire principal."
+
+msgid "Update Dotclear"
+msgstr "Mettre à jour Dotclear"
+
+msgid "Update backup files"
+msgstr "Sauvegardes des mises à jour"
+
+msgid "The following files are backups of previously updates. You can revert your previous installation or delete theses files."
+msgstr "Les fichiers suivants sont des sauvegardes de mises à jour précédentes. Vous pouvez rétablir votre installation précédente ou supprimer ces fichiers."
+
+msgid "Please note that reverting your Dotclear version may have some unwanted side-effects. Consider reverting only if you experience strong issues with this new version."
+msgstr "Merci de noter que rétablir votre version de Dotclear peut avoir des effets indésirables. N'envisagez ceci que si vous rencontrez d'importantes difficultés avec cette nouvelle version."
+
+#, php-format
+msgid "You should not revert to version prior to last one (%s)."
+msgstr "Vous ne devez pas rétablir une version précédant la dernière (%s)."
+
+msgid "Delete selected file"
+msgstr "Supprimer le fichier sélectionné"
+
+msgid "Revert to selected file"
+msgstr "Rétablir le fichier sélectionné"
+
+msgid "Congratulations, you're one click away from the end of the update."
+msgstr "Félicitations, vous êtes à un clic de la fin de la mise à jour."
+
+msgid "Finish the update."
+msgstr "Finir la mise à jour."
+
+msgid "new user"
+msgstr "nouvel utilisateur"
+
+#, php-format
+msgid "User \"%s\" already exists."
+msgstr "L'utilisateur \"%s\" existe déjà."
+
+msgid "User has been successfully updated."
+msgstr "Utilisateur mis à jour avec succès."
+
+msgid "User has been successfully created."
+msgstr "Utilisateur créé avec succès."
+
+msgid "Warning:"
+msgstr "Attention :"
+
+msgid "If you change your username, you will have to log in again."
+msgstr "Si vous changez votre login, vous devrez vous identifier à nouveau."
+
+msgid "Mandatory for password recovering procedure."
+msgstr "Obligatoire pour la procédure de récupération de mot de passe."
+
+msgid "Password change required to connect"
+msgstr "Changement de mot de passe requis pour la connexion"
+
+msgid "Save and create another"
+msgstr "Enregistrer et créer un nouveau"
+
+msgid "Permissions"
+msgstr "Permissions"
+
+msgid "Add new permissions"
+msgstr "Ajouter de nouvelles permissions"
+
+msgid "No permissions."
+msgstr "Aucune permission."
+
+msgid "Username"
+msgstr "Identifiant"
+
+msgid "Last Name"
+msgstr "Nom"
+
+msgid "First Name"
+msgstr "Prénom"
+
+msgid "Display name"
+msgstr "Pseudonyme"
+
+msgid "Number of entries"
+msgstr "Nombre de billets"
+
+msgid "Set permissions"
+msgstr "Définir les permissions"
+
+msgid "User has been successfully removed."
+msgstr "Utilisateur supprimé avec succès."
+
+msgid "The permissions have been successfully updated."
+msgstr "Permissions mises à jour avec succès."
+
+msgid "Create a new user"
+msgstr "Créer un nouvel utilisateur"
+
+msgid "Users per page"
+msgstr "Utilisateurs par page"
+
+msgid "Selected users action:"
+msgstr "Action sur les utilisateurs sélectionnés :"
+
 msgid "No blog or user given."
 msgstr "Vous n'avez pas indiqué de blog ou d'utilisateur"
 
-msgid "permissions"
-msgstr "permissions"
-
-msgid "Permissions"
-msgstr "Permissions"
-
-msgid "The permissions have been successfully updated."
-msgstr "Permissions mises à jour avec succès."
+msgid "Not delete yourself."
+msgstr ""
+
+#, php-format
+msgid "Choose one or more blogs to which you want to give permissions to users %s."
+msgstr "Choisissez un ou plusieurs blogs pour lesquels les utilisateurs suivants auront des permissions : %s."
+
+msgid "select"
+msgstr "sélectionner"
 
 #, php-format
@@ -1396,639 +2041,4 @@
 msgstr "Valider les permissions"
 
-msgid "choose a blog"
-msgstr "choisissez un blog"
-
-msgid "Choose a blog"
-msgstr "Choisissez un blog"
-
-msgid "Entries per page"
-msgstr "Billets par page"
-
-#, php-format
-msgid "Choose one or more blogs to which you want to give permissions to users %s."
-msgstr "Choisissez un ou plusieurs blogs pour lesquels les utilisateurs suivants auront des permissions : %s."
-
-msgid "Set permissions"
-msgstr "définir les permissions"
-
-msgid "select"
-msgstr "sélectionner"
-
-msgid "No content found on this plugin."
-msgstr "Aucun contenu pour cette extension."
-
-msgid "Plugin not found"
-msgstr "Extension introuvable"
-
-msgid "The plugin you reached does not exist or does not have an admin page."
-msgstr "L'extension que vous essayez d'atteindre n'existe pas ou n'a pas de page d'administration."
-
-msgid "No such plugin."
-msgstr "Extension inexistante."
-
-msgid "You don't have permissions to delete this plugin."
-msgstr "Vous n'avez pas les permissions pour effacer cette extension"
-
-msgid "You don't have permissions to deactivate this plugin."
-msgstr "Vous n'avez pas les permissions pour désactiver cette extension."
-
-msgid "Plugins management"
-msgstr "Gestion des extensions"
-
-msgid "Plugin has been successfully deleted."
-msgstr "L'extension a été supprimée avec succès."
-
-msgid "Plugin has been successfully installed."
-msgstr "L'extension a été installée avec succès."
-
-msgid "Plugin has been successfully upgraded"
-msgstr "L'extension a été mise à jour avec succès."
-
-msgid "Plugins add new functionalities to Dotclear. Here you can activate or deactivate installed plugins."
-msgstr "Les extensions ajoutent de nouvelles fonctionnalités à Dotclear. Ici, vous pouvez activer ou désactiver les extensions installées."
-
-#, php-format
-msgid "You can find additional plugins for your blog on %s."
-msgstr "Vous pouvez trouver de nouvelles extensions pour votre blog sur %s."
-
-msgid "To install or upgrade a plugin you generally just need to upload it in \"Install or upgrade a plugin\" section."
-msgstr "Tout ce que vous avez à faire pour installer ou mettre à jour une extension est généralement de la déposer dans la section \"Installer ou mettre à jour une extension\"."
-
-msgid "To install or upgrade a plugin you just need to extract it in your plugins directory."
-msgstr "Tout ce que vous avez à faire pour installer une extension est de l'extraire dans votre répertoire d'extensions."
-
-msgid "Plugins"
-msgstr "Extensions"
-
-msgid "Activated plugins"
-msgstr "Extensions activées"
-
-msgid "Plugin"
-msgstr "Extension"
-
-msgid "Version"
-msgstr "Version"
-
-msgid "Details"
-msgstr "Détails"
-
-msgid "Deactivate"
-msgstr "Désactiver"
-
-msgid "Deactivated plugins"
-msgstr "Extensions désactivées"
-
-msgid "Activate"
-msgstr "Activer"
-
-msgid "Install or upgrade a plugin"
-msgstr "Installer ou mettre à jour une extension"
-
-msgid "You can install plugins by uploading or downloading zip files."
-msgstr "Vous pouvez installer des extensions en déposant ou téléchargeant des fichiers zip."
-
-msgid "Plugin zip file:"
-msgstr "Fichier zip de l'extension :"
-
-msgid "Upload plugin"
-msgstr "Déposer l'extension"
-
-msgid "Plugin zip file URL:"
-msgstr "URL du fichier zip de l'extension :"
-
-msgid "Download plugin"
-msgstr "Télécharger l'extension"
-
-msgid "To enable this function, please give write access to your plugins directory."
-msgstr "Pour activer cette fonction, donnez un accès en écriture à votre répertoire d'extensions."
-
-msgid "Add a link"
-msgstr "Ajouter un lien"
-
-msgid "Available"
-msgstr "Disponible"
-
-msgid "Most used"
-msgstr "Plus utilisées"
-
-msgid "Link URL:"
-msgstr "URL du lien :"
-
-msgid "Link title:"
-msgstr "Titre du lien :"
-
-msgid "Link language:"
-msgstr "Langue du lien :"
-
-msgid "Add a link to an entry"
-msgstr "Ajouter un lien vers un billet"
-
-msgid "Search entry:"
-msgstr "Rechercher un billet :"
-
-msgid "Search"
-msgstr "Rechercher"
-
-msgid "cancel"
-msgstr "Annuler"
-
-msgid "This entry does not exist."
-msgstr "Ce billet n'existe pas."
-
-msgid "Edit entry"
-msgstr "Modifier le billet"
-
-msgid "next entry"
-msgstr "billet suivant"
-
-msgid "previous entry"
-msgstr "billet précédent"
-
-msgid "Entry has been successfully updated."
-msgstr "Billet mis à jour avec succès."
-
-msgid "Entry has been successfully created."
-msgstr "Billet créé avec succès."
-
-msgid "File has been successfully attached."
-msgstr "Fichier attaché avec succès."
-
-msgid "Attachment has been successfully removed."
-msgstr "Pièce jointe retirée avec succès."
-
-msgid "Comment has been successfully created."
-msgstr "Commentaire créé avec succès."
-
-msgid "Don't forget to validate your XHTML conversion by saving your post."
-msgstr "Enregistrez votre billet pour valider la transformation en XHTML."
-
-msgid "Go to this entry on the site"
-msgstr "Voir ce billet sur le site"
-
-msgid "new window"
-msgstr "nouvelle fenêtre"
-
-msgid "Excerpt:"
-msgstr "Extrait :"
-
-msgid "Notes:"
-msgstr "Notes :"
-
-msgid "Preview"
-msgstr "Prévisualiser"
-
-msgid "Entry status:"
-msgstr "État du billet :"
-
-msgid "Published on:"
-msgstr "Publié le :"
-
-msgid "Text formating:"
-msgstr "Format du texte :"
-
-msgid "Convert to XHTML"
-msgstr "Convertir en XHTML"
-
-msgid "Selected entry"
-msgstr "Billet sélectionné"
-
-msgid "Entry lang:"
-msgstr "Langue du billet :"
-
-msgid "Entry password:"
-msgstr "Mot de passe du billet :"
-
-msgid "Basename:"
-msgstr "URL spécifique :"
-
-msgid "Warning: If you set the URL manually, it may conflict with another entry."
-msgstr "Attention : si vous indiquez l'URL manuellement, celle-ci peut entrer en conflit avec un autre billet."
-
-msgid "Ping blogs"
-msgstr "Faire des rétroliens"
-
-msgid "Trackbacks"
-msgstr "Rétroliens"
-
-msgid "No trackback"
-msgstr "Aucun rétrolien"
-
-msgid "Add a comment"
-msgstr "Ajouter un commentaire"
-
-msgid "Name:"
-msgstr "Nom :"
-
-msgid "IP address"
-msgstr "Adresse IP"
-
-msgid "published"
-msgstr "publié"
-
-msgid "unpublished"
-msgstr "non publié"
-
-msgid "pending"
-msgstr "en attente"
-
-msgid "junk"
-msgstr "indésirable"
-
-msgid "select this comment"
-msgstr "Sélectionner ce commentaire"
-
-msgid "select this trackback"
-msgstr "Sélectionner ce rétrolien"
-
-msgid "Edit this comment"
-msgstr "Modifier ce commentaire"
-
-msgid "This attachment does not exist"
-msgstr "Cette pièce jointe n'existe pas"
-
-msgid "Remove attachment"
-msgstr "Supprimer la pièce jointe"
-
-msgid "Attachment"
-msgstr "Pièce jointe"
-
-msgid "Are you sure you want to remove this attachment?"
-msgstr "Êtes-vous certain de vouloir supprimer cette pièce jointe ?"
-
-msgid "selected"
-msgstr "sélectionné"
-
-msgid "not selected"
-msgstr "non sélectionné"
-
-msgid "Category"
-msgstr "Catégorie"
-
-msgid "Selected"
-msgstr "Sélectionné"
-
-msgid "Publish"
-msgstr "Publier"
-
-msgid "Unpublish"
-msgstr "Mettre hors ligne"
-
-msgid "Schedule"
-msgstr "Programmer"
-
-msgid "Mark as pending"
-msgstr "Mettre en attente"
-
-msgid "Mark"
-msgstr "Marquer"
-
-msgid "Mark as selected"
-msgstr "Sélectionner"
-
-msgid "Mark as unselected"
-msgstr "Désélectionner"
-
-msgid "Change"
-msgstr "Changer"
-
-msgid "Change category"
-msgstr "Changer la catégorie"
-
-msgid "Change author"
-msgstr "Changer l'auteur"
-
-msgid "Selected:"
-msgstr "Sélectionné :"
-
-msgid "Month:"
-msgstr "Mois :"
-
-msgid "Lang:"
-msgstr "Langue :"
-
-msgid "Selected entries action:"
-msgstr "Action sur les billets sélectionnés :"
-
-msgid "This user does not exist"
-msgstr "Cet utilisateur n'existe pas"
-
-msgid "Change category for entries"
-msgstr "Changer de catégorie pour les billets"
-
-msgid "Change author for entries"
-msgstr "Changer l'auteur des billets"
-
-msgid "Author ID:"
-msgstr "Identifiant de l'utilisateur :"
-
-msgid "Default"
-msgstr "Défaut"
-
-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."
-
-msgid "No favorite selected"
-msgstr "Aucun favori sélectionné"
-
-msgid "Personal information has been successfully updated."
-msgstr "Informations personnelles mises à jour avec succès."
-
-msgid "Personal options has been successfully updated."
-msgstr "Vos options personnelles ont été enregistrées avec succès."
-
-msgid "Favorites have been successfully added."
-msgstr "Les favoris ont été ajoutés avec succès."
-
-msgid "Favorites have been successfully updated."
-msgstr "Les favoris ont été mis à jour avec succès."
-
-msgid "Favorites have been successfully removed."
-msgstr "Les favoris ont été retirés avec succès."
-
-msgid "Default favorites have been successfully updated."
-msgstr "Les favoris par défaut ont été enregistrés avec succès."
-
-msgid "My profile"
-msgstr "Mon profil"
-
-msgid "Display name:"
-msgstr "Pseudonyme :"
-
-msgid "User language:"
-msgstr "Langue de l'utilisateur :"
-
-msgid "User timezone:"
-msgstr "Fuseau horaire de l'utilisateur :"
-
-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."
-
-msgid "My options"
-msgstr "Mes options"
-
-msgid "Preferred format:"
-msgstr "Format d'édition préféré :"
-
-msgid "Default entry status:"
-msgstr "État des billets par défaut :"
-
-msgid "Entry edit field height:"
-msgstr "Taille de la zone d'édition :"
-
-msgid "Enable WYSIWYG mode"
-msgstr "Activer l'éditeur visuel"
-
-msgid "Activate enhanced uploader in media manager"
-msgstr "Activer l'interface avancée du gestionnaire de médias"
-
-msgid "Iconset:"
-msgstr "Jeu d'icônes :"
-
-msgid "Do not use standard favicon"
-msgstr "Ne pas utiliser le favicon standard"
-
-msgid "This will be applied for all users"
-msgstr "Ce choix sera actif pour tous les utilisateurs"
-
-msgid "Accessibility options"
-msgstr "Options d'accessibilité"
-
-msgid "Disable javascript powered drag and drop for ordering items"
-msgstr "Désactiver le drag and drop javascript pour ordonnancer les éléments"
-
-msgid "Numeric fields will allow to type the elements' ordering number."
-msgstr "Des champs numériques permettront d'indiquer la position des éléments."
-
-msgid "Dashboard modules"
-msgstr "Modules du tableau de bord"
-
-msgid "Display documentation links"
-msgstr "Afficher les liens de documentation"
-
-msgid "Display Dotclear news"
-msgstr "Afficher les nouvelles de Dotclear"
-
-msgid "Display quick entry form"
-msgstr "Afficher le formulaire de billet rapide"
-
-msgid "My favorites"
-msgstr "Mes favoris"
-
-#, php-format
-msgid "position of %s"
-msgstr "position de %s"
-
-msgid "Save order"
-msgstr "Enregistrer l'ordre"
-
-msgid "Delete selected favorites"
-msgstr "Retirer les favoris sélectionnés"
-
-msgid "Are you sure you want to remove selected favorites?"
-msgstr "Êtes-vous sûr de vouloir retirer les favoris sélectionnés ?"
-
-msgid "If you are a super administrator, you may define this set of favorites to be used by default on all blogs of this installation:"
-msgstr "Si vous êtes super administrateur, vous pouvez définir ce jeu de favoris comme l'ensemble par défaut pour tous les blogs de l'installation :"
-
-msgid "Define as default favorites"
-msgstr "Définir comme favoris par défaut"
-
-msgid "Currently no personal favorites."
-msgstr "La liste de vos favoris est vide pour le moment."
-
-msgid "Default favorites"
-msgstr "Favoris par défaut"
-
-msgid "Those favorites are displayed when My Favorites list is empty."
-msgstr "Favoris affichés quand la liste Mes Favoris est vide."
-
-msgid "Available favorites"
-msgstr "Favoris disponibles"
-
-msgid "Add to my favorites"
-msgstr "Ajouter à mes favoris"
-
-msgid "Search options"
-msgstr "Options de recherche"
-
-msgid "Query:"
-msgstr "Requête :"
-
-msgid "Search entries"
-msgstr "Rechercher des billets"
-
-msgid "Search comments"
-msgstr "Rechercher des commentaires"
-
-msgid "schedule"
-msgstr "programmer"
-
-msgid "change category"
-msgstr "changer la catégorie"
-
-msgid "change author"
-msgstr "changer l'auteur"
-
-#, php-format
-msgid "%d entries found"
-msgstr "%d billets trouvés"
-
-#, php-format
-msgid "%d entry found"
-msgstr "%d billet trouvé"
-
-#, php-format
-msgid "%d comment found"
-msgstr "%d commentaire trouvé"
-
-#, php-format
-msgid "%d comments found"
-msgstr "%d commentaires trouvés"
-
-msgid "This entry does not exist or is not published"
-msgstr "Ce billet n'existe pas ou n'est pas publié"
-
-msgid "All pings sent."
-msgstr "Tous les rétroliens ont été envoyés."
-
-#, php-format
-msgid "Back to \"%s\""
-msgstr "Retour à \"%s\""
-
-msgid "Auto discover ping URLs"
-msgstr "Découverte automatique des URL à rétrolier"
-
-msgid "URLs to ping:"
-msgstr "URLs à rétrolier :"
-
-msgid "Send excerpt:"
-msgstr "Envoyer l'extrait :"
-
-msgid "Previously sent pings"
-msgstr "Rétroliens déjà envoyés"
-
-msgid "Dotclear update"
-msgstr "Mise à jour de Dotclear"
-
-#, php-format
-msgid "Unable to delete file %s"
-msgstr "Impossible de supprimer le fichier %s"
-
-#, php-format
-msgid "Downloaded Dotclear archive seems to be corrupted. Try <a %s>download it</a> again."
-msgstr "L'archive téléchargée de Dotclear semble être corrompue. Essayer de la <a %s>télécharger</a> à nouveau."
-
-msgid "The following files of your Dotclear installation have been modified so we won't try to update your installation. Please try to <a href=\"http://dotclear.org/download\">update manually</a>."
-msgstr "Comme les fichiers suivants de votre installation de Dotclear ont été modifiés, votre installation ne peut être mise à jour. Merci de <a href=\"http://fr.dotclear.org/download\">mettre à jour manuellement</a>."
-
-#, php-format
-msgid "The following files of your Dotclear installation are not readable. Please fix this or try to make a backup file named %s manually."
-msgstr "Les fichiers suivants de votre installation de Dotclear ne peuvent pas être lus. Veuillez corriger ceci ou créer un fichier de backup nommé %s manuellement."
-
-msgid "The following files of your Dotclear installation cannot be written. Please fix this or try to <a href=\"http://dotclear.org/download\">update manually</a>."
-msgstr "Les fichiers suivants de votre installation de Dotclear ne peuvent pas être écrits. Veuillez corriger ceci ou <a href=\"http://fr.dotclear.org/download\">mettre à jour manuellement</a>."
-
-msgid "No newer Dotclear version available."
-msgstr "Aucune nouvelle version de Dotclear n'est disponible."
-
-#, php-format
-msgid "Dotclear %s is available."
-msgstr "Dotclear %s est disponible."
-
-msgid "To upgrade your Dotclear installation simply click on the following button. A backup file of your current installation will be created in your root directory."
-msgstr "Pour mettre à jour votre installation de Dotclear, cliquez sur le bouton suivant. Un fichier de sauvegarde de votre installation actuelle sera créé dans votre répertoire principal."
-
-msgid "Update Dotclear"
-msgstr "Mettre à jour Dotclear"
-
-msgid "Update backup files"
-msgstr "Sauvegardes des mises à jour"
-
-msgid "The following files are backups of previously updates. You can revert your previous installation or delete theses files."
-msgstr "Les fichiers suivants sont des sauvegardes de mises à jour précédentes. Vous pouvez rétablir votre installation précédente ou supprimer ces fichiers."
-
-msgid "Please note that reverting your Dotclear version may have some unwanted side-effects. Consider reverting only if you experience strong issues with this new version."
-msgstr "Merci de noter que rétablir votre version de Dotclear peut avoir des effets non désirés. N'envisagez ceci que si vous rencontrez d'importantes difficultés avec cette nouvelle version."
-
-#, php-format
-msgid "You should not revert to version prior to last one (%s)."
-msgstr "Vous ne devez pas rétablir une version précédant la dernière (%s)."
-
-msgid "Delete selected file"
-msgstr "Supprimer le fichier sélectionné"
-
-msgid "Revert to selected file"
-msgstr "Rétablir le fichier sélectionné"
-
-msgid "Congratulations, you're one click away from the end of the update."
-msgstr "Félicitations, vous êtes à un clic de la fin de la mise à jour."
-
-msgid "Finish the update."
-msgstr "Finir la mise à jour."
-
-msgid "new user"
-msgstr "nouvel utilisateur"
-
-#, php-format
-msgid "User \"%s\" already exists."
-msgstr "L'utilisateur \"%s\" existe déjà."
-
-msgid "User has been successfully updated."
-msgstr "Utilisateur mis à jour avec succès."
-
-msgid "User has been successfully created."
-msgstr "Utilisateur créé avec succès."
-
-msgid "Warning:"
-msgstr "Attention :"
-
-msgid "If you change your username, you will have to log in again."
-msgstr "Si vous changez votre login, vous devrez vous identifier à nouveau."
-
-msgid "Mandatory for password recovering procedure."
-msgstr "Obligatoire pour la procédure de récupération de mot de passe."
-
-msgid "Password change required to connect"
-msgstr "Changement de mot de passe requis pour la connexion"
-
-msgid "Save and create another"
-msgstr "Enregistrer et créer un nouveau"
-
-msgid "No permissions."
-msgstr "Aucune permission."
-
-msgid "Add new permissions"
-msgstr "Ajouter de nouvelles permissions"
-
-msgid "Username"
-msgstr "Identifiant"
-
-msgid "Last Name"
-msgstr "Nom"
-
-msgid "First Name"
-msgstr "Prénom"
-
-msgid "Display name"
-msgstr "Pseudonyme"
-
-msgid "Number of entries"
-msgstr "Nombre de billets"
-
-msgid "users"
-msgstr "utilisateurs"
-
-msgid "User has been successfully removed."
-msgstr "Utilisateur supprimé avec succès."
-
-msgid "Create a new user"
-msgstr "Créer un nouvel utilisateur"
-
-msgid "Users per page"
-msgstr "Utilisateurs par page"
-
-msgid "Selected users action:"
-msgstr "Action sur les utilisateurs sélectionnés :"
-
 msgid "Blog:"
 msgstr "Blog :"
@@ -2040,4 +2050,12 @@
 msgstr "Blogs :"
 
+#, fuzzy
+msgid "Go to the content"
+msgstr "Voir ce billet sur le site"
+
+#, fuzzy
+msgid "Go to the menu"
+msgstr "Aller sur le site"
+
 msgid "Go to site"
 msgstr "Aller sur le site"
@@ -2121,5 +2139,5 @@
 #, php-format
 msgid "Are you sure you want to remove attachment \"%s\"?"
-msgstr "Êtes-vous certain de vouloir supprimer la pièce jointe \"%s\" ?"
+msgstr "Êtes-vous certain de vouloir supprimer l'annexe \"%s\" ?"
 
 #, php-format
@@ -2331,5 +2349,5 @@
 
 msgid "No user"
-msgstr "Pas d'utilisateur"
+msgstr "Aucun utilisateur"
 
 msgid "admin"
@@ -2340,5 +2358,5 @@
 
 msgid "Database error"
-msgstr "Erreur de base de données :"
+msgstr "Erreur de base de données"
 
 msgid "There seems to be no Session table in your database. Is Dotclear completly installed?"
@@ -2399,4 +2417,8 @@
 msgstr "Cette catégorie n'est pas vide."
 
+#, fuzzy
+msgid "You are not allowed to reset categories order"
+msgstr "Vous n'êtes pas autorisé à supprimer des catégories"
+
 msgid "Category URL must be unique."
 msgstr "L'URL de chaque catégorie doit être unique."
@@ -2415,5 +2437,5 @@
 
 msgid "No such entry ID"
-msgstr "Identifiant du billet inconnu"
+msgstr "Identifiant de billet inconnu"
 
 msgid "You are not allowed to edit this entry"
@@ -2448,5 +2470,5 @@
 
 msgid "No such comment ID"
-msgstr "Identifiant du commentaire inconnu"
+msgstr "Identifiant de commentaire inconnu"
 
 msgid "You are not allowed to update this comment"
@@ -2463,8 +2485,8 @@
 
 msgid "You must provide a comment"
-msgstr "Vous devez indiquer un commentaire"
+msgstr "Vous devez écrire un commentaire"
 
 msgid "You must provide an author name"
-msgstr "Vous devez indiquer un nom d'auteur"
+msgstr "Vous devez indiquer un nom"
 
 msgid "Email address is not valid."
@@ -2531,12 +2553,12 @@
 
 msgid "Embedded Audio Player"
-msgstr "Fichier audio intégré"
+msgstr "Lecteur audio intégré"
 
 msgid "Embedded Video Player"
-msgstr "Fichier vidéo intégré"
+msgstr "Lecteur vidéo intégré"
 
 #, php-format
 msgid "%s: in [%s] and [%s]"
-msgstr "%s: dans [%s] et [%s]"
+msgstr "%s : dans [%s] et [%s]"
 
 msgid "Empty module zip file."
@@ -2544,5 +2566,5 @@
 
 msgid "The zip file does not appear to be a valid Dotclear module."
-msgstr "Le fichier zip ne semble pas être un fichier valide de module Dotclear."
+msgstr "Le fichier zip ne semble pas être un fichier de module Dotclear valide."
 
 msgid "An error occurred during module deletion."
@@ -2570,5 +2592,5 @@
 #, php-format
 msgid "Invalid setting dcNamespace: %s"
-msgstr "Espace de nommage du paramètre invalide : %s"
+msgstr "Espace de nom du paramètre invalide : %s"
 
 msgid "Unable to retrieve settings:"
@@ -2580,15 +2602,15 @@
 
 msgid "No namespace specified"
-msgstr "Aucun espace de nommage spécifié"
+msgstr "Aucun espace de nom spécifié"
 
 msgid "Unable to retrieve workspaces:"
-msgstr "Impossible d'obtenir les espaces de travail :"
+msgstr "Impossible d'obtenir les espaces de travail :"
 
 msgid "Unable to retrieve namespaces:"
-msgstr "Impossible d'obtenir les espaces de nommage :"
+msgstr "Impossible d'obtenir les espaces de nom :"
 
 #, php-format
 msgid "Invalid setting namespace: %s"
-msgstr "Espace de nommage du paramètre invalide : %s"
+msgstr "Espace de nom du paramètre invalide : %s"
 
 #, php-format
@@ -2611,5 +2633,5 @@
 
 msgid "No file to download"
-msgstr "Aucun fichier à télécharger."
+msgstr "Aucun fichier à télécharger"
 
 msgid "Root directory is not writable."
@@ -2620,5 +2642,5 @@
 
 msgid "Archive not found."
-msgstr "L'archive n'a pas été trouvée."
+msgstr "Archive introuvable."
 
 msgid "Unable to read current digests file."
@@ -2639,8 +2661,8 @@
 #, php-format
 msgid "Invalid dcWorkspace: %s"
-msgstr "Espace de travail de la préférence invalide : %s"
+msgstr "Espace de travail de la préférence invalide : %s"
 
 msgid "Unable to retrieve prefs:"
-msgstr "Impossible d'obtenir les préférences :"
+msgstr "Impossible d'obtenir les préférences :"
 
 #, php-format
@@ -2669,7 +2691,6 @@
 msgstr "Impossible d'ouvrir le fichier."
 
-# pas compris
 msgid "Not an uploaded file."
-msgstr "Pas un fichier déposé."
+msgstr "N'est pas un fichier déposé."
 
 msgid "The uploaded file exceeds the maximum file size allowed."
@@ -2716,5 +2737,4 @@
 msgstr "L'envoi de ce fichier n'est pas autorisé."
 
-# "en jail" ? c'est du geek ?
 msgid "Destination directory is not in jail."
 msgstr "Le répertoire cible n'est pas en jail."
@@ -2730,7 +2750,6 @@
 
 msgid "Source file does not exist."
-msgstr "Le fichier source n'existe pas"
-
-# geek ?
+msgstr "Le fichier source n'existe pas."
+
 msgid "File is not in jail."
 msgstr "Le fichier n'est pas en jail."
@@ -2745,5 +2764,4 @@
 msgstr "Ce fichier ne peut pas être supprimé."
 
-# décidément ! mais que veut dire "jail" ?
 msgid "Directory is not in jail."
 msgstr "Le répertoire n'est pas en jail."
@@ -2794,91 +2812,16 @@
 msgstr "L'erreur suivante a été rencontrée lors de la tentative d'accès à la base de données :"
 
-#~ msgid "Blog themes"
-#~ msgstr "Thèmes du blog"
-
-#~ msgid "Pages"
-#~ msgstr "Pages"
-
-#~ msgid "Blogroll"
-#~ msgstr "Liens / Blogroll"
-
-#~ msgid "update thumbnails"
-#~ msgstr "mettre à jour les miniatures"
-
-#~ msgid "insert"
-#~ msgstr "insérer"
-
-#~ msgid "View entry"
-#~ msgstr "Voir le billet"
-
-#~ msgid "Go to this page on the site"
-#~ msgstr "Voir cette page sur le site"
-
-#~ msgid "Attachments"
-#~ msgstr "Pièces jointes"
-
-#~ msgid "remove"
-#~ msgstr "supprimer"
-
-#~ msgid "Remove"
-#~ msgstr "Supprimer"
-
-#~ msgid "No attachment."
-#~ msgstr "Aucune pièce jointe"
-
-#~ msgid "Add files to this entry"
-#~ msgstr "Ajouter un fichier au billet"
-
-#~ msgid "User:"
-#~ msgstr "Utilisateur :"
-
-#~ msgid "Logout"
-#~ msgstr "Déconnexion"
-
-#~ msgid "login"
-#~ msgstr "login"
-
-#~ msgid "filter"
-#~ msgstr "filtre"
-
-#~ msgid "User preferences"
-#~ msgstr "Préférences utilisateur"
-
-#~ msgid "Documentation"
-#~ msgstr "Documentation"
-
-#~ msgid "View site"
-#~ msgstr "Voir le site"
-
-#~ msgid "medium"
-#~ msgstr "moyenne"
-
-#~ msgid "small"
-#~ msgstr "petite"
-
-#~ msgid "thumbnail"
-#~ msgstr "miniature"
-
-#~ msgid "square"
-#~ msgstr "carrée"
-
-#~ msgid "The file <strong>%s</strong> already exists. If you need to reset any of the configuration items in this file, please delete it first or you may <a href=\"%s\">continue to install</a>."
-#~ msgstr "Le fichier <strong>%s</strong> existe déjà. Pour réinitialiser votre configuration, supprimez d'abord ce fichier ou bien <a href=\"%s\">continuez l'installation</a>."
-
-#~ msgid "Login:"
-#~ msgstr "Login :"
-
-#~ msgid "Login and password"
-#~ msgstr "Identifiant et mot de passe"
-
-#~ msgid "User ID"
-#~ msgstr "Identifiant utilisateur"
-
-#~ msgid "Name"
-#~ msgstr "Nom"
-
-#~ msgid "Add this page to my favorites"
-#~ msgstr "Ajouter cette page à mes favoris"
-
-#~ msgid "Modify numbers in fields to change favorites order."
-#~ msgstr "Modifiez les nombres dans les champs pour changer l'ordre des favoris."
+#~ msgid "permissions"
+#~ msgstr "permissions"
+
+#~ msgid "choose a blog"
+#~ msgstr "choisissez un blog"
+
+#~ msgid "Choose a blog"
+#~ msgstr "Choisissez un blog"
+
+#~ msgid "users"
+#~ msgstr "utilisateurs"
+
+msgid "Default image insertion attributes"
+msgstr "Attributs par défaut pour l'insertion d'image"
Index: locales/fr/plugins.po
===================================================================
--- locales/fr/plugins.po	(revision 782)
+++ locales/fr/plugins.po	(revision 865)
@@ -2,17 +2,22 @@
 # Copyright (C) 2006.
 # Olivier Meunier <olivier@dotclear.net>, 2006.
+#
+# Translators:
+# Franck  <carnet.franck.paul@gmail.com>, 2011.
+# Stéphane Aulery <lkppo@free.fr>, 2012.
+# xave <xave@dotclear.net>, 2012.
 msgid ""
 msgstr ""
-"Project-Id-Version: Dotclear 2\n"
+"Project-Id-Version: Dotclear\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-06 18:11+0100\n"
-"PO-Revision-Date: \n"
-"Last-Translator: Franck Paul <carnet.franck.paul@gmail.com>\n"
-"Language-Team: \n"
-"Language: \n"
+"POT-Creation-Date: 2012-08-13 09:59+0200\n"
+"PO-Revision-Date: 2012-08-13 07:28+0000\n"
+"Last-Translator: xave <xave@dotclear.net>\n"
+"Language-Team: French (http://www.transifex.com/projects/p/dotclear/language/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: French\n"
+"Language: fr\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
 
 msgid "no"
@@ -23,11 +28,11 @@
 
 msgid "Configuration successfully updated"
-msgstr "Configuration mise à jour avec succès"
+msgstr "La configuration a été mise à jour avec succès"
 
 msgid "Settings definition successfully updated"
-msgstr "Définition des paramètres mise à jour avec succès"
+msgstr "Les réglages ont été enregistrés avec succès"
 
 msgid "blog settings"
-msgstr "paramètres du blog"
+msgstr "Réglages du blog"
 
 msgid "Value"
@@ -38,30 +43,30 @@
 
 msgid "Goto:"
-msgstr "Aller à :"
+msgstr "Aller à : "
 
 msgid "Ok"
-msgstr "Valider"
+msgstr "Ok"
 
 msgid "global settings"
-msgstr "paramètres globaux"
+msgstr "Réglages généraux"
 
 msgid "Akismet spam filter"
-msgstr "Filtre de spam Akismet"
+msgstr "Filtre d'indésirable Akismet"
 
 #, php-format
 msgid "Filtered by %s."
-msgstr "Filtré par %s"
+msgstr "Filtré par %s."
 
 msgid "Akismet API key:"
-msgstr "Clé de l'interface Akismet :"
+msgstr "Clé API Akismet :"
 
 msgid "API key verified"
-msgstr "Clé vérifiée"
+msgstr "Clé API vérifiée"
 
 msgid "API key not verified"
-msgstr "Clé non vérifiée"
+msgstr "Clé API non vérifiée"
 
 msgid "Get your own API key"
-msgstr "Obtenez votre clé Akismet"
+msgstr "Obtenez votre propre clé API"
 
 msgid "Antispam"
@@ -69,5 +74,5 @@
 
 msgid "Delete junk comments older than"
-msgstr "Supprimer les commentaires indésirables après"
+msgstr "Supprimer les commentaires indésirables âgés de plus de"
 
 msgid "days"
@@ -75,9 +80,9 @@
 
 msgid "IP Blacklist / Whitelist Filter"
-msgstr "Liste noire / Liste blanche IP"
+msgstr "Filtre de liste noire et blanche d'IP"
 
 #, php-format
 msgid "Filtered by %1$s with rule %2$s."
-msgstr "Filtré par %1$s avec la règle %2$s."
+msgstr "Flitré par %1$s avec la règle %2$s."
 
 msgid "IP address has been successfully added."
@@ -85,5 +90,5 @@
 
 msgid "IP addresses have been successfully removed."
-msgstr "L'adresse IP a été supprimée avec succès."
+msgstr "L'adresse IP a été retirée avec succès."
 
 msgid "Blacklist"
@@ -94,5 +99,5 @@
 
 msgid "Add an IP address: "
-msgstr "Ajouter une adresse IP"
+msgstr "Ajouter une adresse IP : "
 
 msgid "Global IP"
@@ -103,34 +108,34 @@
 
 msgid "No IP address in list."
-msgstr "Aucune adresse IP dans la liste."
+msgstr "Pas d'adresse IP dans la liste."
 
 msgid "IP list"
-msgstr "Liste d'IP"
+msgstr "Liste IP"
 
 msgid "Checks sender IP address against DNSBL servers"
-msgstr "Vérifie l'adresse IP de l'auteur sur des serveurs DNSBL"
+msgstr "Contrôle l'adresse IP de l'émetteur via les serveurs DNSBL"
 
 #, php-format
 msgid "Filtered by %1$s with server %2$s."
-msgstr "Filtré par %1$s avec le serveur %2$s."
+msgstr "Filtré par %1$s par le serveur %2$s."
 
 msgid "IP Lookup servers"
-msgstr "Serveurs de résolution d'IP"
+msgstr "Serveurs de contrôle d'IP"
 
 msgid "Add here a coma separated list of servers."
-msgstr "Ajoutez ici une liste de serveurs, séparés par des virgules."
+msgstr "Ajouter ici la liste des serveurs séparés par des virgules."
 
 msgid "Checks links in comments against surbl.org"
-msgstr "Vérifie les liens dans les commentaires sur surbl.org"
+msgstr "Contrôle les liens des commentaires via surbl.org"
 
 msgid "Words Blacklist"
-msgstr "Liste de termes interdits"
+msgstr "Liste de mots interdits"
 
 #, php-format
 msgid "Filtered by %1$s with word %2$s."
-msgstr "Filtré par %1$s avec le terme %2$s."
+msgstr "Filtré par %1$s à cause du mot %2$s."
 
 msgid "Words have been successfully added."
-msgstr "Les mots ont été ajouté avec succès."
+msgstr "Les mots ont été ajoutés avec succès."
 
 msgid "Word has been successfully added."
@@ -138,8 +143,8 @@
 
 msgid "Words have been successfully removed."
-msgstr "Les mots ont été supprimés avec succès."
-
-msgid "Add a word"
-msgstr "Ajouter un mot"
+msgstr "Les mots ont été retirés avec succès."
+
+msgid "Add a word "
+msgstr "Ajouter un mot "
 
 msgid "Global word"
@@ -156,11 +161,11 @@
 
 msgid "Create default wordlist"
-msgstr "Créer une liste par défaut"
+msgstr "Créer une liste de mots par défaut"
 
 msgid "This word exists"
-msgstr "Ce mot existe"
+msgstr "Ce mot est déjà présent"
 
 msgid "No description"
-msgstr "Aucune description"
+msgstr "Pas de description"
 
 #, php-format
@@ -169,16 +174,16 @@
 
 msgid "Unknown filter."
-msgstr "Filtre inconnu"
+msgstr "Filtre inconnu."
 
 msgid "This comment is a spam:"
-msgstr "Ce commentaire est un indésirable :"
+msgstr "Ce commentaire est indésirable :"
 
 #, php-format
 msgid "(including %d spam comment)"
-msgstr "(dont %d commentaire indésirable)"
+msgstr "(incluant %d commentaire indésirable)"
 
 #, php-format
 msgid "(including %d spam comments)"
-msgstr "(dont %d commentaires indésirables)"
+msgstr "(incluant %d commentaires indésirables)"
 
 msgid "Spam moderation"
@@ -186,21 +191,21 @@
 
 msgid "Spam"
-msgstr "Spam"
+msgstr "Indésirable"
 
 msgid "Ham"
-msgstr "Non spam"
+msgstr "Désirable"
 
 msgid "Filter does not exist."
-msgstr "Le filtre n'existe pas."
+msgstr "Ce filtre n'existe pas."
 
 msgid "Filter has no user interface."
-msgstr "Le filtre n'a pas d'interface utilisateur."
+msgstr "Ce filtre n'a pas de réglages."
 
 #, php-format
 msgid "%s configuration"
-msgstr "%s configuration"
+msgstr "configuration %s"
 
 msgid "Information"
-msgstr "Informations"
+msgstr "Information"
 
 msgid "Spam comments have been successfully deleted."
@@ -208,8 +213,8 @@
 
 msgid "Junk comments:"
-msgstr "Commentaires indésirables :"
+msgstr "Commentaires indésirables :"
 
 msgid "Published comments:"
-msgstr "Commentaires publiés :"
+msgstr "Commentaires publiés :"
 
 msgid "Delete all spams"
@@ -218,5 +223,5 @@
 #, php-format
 msgid "All spam comments older than %s day(s) will be automatically deleted."
-msgstr "Tous les indésirables de plus de %s jour(s) seront automatiquement supprimés."
+msgstr "Tous les commentaires indésirables âgés d'au moins %s jour(s) seront supprimés automatiquement."
 
 msgid "You can modify this duration in "
@@ -227,8 +232,8 @@
 
 msgid "Filters configuration has been successfully saved."
-msgstr "La configuration des filtres a été enregistrée avec succès."
+msgstr "La configurations des filtres a été enregistrée avec succès."
 
 msgid "Available spam filters"
-msgstr "Filtres disponibles"
+msgstr "Filtres d'indésirable disponibles"
 
 msgid "Order"
@@ -239,5 +244,5 @@
 
 msgid "Auto Del."
-msgstr "Suppr. Auto"
+msgstr "Auto suppr."
 
 msgid "Filter name"
@@ -260,5 +265,5 @@
 
 msgid "Attachments"
-msgstr "Fichiers attachés"
+msgstr "Annexes"
 
 msgid "remove"
@@ -272,8 +277,8 @@
 
 msgid "Blogroll"
-msgstr "Liens / Blogroll"
+msgstr "Liste des liens"
 
 msgid "manage blogroll"
-msgstr "gérer la liste de liens"
+msgstr "Gestion de la liste des liens"
 
 msgid "Links"
@@ -284,11 +289,11 @@
 
 msgid "Home page only"
-msgstr "Page d'accueil uniquement"
+msgstr "En page d'accueil seulement"
 
 msgid "You must provide a link title"
-msgstr "Vous devez indiquer un titre de lien"
+msgstr "Vous devez fournir un titre de lien"
 
 msgid "You must provide a link URL"
-msgstr "Vous devez indiquer une URL"
+msgstr "Vous devez fournir une URL de lien"
 
 msgid "You need to provide a XBEL or OPML file."
@@ -296,20 +301,20 @@
 
 msgid "File is not in XML format."
-msgstr "Le fichier n'est pas au format XML."
+msgstr "Ce fichier n'est pas au format XML."
 
 msgid "No such link or title"
-msgstr "Lien ou catégorie inexistant"
+msgstr "Pas de lien ou de titre"
 
 msgid "Return to blogroll"
-msgstr "Retour à la liste des liens"
+msgstr "Retourner à la liste des liens"
 
 msgid "Category has been successfully updated"
-msgstr "Catégorie mise à jour avec succès"
+msgstr "La catégorie a été mise à jour avec succès"
 
 msgid "Edit category"
-msgstr "Modifier une catégorie"
+msgstr "Modifier la catégorie"
 
 msgid "Link has been successfully updated"
-msgstr "Lien mis à jour avec succès"
+msgstr "Le lien a été mis à jour avec succès"
 
 msgid "Edit link"
@@ -320,77 +325,77 @@
 
 msgid "_xfn_Me"
-msgstr "Moi"
+msgstr "_xfn_Me"
 
 msgid "_xfn_Another link for myself"
-msgstr "Autre lien m'appartenant"
+msgstr "_xfn_Another link for myself"
 
 msgid "_xfn_Friendship"
-msgstr "Amitié"
+msgstr "_xfn_Friendship"
 
 msgid "_xfn_Contact"
-msgstr "Contact"
+msgstr "_xfn_Contact"
 
 msgid "_xfn_Acquaintance"
-msgstr "Connaissance"
+msgstr "_xfn_Acquaintance"
 
 msgid "_xfn_Friend"
-msgstr "Ami(e)"
+msgstr "_xfn_Friend"
 
 msgid "_xfn_Physical"
-msgstr "Physique"
+msgstr "_xfn_Physical"
 
 msgid "_xfn_Met"
-msgstr "Rencontré(e)"
+msgstr "_xfn_Met"
 
 msgid "_xfn_Professional"
-msgstr "Professionnel"
+msgstr "_xfn_Professional"
 
 msgid "_xfn_Co-worker"
-msgstr "Camarade de travail"
+msgstr "_xfn_Co-worker"
 
 msgid "_xfn_Colleague"
-msgstr "Collègue"
+msgstr "_xfn_Colleague"
 
 msgid "_xfn_Geographical"
-msgstr "Géographique"
+msgstr "_xfn_Geographical"
 
 msgid "_xfn_Co-resident"
-msgstr "Colocataire"
+msgstr "_xfn_Co-resident"
 
 msgid "_xfn_Neighbor"
-msgstr "Voisin(e)"
+msgstr "_xfn_Neighbor"
 
 msgid "_xfn_Family"
-msgstr "Famille"
+msgstr "_xfn_Family"
 
 msgid "_xfn_Child"
-msgstr "Enfant"
+msgstr "_xfn_Child"
 
 msgid "_xfn_Parent"
-msgstr "Parent"
+msgstr "_xfn_Parent"
 
 msgid "_xfn_Sibling"
-msgstr "Frère/Soeur"
+msgstr "_xfn_Sibling"
 
 msgid "_xfn_Spouse"
-msgstr "Époux/Épouse"
+msgstr "_xfn_Spouse"
 
 msgid "_xfn_Kin"
-msgstr "Famille"
+msgstr "_xfn_Kin"
 
 msgid "_xfn_Romantic"
-msgstr "Romantique"
+msgstr "_xfn_Romantic"
 
 msgid "_xfn_Muse"
-msgstr "Muse"
+msgstr "_xfn_Muse"
 
 msgid "_xfn_Crush"
-msgstr "Bluette"
+msgstr "_xfn_Crush"
 
 msgid "_xfn_Date"
-msgstr "Petit(e) ami(e)"
+msgstr "_xfn_Date"
 
 msgid "_xfn_Sweetheart"
-msgstr "Ami(e)"
+msgstr "_xfn_Sweetheart"
 
 msgid "Nothing to import"
@@ -398,5 +403,5 @@
 
 msgid "Import operation cancelled."
-msgstr "Importation annulée."
+msgstr "L'importation a été annulée."
 
 msgid "Items order has been successfully updated"
@@ -404,14 +409,14 @@
 
 msgid "Items have been successfully removed."
-msgstr "Éléments supprimés avec succès."
+msgstr "Les éléments ont été retirés avec succès."
 
 msgid "Link has been successfully created."
-msgstr "Lien créé avec succès."
+msgstr "Le lien a été créé avec succès."
 
 msgid "category has been successfully created."
-msgstr "Catégorie mise à jour avec succès."
+msgstr "La catégorie a été créée avec succès."
 
 msgid "links have been successfully imported."
-msgstr "Liens importés avec succès."
+msgstr "Les liens ont été importés avec succès."
 
 msgid "URL"
@@ -428,5 +433,5 @@
 
 msgid "Are you sure you want to delete selected links?"
-msgstr "Êtes-vous certain de vouloir supprimer les liens sélectionnés ?"
+msgstr "Êtes-vous sûr de vouloir supprimer ces liens ?"
 
 msgid "The link list is empty."
@@ -443,8 +448,8 @@
 
 msgid "OPML or XBEL File:"
-msgstr "Fichier OPML ou XBEL :"
+msgstr "Fichier OPML ou XBEL :"
 
 msgid "Import"
-msgstr "Importer"
+msgstr "Importation"
 
 msgid "Light linear gradient"
@@ -452,5 +457,5 @@
 
 msgid "Medium linear gradient"
-msgstr "Dégradé linéaire moyen"
+msgstr "Dégragé linéaire moyen"
 
 msgid "Dark linear gradient"
@@ -458,11 +463,11 @@
 
 msgid "Solid color"
-msgstr "Couleur unie"
+msgstr "Couleur"
 
 msgid "Custom..."
-msgstr "Personnalisé..."
+msgstr "Personnalisé…"
 
 msgid "Blowup configuration"
-msgstr "Configuration Blowup"
+msgstr "Configuration de Blowup"
 
 msgid "Predefined styles"
@@ -476,8 +481,8 @@
 
 msgid "For the following reasons, images cannot be created. You won't be able to change some background properties."
-msgstr "Pour les raisons qui suivent, les images ne pouvant être créées, vous ne pourrez pas changer certaines propriétés."
+msgstr "Pour les raisons suivantes, les images n'ont pu être créées. Vous ne pourrez pas changer certaines propriétés de fond."
 
 msgid "Theme configuration has been successfully updated."
-msgstr "La configuration du thème a été mise à jour avec succès."
+msgstr "La configuration du thème a été enregistrée avec succès."
 
 msgid "General"
@@ -485,29 +490,29 @@
 
 msgid "Background color:"
-msgstr "Couleur de fond&nbsp;:"
+msgstr "Couleur de fond :"
 
 msgid "Background color fill:"
-msgstr "Remplissage de la couleur de fond&nbsp;:"
+msgstr "Couleur de remplissage du fond :"
 
 msgid "Main text font:"
-msgstr "Police du texte principal&nbsp;:"
+msgstr "Police du texte principal :"
 
 msgid "Main text font size:"
-msgstr "Taille du texte principal&nbsp;:"
+msgstr "Taille de police du texte principal :"
 
 msgid "Main text color:"
-msgstr "Couleur du texte principal&nbsp;:"
+msgstr "Couleur du texte principal :"
 
 msgid "Text line height:"
-msgstr "Hauteur des lignes :"
+msgstr "Hauteur des lignes de texte :"
 
 msgid "Links color:"
-msgstr "Couleur des liens&nbsp;:"
+msgstr "Couleur des liens :"
 
 msgid "Visited links color:"
-msgstr "Couleurs des liens visités&nbsp;:"
+msgstr "Couleur des liens visités :"
 
 msgid "Focus links color:"
-msgstr "Couleur des liens survolés&nbsp;:"
+msgstr "Couleur des liens ayant le focus :"
 
 msgid "Page top"
@@ -515,5 +520,5 @@
 
 msgid "Prelude color:"
-msgstr "Couleur du prélude&nbsp;:"
+msgstr "Couleur du prélude :"
 
 msgid "Hide main title"
@@ -521,23 +526,23 @@
 
 msgid "Main title font:"
-msgstr "Police du titre principal&nbsp;:"
+msgstr "Police du titre principal :"
 
 msgid "Main title font size:"
-msgstr "Taille du titre principal&nbsp;:"
+msgstr "Taille de police du titre principal :"
 
 msgid "Main title color:"
-msgstr "Couleur du titre principal&nbsp;:"
+msgstr "Couleur du titre principal :"
 
 msgid "Main title alignment:"
-msgstr "Alignement du titre principal&nbsp;:"
+msgstr "Alignement du titre principal :"
 
 msgid "center"
-msgstr "centre"
+msgstr "centré"
 
 msgid "left"
-msgstr "gauche"
+msgstr "à gauche"
 
 msgid "right"
-msgstr "droite"
+msgstr "à droite"
 
 msgid "Main title position (x:y)"
@@ -545,90 +550,90 @@
 
 msgid "Top image"
-msgstr "Image d'en-tête"
+msgstr "Image de haut de page"
 
 msgid "Choose \"Custom...\" to upload your own image."
-msgstr "Choisissez \"Personnalisé...\" pour déposer votre propre image."
+msgstr "Choisissez « Personnalisé… » pour téléverser votre propre image."
 
 msgid "Add your image:"
-msgstr "Ajouter votre image&nbsp;:"
+msgstr "Ajouter votre image :"
 
 #, php-format
 msgid "JPEG or PNG file, 800 pixels wide, maximum size %s"
-msgstr "Fichier JPEG ou PNG, 800 pixels de large et de taille maximale %s"
+msgstr "Fichier JPEG ou PNG, 800 pixels de large maximum, taille maximum de %s"
 
 msgid "Sidebar"
-msgstr "Bandeau"
+msgstr "Volet"
 
 msgid "Sidebar position:"
-msgstr "Position du bandeau"
+msgstr "Position du volet :"
 
 msgid "Sidebar text font:"
-msgstr "Police du texte du bandeau&nbsp;:"
+msgstr "Police du texte du volet :"
 
 msgid "Sidebar text font size:"
-msgstr "Taille du texte du bandeau&nbsp;:"
+msgstr "Taille de police du texte du volet :"
 
 msgid "Sidebar text color:"
-msgstr "Couleur du texte du bandeau&nbsp;:"
+msgstr "Couleur du texte du volet :"
 
 msgid "Sidebar titles font:"
-msgstr "Police des titres du bandeau&nbsp;:"
+msgstr "Police des titres du volet :"
 
 msgid "Sidebar titles font size:"
-msgstr "Taille des titres du bandeau&nbsp;:"
+msgstr "Taille de police des titres du volet :"
 
 msgid "Sidebar titles color:"
-msgstr "Couleur des titres du bandeau&nbsp;:"
+msgstr "Couleur des titres du volet :"
 
 msgid "Sidebar 2nd level titles font:"
-msgstr "Police des titres de niveau 2 du bandeau&nbsp;:"
+msgstr "Police des titres secondaires du volet :"
 
 msgid "Sidebar 2nd level titles font size:"
-msgstr "Taille des titres de niveau 2 du bandeau&nbsp;:"
+msgstr "Taille de police des titres secondaires du volet :"
 
 msgid "Sidebar 2nd level titles color:"
-msgstr "Couleur des titres de niveau 2 du bandeau&nbsp;:"
+msgstr "Couleur des titres secondaires du volet :"
 
 msgid "Sidebar lines color:"
-msgstr "Couleur des lignes du bandeau&nbsp;:"
+msgstr "Couleur des lignes du volet :"
 
 msgid "Sidebar links color:"
-msgstr "Couleur des liens du bandeau&nbsp;:"
+msgstr "Couleur des liens du volet :"
 
 msgid "Sidebar visited links color:"
-msgstr "Couleurs des liens vistés du bandeau&nbsp;:"
+msgstr "Couleur des liens visités du volet :"
 
 msgid "Sidebar focus links color:"
-msgstr "Couleurs des liens survolés du bandeau&nbsp;:"
+msgstr "Couleur des liens du volet ayant le focus :"
 
 msgid "Date title font:"
-msgstr "Police des titres de dates&nbsp;:"
+msgstr "Police du titre des dates :"
 
 msgid "Date title font size:"
-msgstr "Taille des titres de dates&nbsp;:"
+msgstr "Taille de police du titre des dates :"
 
 msgid "Date title color:"
-msgstr "Couleur des titres de date&nbsp;:"
+msgstr "Couleur du titre des dates :"
 
 msgid "Entry title font:"
-msgstr "Police des titres de billet&nbsp;:"
+msgstr "Police du titre des billets :"
 
 msgid "Entry title font size:"
-msgstr "Taille des titres des billets&nbsp;:"
+msgstr "Taille de police du titre des billets :"
 
 msgid "Entry title color:"
-msgstr "Couleur des titres des billets&nbsp;:"
+msgstr "Couleur du titre des billets :"
 
 msgid "Comment background color:"
-msgstr "Couleur du fond des commentaires&nbsp;:"
+msgstr "Couleur de fond des commentaires :"
 
 msgid "Comment text color:"
-msgstr "Couleur du texte des commentaires&nbsp;:"
+msgstr "Couleur du texte des commentaires :"
 
 msgid "My comment background color:"
-msgstr "Couleur du fond de mes commentaires&nbsp;:"
+msgstr "Couleur de fond de mes commentaires :"
 
 msgid "My comment text color:"
-msgstr "Couleur du texte de mes commentaires&nbsp;:"
+msgstr "Couleur du texte de mes commentaires :"
 
 msgid "Footer"
@@ -636,17 +641,17 @@
 
 msgid "Footer font:"
-msgstr "Police du pied de page&nbsp;:"
+msgstr "Police du pied de page :"
 
 msgid "Footer font size:"
-msgstr "Taille du texte du pied de page&nbsp;:"
+msgstr "Taille de police du pied de page :"
 
 msgid "Footer color:"
-msgstr "Couleur du texte du pied de page&nbsp;:"
+msgstr "Couleur du pied de page :"
 
 msgid "Footer links color:"
-msgstr "Couleur des liens du pied de page&nbsp;:"
+msgstr "Couleur des liens du pied de page :"
 
 msgid "Footer background color:"
-msgstr "Couleur de fond du pied de page&nbsp;:"
+msgstr "Couleur de fond du pied de page :"
 
 msgid "Additional CSS"
@@ -654,8 +659,8 @@
 
 msgid "Configuration import / export"
-msgstr "Import / export de configuration"
+msgstr "Configuration de l'import/export"
 
 msgid "You can share your configuration using the following code. To apply a configuration, paste the code, click on \"Apply code\" and save."
-msgstr "Vous pouvez partager votre configuration en utilisant le code suivant. Pour appliquer une configuration, copiez le code, cliquez sur \"Appliquer le code\" et enregistrez."
+msgstr "Vous pouvez partager votre configuration en utilisant le code suivant. Pour appliquer une configuration, copiez le code, cliquez sur « Appliquer le code », puis sauvegardez."
 
 msgid "Copy this code:"
@@ -663,24 +668,24 @@
 
 msgid "default"
-msgstr "par défaut"
+msgstr "défaut"
 
 msgid "At least one of the following functions is not available: imagecreatetruecolor, imagepng & imagecreatefrompng."
-msgstr "L'une de ces fonctions au moins est indisponible : imagecreatetruecolor, imagepng & imagecreatefrompng."
+msgstr "Au moins une des fonctions suivantes n'est pas disponible : imagecreatetruecolor, imagepng et imagecreatefrompng."
 
 msgid "The 'public' directory does not exist."
-msgstr "Le répertoire 'public' n'existe pas."
+msgstr "Le répertoire ‘public’ n'existe pas."
 
 #, php-format
 msgid "The '%s' directory cannot be modified."
-msgstr "Le répertoire '%s' ne peut pas être modifié."
+msgstr "Le répertoire ‘%s’ ne peut être modifié."
 
 msgid "Unable to create images."
-msgstr "Impossible de créer les images."
+msgstr "Impossible de créer des images."
 
 msgid "Invalid file type."
-msgstr "Type de fichier non valide."
+msgstr "Type de fichier invalide."
 
 msgid "Uploaded image is not 800 pixels wide."
-msgstr "L'image fournie de fait pas 800 pixels de large."
+msgstr "L'image soumise ne fait pas 800 pixels de large."
 
 msgid "Unable to open image."
@@ -688,5 +693,5 @@
 
 msgid "Checks trackback source for a link to the post"
-msgstr "Vérifie si la source du rétrolien possède un lien vers le billet"
+msgstr "Contrôle si la source du rétrolien comporte un lien vers le billet"
 
 msgid "Import/Export"
@@ -694,36 +699,48 @@
 
 msgid "Flat file export"
-msgstr "Exporter un fichier texte"
+msgstr "Fichier d'exportation « à plat »"
 
 msgid "Exports a blog or a full Dotclear installation to flat file."
-msgstr "Exporte un blog ou toutes les données de Dotclear dans un fichier texte."
+msgstr "Exporte un blog ou une installation Dotclear complète vers un fichier « à plat »."
 
 msgid "Export file not found."
-msgstr "Fichier d'export non trouvé."
-
-msgid "Export a blog"
-msgstr "Exporter un blog"
+msgstr "Le fichier d'export n'a pas été trouvé."
+
+msgid "Failed to compress export file."
+msgstr ""
+
+#, fuzzy
+msgid "Single blog"
+msgstr "Importe un blog"
 
 #, php-format
 msgid "This will create an export of your current blog: %s"
-msgstr "Ceci va exporter le contenu du blog en cours : %s."
+msgstr "Cela créera un export du blog courant : %s"
+
+#, fuzzy
+msgid "Compress file"
+msgstr "Fichiers du thème"
+
+msgid "You may also want to download your media directory as a zip file"
+msgstr "Vous pouvez également télécharger votre répertoire de média sous forme de fichier archive zip"
 
 msgid "Export"
-msgstr "Exporter"
-
-msgid "You may also want to download your media directory as a zip file"
-msgstr "Vous pouvez également télécharger votre répertoire de médias au format zip."
-
-msgid "Export all content"
-msgstr "Exporter tout le contenu"
+msgstr "Export"
+
+msgid "Multiple blogs"
+msgstr ""
+
+#, fuzzy
+msgid "This will create an export of all the content of your database."
+msgstr "Attention : Cela supprimera au préalable tout le contenu de votre base de données à l'exception des utilisateurs."
 
 msgid "Congratulation!"
-msgstr "Félicitations !"
+msgstr "Bravo !"
 
 msgid "Your blog has been successfully imported. Welcome on Dotclear 2!"
-msgstr "Votre blog a été importé avec succès. Bienvenue sur Dotclear 2 !"
+msgstr "Votre blog a été importé avec succès. Bienvenue sur Dotclear 2 !"
 
 msgid "Why don't you blog this now?"
-msgstr "Pourquoi ne pas le bloguer maintenant ?"
+msgstr "Pourquoi ne bloguez-vous pas cela maintenant ?"
 
 msgid "or"
@@ -731,21 +748,21 @@
 
 msgid "visit your dashboard"
-msgstr "vous rendre sur votre tableau de bord"
+msgstr "voir votre tableau de bord"
 
 msgid "Dotclear 1.2 import"
-msgstr "Importer depuis Dotclear 1.2"
+msgstr "Importation depuis Dotclear 1.2"
 
 msgid "Import a Dotclear 1.2 installation into your current blog."
-msgstr "Importe un blog Dotclear 1.2 dans votre blog en cours."
+msgstr "Importer une installation Dotclear 1.2 dans votre blog courant."
 
 #, php-format
 msgid "This will import your Dotclear 1.2 content as new content in the current blog: %s."
-msgstr "Ceci va importer votre blog Dotclear 1.2 comme un nouveau contenu dans le blog en cours : %s."
+msgstr "Cela importera votre contenu Dotclear 1.2 comme nouveau contenu dans le blog courant : %s."
 
 msgid "Please note that this process will empty your categories, blogroll, entries and comments on the current blog."
-msgstr "Veuillez noter que cette opération va vider vos catégories, liens, billets et commentaires sur le blog en cours."
+msgstr "Notez que cela supprimera les catégories, liste de liens, billets et commentaires actuels de votre blog courant. "
 
 msgid "Depending on the size of your blog, it could take a few minutes."
-msgstr "Selon la taille de votre blog, ceci peut prendre quelques minutes."
+msgstr "Cela peut prendre plusieurs minutes en fonction de la taille de votre blog."
 
 msgid "General information"
@@ -753,8 +770,8 @@
 
 msgid "Import my blog now"
-msgstr "Importer mon blog"
+msgstr "Importer mon blog maintenant"
 
 msgid "We first need some information about your old Dotclear 1.2 installation."
-msgstr "Nous avons d'abord besoin de renseignements à propos de votre ancienne installation Dotclear 1.2."
+msgstr "Nous avons besoin au préalable de quelques informations à propos de votre installation Dotclear 1.2."
 
 msgid "Entries import options"
@@ -762,65 +779,62 @@
 
 msgid "Number of entries to import at once:"
-msgstr "Nombre de billets à importer à chaque étape :"
+msgstr "Nombre d'éléments à importer à chaque passe :"
 
 msgid "Importing users"
-msgstr "Importe les utilisateurs"
+msgstr "Importation des utilisateurs"
 
 msgid "Importing categories"
-msgstr "Importe les catégories"
+msgstr "Importation des catégories"
 
 msgid "Importing blogroll"
-msgstr "Importe les liens"
+msgstr "Importation de la liste des liens"
 
 #, php-format
 msgid "Importing entries from %d to %d / %d"
-msgstr "Importation des billets %d à %d"
+msgstr "Importation des éléments %d à %d / %d"
 
 msgid "Please read carefully"
-msgstr "Merci de lire attentivement"
+msgstr "Lisez soigneusement"
 
 msgid "Every newly imported user has received a random password and will need to ask for a new one by following the \"I forgot my password\" link on the login page (Their registered email address has to be valid.)"
-msgstr "Chaque utilisateur nouvellement importé a reçu un mot de passe aléatoire et devra en demander un nouveau en suivant le lien \"J'ai oublié mon mot de passe\" sur la page de connexion à l'interface d'aministration."
+msgstr "Chaque utilisateur nouvellement importé a reçu un mot de passe aléatoire et devra en demander un nouveau en cliquant sur le lien « J'ai oublié mon mot de passe » sur la page d'authentification (son adresse email doit être valide)."
 
 #, php-format
 msgid "Please note that Dotclear 2 has a new URL layout. You can avoid broken links by installing <a href=\"%s\">DC1 redirect</a> plugin and activate it in your blog configuration."
-msgstr "Veuillez noter que Dotclear 2 a un nouveau format d'URL. Vous pouvez éviter les liens morts en installant le plugin <a href=\"%s\">DC1 redirect</a> et en l'activant dans la configuration de votre blog."
+msgstr "Notez que Dotclear a un nouveau schéma d'URL. Vous pouvez éviter les liens brisés en installant l'extension <a href=\"%s\">DC1 redirect</a> et en l'activant dans la configuration de votre blog."
 
 msgid "next step"
-msgstr "étape suivante"
+msgstr "Étape suivante"
 
 msgid "Dotclear tables not found"
-msgstr "Tables Dotclear non trouvées"
+msgstr "Les tables Dotclear n'ont pas été trouvées"
 
 msgid "Feed import"
-msgstr "Importer depuis un flux"
+msgstr "Importation de flux"
 
 msgid "Imports a feed as new entries."
-msgstr "Importe un flux comme nouveaux billets."
+msgstr "Importer un flux comme nouveau contenu"
 
 msgid "Cannot retrieve feed URL."
-msgstr "Impossible d'atteindre l'URL du fil."
+msgstr "Impossible de trouver l'URL du flux."
 
 msgid "No items in feed."
-msgstr "Aucun élément dans le feed."
+msgstr "Aucun élément dans le flux"
 
 msgid "Content successfully imported."
-msgstr "Contenu importé avec succès."
-
-msgid "Import from a feed"
-msgstr "Importer depuis un fil de nouvelles"
+msgstr "Le contenu a été importé avec succès."
 
 #, php-format
 msgid "This will import a feed (RSS or Atom) a as new content in the current blog: %s."
-msgstr "Ceci va importer un fil (RSS ou Atom) comme un nouveau contenu dans le blog en cours : %s."
+msgstr "Cela importera un flux (RSS ou ATOM) comme un nouveau contenu dans le blog courant : %s."
 
 msgid "Feed URL:"
-msgstr "URL du fil"
+msgstr "URL du flux :"
 
 msgid "Flat file import"
-msgstr "Importer depuis un fichier texte"
+msgstr "Importation d'un fichier « à plat »"
 
 msgid "Imports a blog or a full Dotclear installation from flat file."
-msgstr "Importe un blog ou toutes les données depuis un fichier texte."
+msgstr "Importe un blog ou une installation Dotclear complète depuis un fichier « à plat »."
 
 msgid "Single blog successfully imported."
@@ -828,55 +842,60 @@
 
 msgid "Are you sure you want to import a full backup file?"
-msgstr "Êtes-vous certain de vouloir charger un fichier de sauvegarde complet ?"
-
-msgid "Import a single blog"
-msgstr "Importer un blog"
+msgstr "Êtes-vous sûr de vouloir importer un fichier de sauvegarde complet ?"
 
 #, php-format
 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."
+msgstr "Cela importera une sauvegarde d'un blog comme nouveau contenu du blog courant : %s."
 
 msgid "Upload a backup file"
-msgstr "Charger un fichier de sauvegarde"
+msgstr "Téléversez un fichier de sauvegarde"
 
 msgid "or pick up a local file in your public directory"
-msgstr "ou choisissez un fichier local dans votre répertoire public"
-
-msgid "Import a full backup file"
-msgstr "Import d'un fichier de sauvegarde complet"
-
-msgid "Warning: This will reset all the content of your database, except users."
-msgstr "Attention : Ceci va remettre à zéro tout le contenu, sauf les utilisateurs."
+msgstr "ou sélectionnez un fichier local présent dans votre répertoire de média"
+
+#, fuzzy
+msgid "This will reset all the content of your database, except users."
+msgstr "Attention : Cela supprimera au préalable tout le contenu de votre base de données à l'exception des utilisateurs."
+
+msgid "Another file with same name exists."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to extract backup file."
+msgstr "Téléversez un fichier de sauvegarde"
+
+msgid "No backup in compressed file."
+msgstr ""
 
 msgid "WordPress import"
-msgstr "Importer depuis WordPress"
+msgstr "Importation WordPress"
 
 msgid "Import a WordPress installation into your current blog."
-msgstr "Importe un blog WordPress dans votre blog en cours."
+msgstr "Importe une installation WordPress dans le blog courant."
 
 #, php-format
 msgid "This will import your WordPress content as new content in the current blog: %s."
-msgstr "Ceci va importer votre blog WordPress comme un nouveau contenu dans le blog en cours : %s."
+msgstr "Cela importera le contenu WordPress comme un nouveau contenu dans le blog courant : %s."
 
 msgid "We first need some information about your old WordPress installation."
-msgstr "Nous avons d'abord besoin de renseignements à propos de votre ancienne installation WordPress."
+msgstr "Nous avons besoin au préalable de quelques informations au sujet de votre ancienne installation WordPress."
 
 msgid "WordPress and Dotclear's handling of categories are quite different. You can assign several categories to a single post in WordPress. In the Dotclear world, we see it more like \"One category, several tags.\" Therefore Dotclear can only import one category per post and will chose the lowest numbered one. If you want to keep a trace of every category, you can import them as tags, with an optional prefix."
-msgstr "WordPress et Dotclear gèrent les catégories différemment. Dans WordPress, un article peut être classé dans plusieurs catégories, alors que dans Dotclear, on voit ça plutôt comme \"Une catégorie, plusieurs mots-clefs.\" Dotclear ne peut donc importer qu'une seule catégorie par article et choisira dans ce cas la première créée. Si vous désirez garder une trace de chaque catégorie, vous pouvez les importer en tant que mots-clefs, avec un préfixe optionnel."
+msgstr "La gestion des catégories chez WordPress et Dotclear est tout à fait différente. Vous pouvez assigner plusieurs catégories à un seul poste dans WordPress. Dans le monde Dotclear, nous le voyons davantage comme « une catégorie, plusieurs mot-clés ». Par conséquent Dotclear peut seulement importer une catégorie par billet et il choisira celui de plus petit numéro. Si vous voulez conserver une trace de chaque catégorie, vous pouvez les importer sous forme de mot-clés, avec un préfixe optionnel."
 
 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 importing your blog, as Dotclear allows you to actually keep your posts uncategorized."
-msgstr "Par contre, il est impossible dans WordPress de ne pas assigner une catégorie à un article, c'est pourquoi lors de l'installation est créée une première catégorie appelée <i>\"Non classée\"</i>. Si vous n'avez pas modifié cette catégorie, l'importation peut simplement l'ignorer. En effet, Dotclear vous permet d'avoir des articles sans catégorie."
+msgstr "D'autre part, dans WordPress, un billet ne peut pas être sans catégorie, et une installation par défaut possède systématiquement une première catégorie nommée <i>« sans catégorie »</ i>. Si vous n'avez pas changé cette catégorie, vous pouvez simplement l'ignorer lors de l'importation sur votre blog, puisque Dotclear vous permet réellement de conserver votre message sans catégorie."
 
 msgid "Ignore the first category:"
-msgstr "Ignorer la première catégorie :"
+msgstr "Ignorer la première catégorie :"
 
 msgid "Import lowest numbered category on posts:"
-msgstr "Importer la catégorie la plus ancienne sur les articles :"
+msgstr "Importer la catégorie ayant le plus faible numéro dans les billets :"
 
 msgid "Import all categories as tags:"
-msgstr "Importer les catégories comme des mots-clés :"
+msgstr "Importer toutes les catégories comme des mot-clés :"
 
 msgid "Prefix such tags with:"
-msgstr "Préfixer ces mots-clés avec :"
+msgstr "Préfixer les mot-clés avec :"
 
 msgid "Content filters"
@@ -884,39 +903,39 @@
 
 msgid "You may want to process your post and/or comment content with the following filters."
-msgstr "Vous pouvez utiliser les filtres suivants sur vos articles et/ou commentaires."
+msgstr "Vous pouvez formater le contenu de vos billets et commentaires avec les filtres suivants."
 
 msgid "Post content formatter:"
-msgstr "Formatage des articles&nbsp:"
+msgstr "Formatage du contenu des billets :"
 
 msgid "Comment content formatter:"
-msgstr "Formatage des commentaires&nbsp;:"
+msgstr "Formatage du contenu des commentaires :"
 
 msgid "WordPress tables not found"
-msgstr "Tables WordPress non trouvées"
+msgstr "Les tables WordPress n'ont pu être trouvées."
 
 msgid "No file to read."
-msgstr "Aucun fichier lisible."
+msgstr "Aucun fichier à lire."
 
 msgid "File is not a DotClear backup."
-msgstr "Le fichier n'est pas une sauvegarde DotClear."
+msgstr "Ce fichier n'est pas un fichier de sauvegarde Dotclear."
 
 msgid "File is not a single blog export."
-msgstr "Le fichier n'est pas un fichier d'export simple."
+msgstr "Ce fichier n'est pas une exportation d'un blog."
 
 msgid "File is not a full export."
-msgstr "Le fichier n'est pas un fichier d'export complet."
-
-msgid "The backup file does not appear to be well formed."
-msgstr "Le fichier de sauvegarde ne semble pas être correctement formaté"
+msgstr "Ce fichier n'est pas un fichier de sauvegarde complet."
+
+#, php-format
+msgid "ID of \"%3$s\" does not match on record \"%1$s\" at line %2$s of backup file."
+msgstr ""
 
 msgid "Please wait..."
-msgstr "Veuillez patienter..."
-
-# French translation of DotClea"
+msgstr "Veuillez patientez…"
+
 msgid "Maintenance"
 msgstr "Maintenance"
 
 msgid "Optimization successful."
-msgstr "Optimisation réalisée avec succès."
+msgstr "Optimisation terminée avec succès."
 
 msgid "Comments and trackback counted."
@@ -924,12 +943,12 @@
 
 msgid "Templates cache directory emptied."
-msgstr "Répertoire du cache des templates vidé."
+msgstr "Le répertoire de cache des « templates » a été vidé."
 
 msgid "Logs deleted."
-msgstr "Journaux effacés."
+msgstr "Les journaux ont été supprimés."
 
 #, php-format
 msgid "Indexing entry %d to %d."
-msgstr "Index des billets %d à %d"
+msgstr "Indexation des billets %d à %d."
 
 msgid "next"
@@ -937,5 +956,5 @@
 
 msgid "Entries index done."
-msgstr "Index des billets complet."
+msgstr "Indexation des billets effectuée."
 
 msgid "Back"
@@ -944,14 +963,14 @@
 #, php-format
 msgid "Indexing comment %d to %d."
-msgstr "Index des commentaires %d à %d"
+msgstr "Indexation des commentaires %d à %d."
 
 msgid "Comments index done."
-msgstr "Index des commentaires complet."
+msgstr "Indexation des commentaires effectuée."
 
 msgid "Optimize database room"
-msgstr "Optimiser l'espace de la base de données"
+msgstr "Optimise la place occupée par la base de données"
 
 msgid "Vacuum tables"
-msgstr "Nettoyer les tables"
+msgstr "Vidage des tables"
 
 msgid "Counters"
@@ -959,5 +978,5 @@
 
 msgid "Reset comments and ping counters"
-msgstr "Réinitialiser les compteurs des commentaires et rétroliens"
+msgstr "Remet à zéro les compteurs de commentaires et de signalements"
 
 msgid "Search engine index"
@@ -965,23 +984,23 @@
 
 msgid "This may take a very long time"
-msgstr "Ceci peut prendre beaucoup de temps"
+msgstr "Cela peut prendre un certain temps"
 
 msgid "Index all posts"
-msgstr "Indexer tous les billets"
+msgstr "Indexation de tous les billets"
 
 msgid "Index all comments"
-msgstr "Indexer tous les commentaires"
+msgstr "Indexation de tous les commentaires"
 
 msgid "Vacuum logs"
-msgstr "Vider les journaux"
+msgstr "Vidages des journaux"
 
 msgid "Delete all logs"
-msgstr "Supprimer tous les journaux"
+msgstr "Suppression de tous les journaux"
 
 msgid "Empty templates cache directory"
-msgstr "Vider le répertoire du cache des templates"
+msgstr "Vidage du répertoire de cache des « templates »"
 
 msgid "Empty directory"
-msgstr "Vider le répertoire"
+msgstr "Vidage du répertoire"
 
 msgid "Pages"
@@ -997,5 +1016,5 @@
 
 msgid "manage pages"
-msgstr "gérer les pages"
+msgstr "gestion des pages"
 
 msgid "Published on"
@@ -1003,8 +1022,8 @@
 
 msgid "This page's comments feed"
-msgstr "Fil des commentaires de cette page"
+msgstr "Flux des commentaires de cette page"
 
 msgid "You must provide a valid email address."
-msgstr "Vous devez indiquer une adresse email valide."
+msgstr "Vous devez indiquer une adresse e-mail valide."
 
 msgid "Page title"
@@ -1024,5 +1043,5 @@
 
 msgid "Are you sure you want to delete selected pages?"
-msgstr "Êtes-vous certain de vouloir supprimer les pages sélectionnées ?"
+msgstr "Êtes-vous sûr de vouloir supprimer les pages sélectionnées ?"
 
 msgid "New page"
@@ -1030,5 +1049,5 @@
 
 msgid "Selected pages action:"
-msgstr "Action sur les pages sélectionnées :"
+msgstr "Action sur les pages sélectionnées :"
 
 msgid "This page does not exist."
@@ -1045,8 +1064,8 @@
 
 msgid "Are you sure you want to delete this page?"
-msgstr "Êtes-vous certain de vouloir supprimer cette page ?"
+msgstr "Êtes-vous sûr de vouloir supprimer cette page ?"
 
 msgid "Page has been successfully updated."
-msgstr "La page a été mise à jour avec succès."
+msgstr "La page a été modifiée avec succès."
 
 msgid "Page has been successfully created."
@@ -1057,38 +1076,38 @@
 
 msgid "Page status:"
-msgstr "État de la page :"
+msgstr "État de la page :"
 
 msgid "Page position:"
-msgstr "Position de la page :"
+msgstr "Position de la page :"
 
 msgid "Page lang:"
-msgstr "Langue de la page :"
+msgstr "Langue de la page :"
 
 msgid "Page password:"
-msgstr "Mot de passe de la page :"
+msgstr "Mot de passe de la page :"
 
 msgid "Warning: If you set the URL manually, it may conflict with another page."
-msgstr "Attention : si vous indiquez l'URL manuellement, celle-ci peut entrer en conflit avec une autre page."
+msgstr "Attention : si vous définissez vous-même l'URL, elle peut entrer en conflit avec celle d'une autre page."
 
 msgid "Add files to this page"
-msgstr "Ajouter un fichier à la page"
+msgstr "Ajouter des fichiers à cette page"
 
 msgid "Pings"
-msgstr "Pings"
+msgstr "Signalements"
 
 msgid "Pings configuration"
-msgstr "Configuration des pings"
+msgstr "Configuration des signalements"
 
 msgid "Settings have been successfully updated."
-msgstr "Paramètres enregistrés avec succès."
+msgstr "Les réglages ont été modifiés avec succès."
 
 msgid "Activate pings extension"
-msgstr "Activer le module de ping"
+msgstr "Activer l'extension de signalement"
 
 msgid "Service name:"
-msgstr "Nom du service :"
+msgstr "Nom du service :"
 
 msgid "Service URI:"
-msgstr "URI du service :"
+msgstr "URI du service :"
 
 msgid "error"
@@ -1096,11 +1115,11 @@
 
 msgid "Test ping services"
-msgstr "Tester les services de ping"
+msgstr "Tester les services de signalement"
 
 msgid "Check all"
-msgstr "Tout cocher."
+msgstr "Tout sélectionner"
 
 msgid "Pings:"
-msgstr "Pings :"
+msgstr "Signalements :"
 
 msgid "Simple menu"
@@ -1114,5 +1133,5 @@
 
 msgid "All tags"
-msgstr "Tous les mots-clés"
+msgstr "Tous les mot-clés"
 
 msgid "Home"
@@ -1126,5 +1145,5 @@
 
 msgid "Tags"
-msgstr "Mots-clés"
+msgstr "Mot-clés"
 
 msgid "User defined"
@@ -1234,16 +1253,16 @@
 
 msgid "Tags:"
-msgstr "Mots-clés :"
+msgstr "Mot-clés :"
 
 #, php-format
 msgid "Are you sure you want to remove this %s?"
-msgstr "Êtes vous certain de vouloir supprimer ce %s ?"
+msgstr "Êtes-vous sûr de vouloir retirer ce %s ?"
 
 #, php-format
 msgid "Add a %s to this entry"
-msgstr "Ajouter un %s à ce billet"
+msgstr "Ajouter %s à ce billet"
 
 msgid "Choose from list"
-msgstr "Choisir depuis la liste"
+msgstr "Choisir dans la liste"
 
 msgid "all"
@@ -1263,20 +1282,20 @@
 
 msgid "Enter tags separated by coma"
-msgstr "Entrer les mots-clés séparés par une virgule"
+msgstr "Entrez les mot-clés séparés par des virgules"
 
 msgid "Add tags"
-msgstr "Ajouter des mots-clés"
+msgstr "Ajouter des mot-clés"
 
 msgid "Remove tags"
-msgstr "Supprimer des mots-clés"
+msgstr "Retirer des mot-clés"
 
 msgid "Add tags to entries"
-msgstr "Ajouter des mots-clés aux billets"
+msgstr "Ajouter des mot-clés à des billets"
 
 msgid "Tags to add:"
-msgstr "Mots-clés à ajouter :"
+msgstr "Mot-clés à ajouter :"
 
 msgid "Remove selected tags from entries"
-msgstr "Supprimer les mots-clés sélectionnés des billets"
+msgstr "Retirer les mot-clés sélectionnés des billets"
 
 msgid "No tags for selected entries"
@@ -1284,5 +1303,5 @@
 
 msgid "Following tags have been found in selected entries:"
-msgstr "Les mots-clés suivants ont été trouvés dans les billets sélectionnés :"
+msgstr "Les mot-clés suivants ont été trouvés pour les billets sélectionnés :"
 
 msgid "short"
@@ -1293,14 +1312,14 @@
 
 msgid "Tags list format:"
-msgstr "Format de la liste des mots-clés :"
+msgstr "Format de la liste des mot-clés :"
 
 msgid "This tag's comments Atom feed"
-msgstr "Fil Atom des commentaires de ce mot-clé"
+msgstr "Flux Atom des commentaires associés à ce mot-clé"
 
 msgid "This tag's entries Atom feed"
-msgstr "Fil Atom des billets de ce mot-clé"
+msgstr "Flux Atom des billets associés à ce mot-clé"
 
 msgid "Limit (empty means no limit):"
-msgstr "Limite (laisser vide pour aucune limite)"
+msgstr "Limite (laisser vide si pas de limite) :"
 
 msgid "Entries count"
@@ -1311,5 +1330,5 @@
 
 msgid "Link to all tags:"
-msgstr "Lien vers tous les mots-clés :"
+msgstr "Lien vers tous les mot-clés :"
 
 msgid "Edit tag"
@@ -1317,8 +1336,8 @@
 
 msgid "Tag has been successfully renamed"
-msgstr "Mot-clé renommé avec succès"
+msgstr "Le mot-clé a été renommé avec succès"
 
 msgid "Back to tags list"
-msgstr "Retour à la liste des mots-clés"
+msgstr "Retour à la liste des mot-clés"
 
 msgid "Actions for this tag"
@@ -1326,5 +1345,5 @@
 
 msgid "Edit tag name:"
-msgstr "Renommer ce mot-clé :"
+msgstr "Renommer ce mot-clé :"
 
 msgid "Rename"
@@ -1332,5 +1351,5 @@
 
 msgid "Delete this tag:"
-msgstr "Supprimer ce mot-clé :"
+msgstr "Supprimer ce mot-clé :"
 
 msgid "List of entries with this tag"
@@ -1338,8 +1357,8 @@
 
 msgid "Tag has been successfully removed"
-msgstr "Mot-clé supprimé avec succès"
+msgstr "Le mot-clé a été retiré avec succès"
 
 msgid "No tags on this blog."
-msgstr "Aucun mot-clé sur ce blog"
+msgstr "Aucun mot-clé sur ce blog."
 
 msgid "Theme Editor"
@@ -1350,5 +1369,5 @@
 
 msgid "File does not exist."
-msgstr "Le fichier n'existe pas."
+msgstr "Ce fichier n'existe pas."
 
 #, php-format
@@ -1358,18 +1377,18 @@
 #, php-format
 msgid "Unable to write file %s. Please check your theme files and folders permissions."
-msgstr "Impossible d'écrire le fichier %s. Veuillez vérifier les permissions des fichiers et répertoires de votre thème."
+msgstr "Impossible d'écrire le fichier %s. Contrôlez les permissions des fichiers et des répertoires de votre thème."
 
 msgid "Saving document..."
-msgstr "Sauvegarde du document..."
+msgstr "Enregistrement du document…"
 
 msgid "Document saved"
-msgstr "Document sauvegardé"
+msgstr "Document enregistré"
 
 msgid "An error occurred:"
-msgstr "Une erreur s'est produite :"
+msgstr "Une erreur est survenue :"
 
 #, php-format
 msgid "Your current theme on this blog is \"%s\"."
-msgstr "Le thème utilisé actuellement sur votre blog est \"%s\"."
+msgstr "Actuellement votre thème sur ce blog est « %s »."
 
 msgid "You can't edit default theme."
@@ -1377,5 +1396,5 @@
 
 msgid "Please select a file to edit."
-msgstr "Veuillez sélectionner un fichier à modifier."
+msgstr "Sélectionnez un fichier à modifier."
 
 msgid "File editor"
@@ -1384,11 +1403,11 @@
 #, php-format
 msgid "Editing file %s"
-msgstr "Modification du fichier %s"
+msgstr "Édition du fichier %s"
 
 msgid "This file is not writable. Please check your theme files permissions."
-msgstr "Ce fichier ne peut pas être modifié. Veuillez vérifier les permissions des fichiers de votre thème."
+msgstr "Ce fichier n'est pas modifiable. Contrôlez les permissions de vos fichiers de thème."
 
 msgid "Templates files"
-msgstr "Fichiers template"
+msgstr "Fichiers du thème"
 
 msgid "CSS files"
@@ -1429,8 +1448,8 @@
 
 msgid "With entries counts"
-msgstr "Afficher le nombre de billets"
+msgstr "Avec le nombre de billets"
 
 msgid "Subscribe links"
-msgstr "Liens d'abonnement"
+msgstr "Liens de souscription"
 
 msgid "Subscribe"
@@ -1438,14 +1457,14 @@
 
 msgid "Feeds type:"
-msgstr "Types de fil :"
+msgstr "Type de flux :"
 
 msgid "Feed reader"
-msgstr "Lecteur de fils de nouvelles"
+msgstr "Lecteur de flux"
 
 msgid "Somewhere else"
-msgstr "Ailleurs"
+msgstr "Autre part"
 
 msgid "Entries limit:"
-msgstr "Nombre de billets maximum :"
+msgstr "Limite du nombre de billets :"
 
 msgid "Text"
@@ -1453,5 +1472,5 @@
 
 msgid "Text:"
-msgstr "Texte :"
+msgstr "Texte :"
 
 msgid "Last entries"
@@ -1459,8 +1478,8 @@
 
 msgid "Uncategorized"
-msgstr "Non catégorisé"
+msgstr "Sans catégorie"
 
 msgid "Tag:"
-msgstr "Mot-clé :"
+msgstr "Mot-clé :"
 
 msgid "Last comments"
@@ -1468,13 +1487,13 @@
 
 msgid "Comments limit:"
-msgstr "Nombre de commentaires maximum :"
+msgstr "Limite du nombre de commentaires :"
 
 #, php-format
 msgid "This blog's entries %s feed"
-msgstr "Fil %s des billets de ce blog"
+msgstr "Flux %s des billets de ce blog"
 
 #, php-format
 msgid "This blog's comments %s feed"
-msgstr "Fil %s des commentaires de ce blog"
+msgstr "Flux %s des commentaires de ce blog"
 
 msgid "Entries feed"
@@ -1497,5 +1516,5 @@
 
 msgid "Are you sure you want to reset sidebars?"
-msgstr "Êtes-vous certain de vouloir réinitialiser les bandeaux ?"
+msgstr "Êtes-vous sûr de vouloir remettre à zéro les volets ?"
 
 msgid "Available widgets"
@@ -1503,5 +1522,5 @@
 
 msgid "Append to:"
-msgstr "Ajouter à :"
+msgstr "Ajouter à :"
 
 msgid "Add widgets to sidebars"
@@ -1509,8 +1528,8 @@
 
 msgid "Navigation sidebar"
-msgstr "Bandeau de navigation"
+msgstr "Volet de navigation"
 
 msgid "Extra sidebar"
-msgstr "Bandeau d'extra"
+msgstr "Volet d'extra"
 
 msgid "Custom sidebar"
@@ -1536,32 +1555,32 @@
 
 msgid "Widget templates tags"
-msgstr "Marqueurs de template des widgets"
+msgstr "Balise de widget"
 
 msgid "If you are allowed to edit your theme templates, you can directly add widgets as templates tags, with their own configuration."
-msgstr "Si vous avez le droit de modifier les templates de votre thème, vous pouvez directement ajouter des widgets à l'aide de marqueurs de template, avec leur propre configuration."
+msgstr "Si vous êtes autorisé à modifier vos fichiers de thème, vous pouvez ajouter des widgets sous forme de balise, avec leur propre configuration."
 
 msgid "To add a widget in your template, you need to write code like this:"
-msgstr "Pour ajouter un widget dans votre template, vous devez écrire un code comme ceci :"
+msgstr "Pour ajouter un widget à votre thème, vous devez insérer un code similaire à :"
 
 msgid "Widget ID"
-msgstr "Identifiant du widget"
+msgstr "ID du widget"
 
 msgid "Setting name"
-msgstr "Nom du paramètre"
+msgstr "Nom de l'élément de réglage"
 
 msgid "Setting value"
-msgstr "Valeur du paramètre"
+msgstr "Valeur de l'élément de réglage"
 
 msgid "Here are the following available widgets for your blog:"
-msgstr "Voici les widgets disponibles pour votre blog :"
+msgstr "Voici les widgets disponibles pour votre blog :"
 
 msgid "Widget ID:"
-msgstr "Identifiant du widget :"
+msgstr "Identifiant du widget :"
 
 msgid "No setting for this widget"
-msgstr "Aucun paramètre pour ce widget"
+msgstr "Aucun réglage pour ce widget"
 
 msgid "Setting name:"
-msgstr "Nom du paramètre :"
+msgstr "Nom de l'élément de réglage :"
 
 msgid "No widget."
@@ -1572,54 +1591,18 @@
 
 msgid "Remove widget"
-msgstr "Supprimer le widget"
-
-#~ msgid "List"
-#~ msgstr "Liste"
-
-#~ msgid "Return to filters"
-#~ msgstr "Retour aux filtres"
-
-#~ msgid "import"
-#~ msgstr "importer"
-
-#~ msgid "Preview"
-#~ msgstr "Prévisualiser"
-
-#~ msgid "Send"
-#~ msgstr "Envoyer"
-
-#~ msgid "View page"
-#~ msgstr "Voir la page"
-
-#~ msgid "Preview page"
-#~ msgstr "Prévisualiser la page"
-
-#~ msgid "Save order"
-#~ msgstr "Enregistrer l'ordre"
-
-#~ msgid "External media"
-#~ msgstr "Média externe"
-
-#~ msgid "External media selector"
-#~ msgstr "Sélecteur de médias externes"
-
-#~ msgid "Supported media services"
-#~ msgstr "Services de média supportés"
-
-#~ msgid "Please enter the URL of the page containing the video you want to include in your post."
-#~ msgstr "Entrez l'URL de la page contenant la video que vous voulez intégrer à votre billet."
-
-#~ msgid "Page URL:"
-#~ msgstr "URL de la page :"
-
-#~ msgid "Media alignment"
-#~ msgstr "Alignement du média"
-
-#~ msgid "Media title"
-#~ msgstr "Titre du média"
-
-#~ msgid "Unsupported service"
-#~ msgstr "Service non pris en charge"
-
-#~ msgid "Invalid page URL"
-#~ msgstr "URL de la page non valide"
+msgstr "Retirer le widget"
+
+#~ msgid "Export a blog"
+#~ msgstr "Exporter un blog"
+
+#~ msgid "Export all content"
+#~ msgstr "Exporte tout le contenu"
+
+#~ msgid "Import from a feed"
+#~ msgstr "Importer depuis un flux"
+
+#~ msgid "Import a full backup file"
+#~ msgstr "Importer un fichier de sauvegarde complet"
+
+#~ msgid "The backup file does not appear to be well formed."
+#~ msgstr "Le fichier de sauvegarde semble mal formaté."
Index: locales/fr/public.po
===================================================================
--- locales/fr/public.po	(revision 438)
+++ locales/fr/public.po	(revision 221)
@@ -10,8 +10,8 @@
 "Last-Translator: xave <xave@dotclear.net>\n"
 "Language-Team: \n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
 "X-Poedit-Language: French\n"
 
Index: locales/lt/date.po
===================================================================
--- locales/lt/date.po	(revision 813)
+++ locales/lt/date.po	(revision 813)
@@ -0,0 +1,135 @@
+# German translation of DotClear
+# Copyright (C) 2008.
+# Andreas Diller <nendilo@gmail.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Dotclear 2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-04-15 16:27+0200\n"
+"PO-Revision-Date: 2012-04-18 21:10+0100\n"
+"Last-Translator: Paulius Černakauskas <paulius.cernakauskas@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Lithuanian\n"
+"X-Poedit-Country: LITHUANIA\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+msgid "%Y-%m-%d %H:%M"
+msgstr "%d.%m.%Y %H:%M"
+
+msgid "_Jan"
+msgstr "Saus."
+
+msgid "_Feb"
+msgstr "Vas."
+
+msgid "_Mar"
+msgstr "Kov."
+
+msgid "_Apr"
+msgstr "Bal."
+
+msgid "_May"
+msgstr "Geg."
+
+msgid "_Jun"
+msgstr "Bir."
+
+msgid "_Jul"
+msgstr "Liep."
+
+msgid "_Aug"
+msgstr "Rugpj."
+
+msgid "_Sep"
+msgstr "Rugs."
+
+msgid "_Oct"
+msgstr "Spal."
+
+msgid "_Nov"
+msgstr "Lapkr."
+
+msgid "_Dec"
+msgstr "Gruodž."
+
+msgid "January"
+msgstr "sausio"
+
+msgid "February"
+msgstr "vasario"
+
+msgid "March"
+msgstr "kovo"
+
+msgid "April"
+msgstr "balandžio"
+
+msgid "May"
+msgstr "gegužės"
+
+msgid "June"
+msgstr "birželio"
+
+msgid "July"
+msgstr "liepos"
+
+msgid "August"
+msgstr "rugpjūčio"
+
+msgid "September"
+msgstr "rugsėjo"
+
+msgid "October"
+msgstr "spalio"
+
+msgid "November"
+msgstr "lapkričio"
+
+msgid "December"
+msgstr "gruodžio"
+
+msgid "_Mon"
+msgstr "Pr."
+
+msgid "_Tue"
+msgstr "An."
+
+msgid "_Wed"
+msgstr "Tr."
+
+msgid "_Thu"
+msgstr "Kt."
+
+msgid "_Fri"
+msgstr "Pn."
+
+msgid "_Sat"
+msgstr "Š."
+
+msgid "_Sun"
+msgstr "S."
+
+msgid "Monday"
+msgstr "pirmadienį"
+
+msgid "Tuesday"
+msgstr "antradienį"
+
+msgid "Wednesday"
+msgstr "trečiadienį"
+
+msgid "Thursday"
+msgstr "ketvirtadienį"
+
+msgid "Friday"
+msgstr "penktadienį"
+
+msgid "Saturday"
+msgstr "šeštadienį"
+
+msgid "Sunday"
+msgstr "sekmadienį"
+
Index: locales/lt/help/blowupConfig.html
===================================================================
--- locales/lt/help/blowupConfig.html	(revision 813)
+++ locales/lt/help/blowupConfig.html	(revision 813)
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html>
+<head>
+  <title>Blowup theme Konfiguration</title>
+</head>
+
+<body>
+<p>Eine ver&auml;nderten Konfiguration erlaubt eine den eigenen W&uuml;nschen entsprechende Anpassung des Blowup Theme. Um dieses zu erreichen, f&uuml;lle das Konfigurationsfeld aus und w&auml;hle einen vordefinierten Style.</p>
+
+<h3>Farben</h3>
+
+<p>Wenn Du einen Farbwert eingeben willst, dann solltest Du Hexadezimalzahlenformat verwenden. Zum Beispiel: "#FF0000" steht f&uuml;r die Farbe Rot. Du kannst auch die Farbpipette neben dem Farbfeld verwenden.</p>
+<p>Wenn Du nicht weisst, was Hexadezimalformat bedeutet:</p>
+<ul>
+ <li><a href="http://de.wikipedia.org/wiki/Hexadezimale_Farbdefinition">Hexadezimale Farbdefinition</a> (Wikipedia)</li>
+ <li><a href="http://kuler.adobe.com/">Adobe Kuler (Englisch)</a></li>
+ <li><a href="http://colorblender.com/">ColorBlender (Englisch)</a></li>
+ <li><a href="http://www.colorcombos.com/">ColorCombos (Englisch)</a></li>
+</ul>
+
+<h3>Masseinheiten</h3>
+
+<p>Die Festlegung der Seitengr&ouml;sse Deines Blogs erfolgt in folgenden Masseinheiten. Zum Beispiel: "1em". Solltest Du keine Einheit hinter Deinem Wert schreiben, wird Pixel (px) als Standard ausgegeben.</p>
+<p>Folgende Masseinheiten sind zur Verwendung verf&uuml;gbar:</p>
+<ul>
+  <li>px</li>
+  <li>em</li>
+  <li>ex</li>
+  <li>pt</li>
+  <li>%</li>
+</ul>
+
+<h3>Das Bild im Header</h3>
+
+<p>Du kannst ein Bild Deiner Wahl statt des Standardbildes einsetzen.</p>
+
+<p>Wenn Du  "Benutzerdefiniert..." in der Bilderliste ausw&auml;hlst, dann hast Du die M&ouml;glichkeit, Dein eigenes Bild upzuloaden. <strong>Das Dateiformat muss entweder JPG der PNG sein und es muss 800px breit sein.</strong>
+
+<p>Wenn Du ein JPG-Bild uploadest, dann wird automatisch ein Rahmen um das Bild gesetzt. Dies geschieht nicht bei der Verwendung eines PNG-Bildes und die Transparenz wird ebenfalls beibehalten.</p>
+
+<h3>Vordefinierte Styles</h3>
+
+<p>Du kannst Deinen vordefinierten Style aus dem Drop-down Menu "Vordefinierte Styles" w&auml;hlen.
+Wenn Du ein Style ausgew&auml;hlt hast, dann musst Deine &Auml;nderung abspeichern.</p>
+
+<p>Du kannst anschliessend den Style entsprechend Deiner Wahl anpassen.</p>
+
+<h3>Konfiguration Import / Export</h3>
+
+<p>Am Ende der Blowup Einstellungen kannst Du ein Feld mit der Bezeichnung "Konfiguration Import / Export" sehen. Dieses Textfeld beinhaltet die gegenw&auml;rtige Konfiguration. Du kannst diese kopieren und anderen zur Verf&uuml;gung stellen.</p>
+
+<p>Um eine Konfiguration zu importieren, brauchst Du nur das Feld mit Deinen Konfigurationsangaben ausf&uuml;llen. Anschliessend klicke auf "Code anwenden".</p>
+
+</body>
+</html>
Index: locales/lt/help/core_blog_pref.html
===================================================================
--- locales/lt/help/core_blog_pref.html	(revision 813)
+++ locales/lt/help/core_blog_pref.html	(revision 813)
@@ -0,0 +1,145 @@
+<html>
+<head>
+  <title>Blogeinstellungen</title>
+</head>
+
+<body>
+
+<h3>Blogdetails</h3>
+<dl>
+  <dt>Blog ID</dt>
+  <dd>Einmalvergebene ID Deines Blogs. Diese kann nur in der Funktion des Super 
+    Adminstrators vergeben werden..</dd>
+  
+  <dt>Blogname</dt>
+  <dd>Name des Blogs, erforderlich.</dd>
+  
+  <dt>Blog URL</dt>
+  <dd>Vollst&auml;ndige Blog URL. Erforderlich und kann nur in der Funktion des 
+    Super Adminstrators vergeben werden..</dd>
+  
+  <dt>Blogstatus</dt>
+  <dd>
+    <ul>
+      <li><strong>online</strong>: Blog f&uuml;r alle Besucher ge&ouml;ffnet</li>
+      <li><strong>offline</strong>: Blog f&uuml;r  Besucher geschlossen, jedoch offen f&uuml;r Besucher mit Schreibrechten
+      </li>
+      <li><strong>Entfernt</strong>: Blog geschlossen f&uuml;r Besucher und Besucher mit Schreibrechten.</li>
+    </ul>
+  </dd>
+  
+  <dt>Blogbeschreibung</dt>
+  <dd>Hier kannst Du eine Beschreibung Deines Blogs einf&uuml;gen. Verwende einfachen Text ohne Formatierung.</dd>
+</dl>
+
+<h3>Blogkonfiguration</h3>
+<dl>
+  <dt>Name des Eigent&uuml;mer des Blogs</dt>
+  <dd>Name der Person, die f&uuml;r das Blog verantwortlich ist. Es k&ouml;nnte auch der Eigent&uuml;mer oder Herausgeber sein, sofern dieser existiert.</dd>
+  
+  <dt>Copyright Hinweis</dt>
+  <dd>Hinweis &uuml;ber die Urheberrechte des Blogs.</dd>
+  
+  <dt>Standardsprache</dt>
+  <dd>Sprache des Bloginterfaces. Entweder der vorhandenen Landessprache oder, wenn diese nicht verf&uuml;gbar ist, wird Englisch als Standard eingesetzt.
+  </dd>
+  
+  <dt>Blogzeitzone</dt>
+  <dd>Definiert die Zeitzone des Blogs und wird f&uuml;r Kommentare und Trackbacks verwendet.
+  </dd>
+  
+  <dt>Datumsformate</dt>
+  <dd>Das Datumsformat eines Blogeintrages. Weitere Informationen &uuml;ber Datum und Zeitformate siehe unten.
+  </dd>
+  
+  <dt>Zeitformat</dt>
+  <dd>Das Zeitormat eines Blogeintrages. Weitere Informationen &uuml;ber Datum und Zeitformate siehe unten.
+  </dd>
+  
+  <dt>Anzeige .. Eintr&auml;ge pro Seite </dt>
+  <dd>Diese Nummer wird die Begrenzung der Eintr&auml;ge auf der Homepage, der Startseite, der ersten Seite
+  jeder Kategorie und des RSS Feeds sein.</dd>
+  
+  <dt>Kommentare offen lassen f&uuml;r .. Tage</dt>
+  <dd>Die Anzahl der Tage zwischen der Ver&ouml;ffentlichung der Kommentare und Trackbacks nach der Ver&ouml;ffentlichung des Beitrages.
+  Bleibt das Feld frei, alle Kommentare sind offen.</dd>
+  
+  <dt>Anzeige von Smilies in Eintr&auml;gen und Kommentare </dt>
+  <dd>Anzeigeausschnitte von Abk&uuml;rzungen wie :-) oder ;-) als Icons.</dd>
+  
+  <dt>Kommentare akzeptieren</dt>
+  <dd>Globale Einstellung f&uuml;r das Akzeptieren von Kommentare im Blog. Du kannst auch die Priorit&auml;t f&uuml;r jeden einzelnen
+  Eintrag im Blogeintrag selbst setzen.</dd>
+  
+  <dt>Trackbacks akzeptieren</dt>
+  <dd>Globale Einstellung f&uuml;r das Akzptieren von Trackbacks im Blog. Du kannst auch die Priorit&auml;t f&uuml;r jeden einzelnen
+  Eintrag im Blogeintrag selbst setzen.
+  </dd>
+  
+  <dt>Kommentare und Trackbacks moderieren</dt>
+  <dd>Diese Kommentare und Trackbacks werden nur mit Einwilligung des Blogeigent&uuml;mers ver&ouml;ffentlicht.</dd>
+  
+  <dt>Hinzuf&uuml;gen der "nofollow" Anweisung auf Kommentare und Trackbacklinks</dt>
+  <dd>F&uuml;gt ein Attribut dem Kommentar und Trackbacklink bei, das Suchbots nicht erlaubt, diese Links zu verfolgen. 
+  Dieser Antispam-Filter hat seine Wirksamkeit.
+   </dd>
+  
+  <dt>Wiki syntax f&uuml;r Kommentare </dt>
+  <dd>Erlaubt das Verwenden der wiki syntax in Kommentaren.
+  </dd>
+</dl>
+
+<h3>Formatreferenzen</h3>
+<p>Einige Felder k&ouml;nnen in Verh&auml;ltnis zu Datum und Zeit gesetzt werden.
+Hier ist die Referenz:</p>
+
+<ul>
+  <li><strong>%a</strong>: gek&uuml;rzter Wochentag (lokal)</li>
+  <li><strong>%A</strong>: Kompletter Wochentag (lokal)</li>
+  <li><strong>%b</strong>: gek&uuml;rzter Monatsname (lokal)</li>
+  <li><strong>%B</strong>: Kompletter Monatsname (lokal)</li>
+  <li><strong>%c</strong>: Lokale Datum und Zeitangabe</li>
+  <li><strong>%C</strong>: Jahrhundert (Jahr, dividiert durch 100 und
+  abgerundet zwischen 00 und 99)</li>
+  <li><strong>%d</strong>: numerischer Monatstag (von 01 bis 31)</li>
+  <li><strong>%D</strong>: identisch mit %m/%d/%y</li>
+  <li><strong>%e</strong>: numerischer Monatstag (von 01 bis 31)</li>
+  <li><strong>%g</strong>: identisch mit %G, 2stellig.</li>
+  <li><strong>%G</strong>: Jahr  4stellig, entsprechend der Anzahl der Wochen
+  (cf. %V). Format und Wert identisch mit %Y, mit der Ausnahme, dass, wenn die Woche zum vorhergehenden oder nachfolgenden
+  Jahr geh&ouml;rt, das gegenw&auml;rtige Jahr verwendet wird.</li>
+  <li><strong>%h</strong>: identisch mit %b</li>
+  <li><strong>%H</strong>: digitale Uhrzeit, 24H Modus
+  (von 00 bis 23)</li>
+  <li><strong>%I</strong>: digitale Uhrzeit, 12H Modus
+  (von 01 bis 12)</li>
+  <li><strong>%j</strong>: Tag eines Jahres, digital (von 001 bis 366)</li>
+  <li><strong>%m</strong>: Monat, digital (von 1 bis  12)</li>
+  <li><strong>%M</strong>: Minute, digital</li>
+  <li><strong>%n</strong>: Zeilentrennung Character</li>
+  <li><strong>%p</strong>: entweder `am' oder `pm', bezogen zur absoluten Zeit
+  oder abh&auml;ngig von den lokalen Einstellungen.</li>
+  <li><strong>%r</strong>: Stunde, a.m. und p.m. Format</li>
+  <li><strong>%R</strong>: Stunde, 24h Format</li>
+  <li><strong>%S</strong>: Sekunde, digital</li>
+  <li><strong>%t</strong>: tab character</li>
+  <li><strong>%T</strong>: Gegenw&auml;rtige Zeit (identisch mit %H:%M:%S)</li>
+  <li><strong>%u</strong>: Wochentag, digit, von 1 bis 7. (1 steht f&uuml;r Montag)</li>
+  <li><strong>%U</strong>: Wochennummer, der erste Sonntag des Jahres ist der Tag, an dem die erste Woche beginnt.</li>
+  <li><strong>%V</strong>: Wochennummer definiert nach ISO 8601:1988, digital, 
+    von 01 bis 53. Die Woche 1 ist die erste Woche, mit mehr als 4 Tagen im gegenw&auml;rtigen 
+    Jahr, dessen Montag ist der erste Tag. (Verwende %G oder %g f&uuml;r die Jahrelemente 
+    korrespondierend zu der Anzahl der Wochen der in Erw&auml;gung gezogenenen 
+    Zeit.)</li>
+  <li><strong>%W</strong>: Anzahl der Wochen im Jahr, der erste Montag im Jahr ist der Beginn der ersten Woche.</li>
+  <li><strong>%w</strong>: Wochentag, digital, 0 steht f&uuml;r Sonntag</li>
+  <li><strong>%x</strong>: Bevorzugtes Format f&uuml;r den Tag ohne Zeit.</li>
+  <li><strong>%X</strong>: Bevorzugtes Format f&uuml;r die Zeit ohne Datum</li>
+  <li><strong>%y</strong>: Jahr, 2stellig (von 00 bis 99)</li>
+  <li><strong>%Y</strong>: tJahr, 4stellig</li>
+  <li><strong>%Z ou %z</strong>: Zeitzone, Name oder Kurzzeichen</li>
+  <li><strong>%%</strong>: ein Charakter in Worten `%' </li>
+</ul>
+
+</body>
+</html>
Index: locales/lt/help/core_categories.html
===================================================================
--- locales/lt/help/core_categories.html	(revision 813)
+++ locales/lt/help/core_categories.html	(revision 813)
@@ -0,0 +1,43 @@
+<html>
+<head>
+  <title>Kategorien</title>
+</head>
+
+<body>
+<h3>Kategorienliste</h3>
+<dl>
+  <dt>Neue Kategorie erstellen</dt>
+  <dd>Gib Deiner Kategorie den Namen, den Du w&uuml;nschst und
+  klicke auf Speichern. Um den Namen dieser Kategorie zu ver&auml;ndern,
+  klicke auf deren Namen in der Liste.</dd>
+  
+  <dt>Wechseln der Kategoriezuordnung</dt>
+  <dd>Um die Reihenfolge der Kategorien zu &auml;ndern, ziehe diese am 
+  Dreickeck in die gew&uuml;nschte Position und lass sie los. 
+  Anschliessend speichere, was Du ge&auml;ndert hast, in dem Du auf <strong>Reihenfolge speichern</strong> klickst.
+  Solltest Du kein Dreieck sehen, dann verwende das Nummernfeld und gib der Kategorie die gew&uuml;nschte Positionsnummer. 
+  </dd>
+</dl>
+
+<h3>Modifizierung einer Kategorie</h3>
+<dl>
+  <dt>Titel</dt>
+  <dd>Gib Deiner Kategorie den Namen, den Du w&uuml;nschst und
+   klicke auf Speichern. 
+  </dd>
+  
+  <dt>URL</dt>
+  <dd>DotClear erstellt eine Standard URL f&uuml;r diese Kategorie und
+   macht diese damit nach folgendem Beispiel erreichbar: <strong>http://mein-blog.tld/category/Meine-Kategorie</strong>. 
+    Du kannst auf das kleine Schloss rechts vom Namen klicken, um den Namen zu ver&auml;ndern. 
+  </dd>
+  
+  <dt>Beschreibung</dt>
+  <dd>In dem Textfeld kannst Du beschreiben, was diese Kategorie beinhaltet 
+  und es wird angezeigt, wenn Du Deine Kategorie in Deinem Blog aufrufst. Du kannst es mit beliebigem Inhalt f&uuml;llen
+  (Abs&auml;tze, Listenpunkte, etc.) Das Format fuer dieses Feld ist HTML.</dd>
+  <!-- question : tous medias acceptés ? -->
+</dl>
+
+</body>
+</html>
Index: locales/lt/help/core_comments.html
===================================================================
--- locales/lt/help/core_comments.html	(revision 813)
+++ locales/lt/help/core_comments.html	(revision 813)
@@ -0,0 +1,62 @@
+<html>
+<head>
+  <title>Kommentare</title>
+</head>
+
+<body>
+<h3>Filter f&uuml;r die Kommentarliste</h3>
+<dl>
+  <dt>Typ:</dt>
+  <dd>Keine, Kommentare oder Trackbacks.</dd>
+  
+  <dt>Status:</dt>
+  <dd><ul>
+    <li><strong>Junk</strong>: <!-- Pour spampl' ? --></li>
+    <li><strong>unerledigt</strong>: <!-- Modération ? --></li>
+    <li><strong>unver&ouml;ffentlicht</strong>: offline</li>
+    <li><strong>ver&ouml;ffentlicht</strong>: online</li>
+  </ul></dd>
+  
+  <dt>Ordnen nach:</dt>
+  <dd>W&auml;hle: Datum, Artikeltitel, Autor oder Status, 
+  dann w&auml;hle die Reihenfolge.
+  </dd>
+  
+  <dt>Reihenfolge</dt>
+  <dd>W&auml;hle, ob die Liste aufsteigend oder absteigend sortiert werden soll. 
+  </dd>
+  
+  <dt>Kommentatoren</dt>
+  <dd>Diese Suche ist nicht sehr genau. Willst Du nur nach einem Teil des Namens
+   suchen, dann schreibe ein  <strong>*</strong>davor.
+   </dd>
+  
+  <dt>Kommentare pro Seite:</dt>
+  <dd>Erlaubt Dir die Anzahl der Kommentare pro Seite festzulegen.</dd>
+</dl>
+
+<h3>Einen Kommentar modifzieren oder hinzuf&uuml;gen</h3>
+<dl>
+  <dt>Autor:</dt>
+  <dd>Autorenname. Pflichtfeld</dd>
+  
+  <dt>Email:</dt>
+  <dd>E-mailadresse des Autoren</dd>
+  
+  <dt>Website:</dt>
+  <dd>URL der Website des Autoren</dd>
+  
+  <dt>Status:</dt>
+  <dd><ul>
+    <li><strong>Junk</strong>: <!-- Pour spampl' ? --></li>
+    <li><strong>unerledigt</strong>: <!-- Modération ? --></li>
+    <li><strong>unver&ouml;ffentlicht</strong>: offline</li>
+    <li><strong>ver&ouml;ffentlicht</strong>: online</li>
+  </ul></dd>
+  
+  <dt>Kommentar:</dt>
+  <dd>Inhalt des Kommentars und das Format ist HTML.
+  </dd>
+</dl>
+</body>
+</html>
Index: locales/lt/help/core_media.html
===================================================================
--- locales/lt/help/core_media.html	(revision 813)
+++ locales/lt/help/core_media.html	(revision 813)
@@ -0,0 +1,84 @@
+<html>
+<head>
+  <title>Mediamanager</title>
+</head>
+
+<body>
+
+<h3>Medialiste</h3>
+<p>Der Mediamanager zeigt eine &Uuml;bersicht aller Medien, die Du in Deinem Blog, 
+in dem Du gerade arbeitest, verwendest oder hochgeladen hast.</p>
+
+<p>Du klickst auf den Namen oder das Icon oder den Unterordner, um diese ansehen zu k&ouml;nnen.</p>
+
+<p>Wenn Du ein MP3 anklickst, zeigt sich ein kleiner Player und Du kannst die Datei abspielen. Allerdings muss das 
+Flash plugin in Deinem Browser installiert sein, um MP3 abspielen zu koennen.</p>
+
+<p>Bilder werden sofern m&ouml;glich mit einem Thumbnail dargestellt.</p>
+
+<h3>Dateien hinzuf&uuml;gen</h3>
+<dl>
+  <dt>Ausw&auml;hlen der Datei</dt>
+  <dd>Du w&auml;hlst die Datei lokal auf Deinem Rechner aus. Eine Datei gr&ouml;sser 
+    als die maximale Gr&ouml;sse wird nicht hochgeladen.</dd>
+  <dt>Titel</dt>
+  <dd>Opptional, ob Du deiner Datei einen Titel geben m&ouml;chtest.</dd>
+  <dt>Privat</dt>
+  <dd>&Uuml;berpr&uuml;fe, ob Du die Datei nur privat nutzen willst und diese 
+    kann &ouml;ffentlich nicht abgerufen werden.</dd>
+</dl>
+
+<h3>Neuer Ordner</h3>
+<p>Du kannst Unterordner in Deinem Mediamanger erstellen. Setze einen Namen ein und speichere es ab.</p>
+
+<h3>Mediendetails</h3>
+<p>Diese Seite erlaubt Dir Informationen &uuml;ber die gegenw&auml;rtigen Dateien 
+  und wo Du diese eingesetzt hast, zu erhalten.</p>
+
+<dl>
+  <dt>Dateiname</dt>
+  <dd>Dateinamen wechseln</dd>
+  
+  <dt>Dateititel</dt>
+  <dd>Gib der Datei einen Titel oder behalte den gegenw&auml;rtigen.</dd>
+  
+  <dt>Dateidatum</dt>
+  <dd>&Auml;ndere das Dateidatum.</dd>
+  
+  <dt>Privat</dt>
+  <dd>Suche aus, ob die Datei privat oder &ouml;ffentlich ist.</dd>
+  
+  <dt>Neuer Ordner</dt>
+  <dd>Erlaubt Dir, die Dateien in ein neues Verzeichnis zu legen.</dd>
+  
+  <dt>Datei austauschen</dt>
+  <dd>Du kannst die Datei austauschen, beh&auml;lst jedoch alle Attribute, 
+  wie Titel und Zuordnung des Blogeintrages.
+  Beachte die maximale Gr&ouml;sse.</dd>
+</dl>
+
+<h3>Besondere Behandlung eines Bildes</h3>
+<p>Wenn Du ein Bild hinzuf&uuml;gst, 4 verschiedene Gr&ouml;ssen werden m&ouml;glich sein:</p>
+<ul>
+  <li><strong>Quadrat</strong>: ein 48x48 Pixel Vorschaubild</li>
+  <li><strong>Vorschaubild</strong>: das Bild wird zu einer Breite von 100 Pixel in der Breite reduziert.</li>
+  <li><strong>Klein</strong>: Die Breite ist 240 Pixel</li>
+  <li><strong>Mittel</strong>: Die Breite betr&auml;gt 500 Pixel.</li>
+  <li><strong>Original</strong>: die Originalgr&ouml;sse</li>
+</ul>
+
+<h3>Eine Datei einem Blogeintrag hinzuf&uuml;gen</h3>
+<p>Um eine Datei einem Beitrag zuzuf&uuml;gen, musst Du zuerst einen Blogbeitrag erstellen. 
+Klicke auf "Datei zu diesem Beitrag hinzuf&uuml;gen" und es &ouml;ffnet sich der Medienmanager.</p>
+
+<p>Klicke auf das [+] Icon (Datei zu diesem Beitrag hinzuf&uuml;gen). 
+Die Datei wird dem Beitrag hinzugef&uuml;gt.</p>
+
+<p>Die angef&uuml;gten Dateien werden rechts neben dem Beitrag angezeigt.
+MP3 Dateien werden durch den mitgelieferten Flash Player f&uuml;r Besucher abspielbar sein.</p>
+
+<h3>Podcast und Ver&ouml;ffentlichen von Musikdateien</h3>
+<p>Alle Dateien sind in Deinem RSS Feed eingef&uuml;gt und erlaubt jeden Dateityp anzubieten.</p>
+
+</body>
+</html>
Index: locales/lt/help/core_post.html
===================================================================
--- locales/lt/help/core_post.html	(revision 813)
+++ locales/lt/help/core_post.html	(revision 813)
@@ -0,0 +1,113 @@
+<html>
+<head>
+  <title>Einen Eintrag bearbeiten</title>
+</head>
+
+<body>
+
+<h3>Einen Eintrag bearbeiten</h3>
+
+<dl>
+  <dt>Titel des Eintrags</dt>
+  <dd>Gib Deinem Eintrag einen Titel. Dieses Feld ist Pflicht.</dd>
+  
+  <dt>Exzerpt oder Auszug</dt>
+  <dd>Der Inhalt dieses Feldes wird auf Seiten wie der Startseite oder Kategorieseite gezeigt, die Blogeintr&auml;ge als Liste 
+  ausgeben. Ein Exzerpt ist mit einem Link "weiter lesen" gekennzeichnet.
+  Dieser Auszug wird auch auf der eigentlichen Eintragsseite, der post.html, wiedergegeben. 
+  Wenn Du es leer l&auml;sst, wird der Text im <em>Inhalt</em> Feld auf der Startseite
+  und anderen Seiten mit Listen gezeigt.</dd>
+  
+  <dt>Inhalt</dt>
+  <dd>Der Inhalt Deines Blogeintrages. Pflichtfeld.</dd>
+  
+  <dt>Anmerkungen</dt>
+  <dd>Dieses Feld ist f&uuml;r pers&ouml;nliche Notizen. Der Inhalt wird nicht in Deinem Blog angezeigt.</dd>
+  
+  <dt>Kategorie</dt>
+  <dd>Die Kategorie Deines Eintrages.Um eine neue Kategorie zu erstellen, klicke auf "Kategorie" in der linken Menuleiste. 
+ Die Auswahl einer Kategorie ist kein Pflichtfeld. M&ouml;chtest Du keine Kategorie ausw&auml;hlen, bleibt das Feld blank. </dd>
+  
+  <dt>Status des Eintrags</dt>
+  <dd>Erlaubt folgenden Status auzuw&auml;hlen:
+    <ul>
+      <li><strong>unerledigt:</strong> Status ist noch nicht entschieden.</li>
+      <li><strong>eingeplant:</strong> Der Eintrag wird zu einer bestimmten Zeit online gehen, die
+      in dem <em>Ver&ouml;ffentlicht am</em> Feld angegeben wird.</li>
+      <li><strong>unver&ouml;ffentlicht:</strong> Der Eintrag ist offline.</li>
+      <li><strong>ver&ouml;ffentlicht:</strong> Der Eintrag ist online.</li>
+    </ul>
+  </dd>
+  
+  <dt>Ver&ouml;ffentlicht am</dt>
+  <dd>Hier kannst Du Datum und Zeit ver&auml;ndern. Wenn der Status des Eintrags
+  <em>eingeplant</em> ist,  wird dieser zu der gew&auml;hlten Zeit erscheinen.</dd>
+  
+  <dt>Textformat</dt>
+  <dd>W&auml;hle den Syntaxtyp aus. Wiki ist eine vereinfachte Syntax und wird 
+    zu xhtml konvertiert. Wir raten die Wiki Syntax zu verwenden, wenn Du keine 
+    html Kenntnisse hast. Schaue in der Wiki Syntax Reference nach mehr Informationen.</dd>
+  
+  <dt>Kommentare akzeptieren</dt>
+  <dd>W&auml;hle die Box aus, um Besuchern die M&ouml;glichkeit zu geben, Kommentare zu schreiben. Bitte beachte die
+  allgemeinen Einstellungen f&uuml;r Dein Blog.</dd>
+  
+  <dt>Trackbacks akzeptieren</dt>
+  <dd>Ein Trackback gibt die M&ouml;glichkeit, einen Auszug aus Deinem Blogeintrag in einem anderen Blog als Kommentar zu hinterlassen. 
+  Bitte beachte die  allgemeinen Einstellungen f&uuml;r Dein Blog.</dd>
+  
+  <dt>Ausgew&auml;hlter Beitrag</dt>
+  <dd>Ein ausgew&auml;hlter Beitrag wird in Deiner Sidebar mit dem Widget "Ausgew&auml;hlter Beitrag" erscheinen.</dd>
+  
+  <dt>Passwort eintragen</dt>
+  <dd>Du kannst ein Passwort f&uuml;r Deinen Eintrag anbieten. Ein passwortgesch&uuml;tzter Beitrag wird nicht in Deinem Blog erscheinen
+  und wird nur mit dem direkten Aufrufen der URL (siehe <em>Eintrag ansehen</em>) und dem Eingeben des Passwortes einsehbar sein.</dd>
+  
+  <dt>Basisname</dt>
+  <dd>Wenn Du auf das Schloss klickst, dann kannst Du dem Eintrag eine andere URL geben.
+Sollte die URL schon vergeben sein, wird eine Nummer hinzugef&uuml;gt.</dd>
+  
+  <dt>Eintragssprache</dt>
+  <dd>Deine Sprache wird mit zwei Buchstaben angegeben. Standardsprache ist Deine 
+  (Benutzer) Sprache, jedoch kannst Du auch die Sprache &auml;ndern, z.B. 
+  "en" oder "fr-qc". Dieser Code ist nur f&uuml;r den jeweiligen Eintrag und eine &Uuml;berpr&uuml;fung findet nicht statt.</dd>
+  
+  <dt>Anlagen</dt>
+  <dd>Anlagen sind alle Medien in Deinem Beitrag. Das Link <em>Anlage dem Eintrag hinzuf&uuml;gen"</em> 
+  erlaubt weitere Dateien hinzuzuf&uuml;gen. Speichere Deinen Eintrag ab, bevor Du auf das Link klickst. 
+  Weitere Inofrmationen siehe in der Hilfe zum Medienmanager nach.</dd>
+</dl>
+
+<h3>Kommentare</h3>
+<dl>
+  <dt>Kommentarliste</dt>
+  <dd>Im <em>Kommentare</em> Registerblatt kannst Du diese lesen und den Status dieser &auml;ndern. 
+  Als Blogadministrator kannst Du Kommentare offline und online setzen, diese l&ouml;schen oder als Junk kennzeichnen.</dd>
+  
+  <dt>Einen Kommentar hinzuf&uuml;gen</dt>
+  <dd>Im <em>Einen Kommentar hinzuf&uuml;gen</em> Registerblatt kannst Du einen Kommentar schreiben oder 
+  auf einen Kommentar antworten, ohne den Backend Bereich des Blogs zu verlassen.
+  Die Syntax ist xhtml. Benutze das Feld, um einen Kommentar zu ver&auml;ndern</dd>
+</dl>
+
+<h3>Trackback</h3>
+<p>Um ein Trackback zu machen, klicke auf das <em>Ping blogs</em> Link.
+Du wirst einen Hinweis finden, wenn der Status nicht <em>ver&ouml;ffentlicht</em> ist.</p>
+
+<dl>
+  <dt>URLs pingen</dt>
+  <dd>F&uuml;ge die Trackback URL des Blogeintrages ein, das Du pingen willst.</dd>
+  
+  
+  <dt>Exzerpt senden</dt>
+  <dd>Dieses Feld beinhaltet die ersten S&auml;tze, die auch in dem Blog angezeigt werden, dass Deinen Beitragt anpingt. 
+  Du kannst den Inhalt bearbeiten.</dd>
+  
+  
+  <dt> Ping URLs automatisch entdecken</dt>
+  <dd>Wenn ein Link in Deinem Blog zu einem spezifischen Eintrag f&uuml;hrt und die Blogeinstellungen entsprechend sind, 
+ wird dieses Tool erlauben automatisch die URLs f&uuml;r Dich zu pingen.</dd>
+</dl>
+
+</body>
+</html>
Index: locales/lt/help/core_posts.html
===================================================================
--- locales/lt/help/core_posts.html	(revision 813)
+++ locales/lt/help/core_posts.html	(revision 813)
@@ -0,0 +1,63 @@
+<html>
+<head>
+  <title>Eintr&auml;ge organisieren</title>
+</head>
+
+<body>
+
+<h3>Sortierung die Eintr&auml;geliste</h3>
+
+<dl>
+  <dt>Autor</dt>
+  <dd>Sortierung nach Autor</dd>
+  
+  <dt>Kategorie</dt>
+  <dd>Sortierung nach Kategorie.</dd>
+  
+  <dt>Status</dt>
+  <dd><ul>
+    <li><strong>unerledigt:</strong> Status ist noch nicht entschieden.</li>
+    <li><strong>geplant:</strong> Eintrag wird automatisch online gesetzt.</li>
+    <li><strong>unver&ouml;ffentlicht:</strong> Eintr&auml;ge sind offline</li>
+    <li><strong>ver&ouml;ffentlicht:</strong> Eintr&auml;ge sind online.</li>
+  </ul></dd>
+  
+  <dt>Ausgew&auml;hlt</dt>
+  <dd>Nur ausgew&auml;hlte oder unausgew&auml;hlte Eintr&auml;ge sind erw&auml;hnt.</dd>
+  
+  <dt>Monat</dt>
+  <dd>Sortiert nach einem bestimmten Monat oder Jahr.</dd>
+  
+  <dt>Sprache</dt>
+  <dd>Filter sortiert nach Sprachen, die in dem Blog verwendet wurden.</dd>
+  
+  <dt>Reihenfolge nach</dt>
+  <dd>Definiert die Reihenfolge nach Datum, Titel, Autor, Status oder 
+  dem ausgew&auml;hlten Status.</dd>
+  
+  <dt>Sortierung</dt>
+  <dd>Aufsteigende oder absteigende Reihenfolge.</dd>
+  
+  <dt>Eintr&auml;ge per Seite</dt>
+  <dd>Anzahl der Eintr&auml;ge, die auf jeder Seite gezeigt werden sollen.
+  </dd>
+</dl>
+
+<h3>Ausgew&auml;hlte Status eines Eintrages</h3>
+<p>Sofern Deine Berechtigungen es erlauben, kannst Du &uuml;bergreifende
+Verfahren der Eintr&auml;ge setzen.</p>
+
+<ul>
+  <li><strong>Ver&ouml;ffentlichen</strong>: Stellt Eintr&auml;ge nach dem Speichern sofort online.</li>
+  <li><strong>Unver&ouml;ffentlicht</strong>: Eintr&auml;ge bleiben zun&auml;chst offline.</li>
+  <li><strong>Geplant</strong>: Eintr&auml;ge werden nach Zeitplan online gesetzt.</li>
+  <li><strong>Ungeplant</strong>: Ist weder ver&ouml;ffentlicht noch unver&ouml;ffentlicht.</li>
+  <li><strong>Kategorie wechseln</strong>: Du kannst die bevorzugte Kategorie w&auml;hlen.</li>
+  <li><strong>Autoren wechseln</strong>: Erlaubt den Autoren ID zu wechseln, wenn Du in Vertretung
+  f&uuml;r jemanden den Artikel schreibst.</li>
+  <li><strong>L&ouml;schen</strong>: Zur&uuml;ckhalten der Eintr&auml;ge
+  (dieses Verfahren kann nicht r&uuml;ckg&auml;ngig gemacht werden).</li>
+</ul>
+
+</body>
+</html>
Index: locales/lt/help/core_user_pref.html
===================================================================
--- locales/lt/help/core_user_pref.html	(revision 813)
+++ locales/lt/help/core_user_pref.html	(revision 813)
@@ -0,0 +1,59 @@
+<html>
+<head>
+  <title>Benutzereinstellungen</title>
+</head>
+
+<body>
+
+<h3>Benutzereinstellungen</h3>
+<dl>
+  <dt>Name, Vorname</dt>
+  <dd>Wenn der Nickname leer ist, dann wird der Autorenname stattdessen angezeigt, 
+  wobei erst der Vorname und dann der Nachname angezeigt werden.</dd>
+  
+  <dt>Nickname</dt>
+  <dd>Du kannst selbst entscheiden, was der Nickname Deiner Eintr&auml;ge sein soll.</dd>
+  
+  <dt>E-mail</dt>
+  <dd>Diese Addresse wird Nachrichten wie "Neuer Kommentar ist eingetroffen" erhalten.</dd>
+  
+  <dt>URL</dt>
+  <dd>Die Webadresse des Benutzers, sofern der Autor eine Verlinkung zu seiner Webadresse w&uuml;nscht.
+  </dd>
+  
+  <dt>Bevorzugtes Format</dt>
+  <dd>Ausw&auml;hlen der bevorzugten Syntax. Wiki ist eine vereinfachte Syntax und wird zu xhtml konvertiert. 
+  Wir raten die Wiki Syntax zu verwenden, wenn Du keine HTML Kenntnisse hast. </dd>
+  
+  <dt>Standardstatus des Eintrages</dt>
+  <dd>Der Standardstatus kann folgender sein:
+    <ul>
+      <li><strong>unerledigt:</strong> Status ist noch nicht entschieden.</li>
+      <li><strong>eingeplant:</strong> Der Eintrag wird zu einer bestimmten Zeit online gehen, die
+      in dem <em>Ver&ouml;ffentlicht am</em> Feld angegeben wird.</li>
+      <li><strong>unver&ouml;ffentlicht:</strong> Der Eintrag ist offline.</li>
+      <li><strong>ver&ouml;ffentlicht:</strong> Der Eintrag ist online.</li>
+    </ul>
+  </dd>
+  
+  <dt>Die H&ouml;he des Eintragsfeldes</dt>
+  <dd>Die H&ouml;he des Eintragsfeldes ist standardm&auml;ssig auf 24 gesetzt.</dd>
+  
+  <dt>Benutzersprache</dt>
+  <dd>Die bevorzugte Sprache in der Du die Beitr&auml;ge ver&ouml;ffentlichen willst. Sollte eine &Uuml;bersetzung vorhanden sein,
+  wird die Benutzeroberfl&auml;che ebenfalls in der Sprache angezeigt.</dd>
+  
+  <dt>Die Zeitzone des Benutzers</dt>
+  <dd>Die Wahl wird definiert durch die Zeit, in der der Eintrag ver&ouml;ffentlicht wird.</dd>
+  
+  <dt>WYSIWYG Modus verwenden</dt>
+  <dd>Erlaubt die Verwendung des WYSIWYG Editors f&uuml;r das Eintragsfeld und Beschreibungsfeld.</dd>
+</dl>
+
+<h3>Passwort austauschen</h3>
+<p>Um das Passwort wechseln zu k&ouml;nnen musst Du es zwei Mal eintragen:
+<em>Neues Passwort</em> und <em>Passwort best&auml;tigen</em>. Die minimale L&auml;nge ist 6 Buchstaben.</p>
+<p>Wird kein neues Passwort eingegeben, bleibt das alte bestehen.</p>
+
+</body>
+</html>
Index: locales/lt/help/core_wiki.html
===================================================================
--- locales/lt/help/core_wiki.html	(revision 813)
+++ locales/lt/help/core_wiki.html	(revision 813)
@@ -0,0 +1,82 @@
+<html>
+<head>
+  <title>Wiki Syntax Referenz</title>
+</head>
+
+<body>
+
+<h3>Wiki Syntax Referenz</h3>
+
+<p>Die Wiki Syntax ist ein Weg, mit minimalen Tags Deinen Text zu bearbeiten. 
+Du ben&ouml;ntigst nur die Grundvoraussetzungen wie Titel, Absatz, Zitat und Liste...</p>
+
+<dl>
+<dt>Blockelemente</dt>
+<dd>
+<ul>
+  <li>Lass eine leere Zeile zwischen zwei gleichen Blocks</li>
+  <li><strong>Absatz</strong>: Freier Text, endet mit einer leeren Zeile, wenn ein n&auml;chster Absatz folgt.</li>
+  <li><strong>Titel</strong>: <code>!!! title</code>, <code>!! title</code>
+  oder <code>! title</code>, was Dir die M&ouml;glichkeit gibt, 3 Formen zu haben.</li>
+  <li><strong>Horizontale Linie</strong>: <code>----</code></li>
+  <li><strong>Liste</strong>: Beginne jede Zeile mit
+  <code>*</code> oder <code>#</code> f&uuml;r nummerierte und unnummerierte Listen.
+  Listenzuordnung ist bereits gemacht mit folgenden Verwendungen:
+<pre>
+* item 1
+** item 1.1
+* item 2
+*# item 2.1
+...
+</pre>
+  </li>
+  <li><strong>Vormatierter Text</strong>: Jede Zeile muss mit einem Leerzeichen beginnen.</li>
+  <li><strong>Zitat</strong>: Jede Zeile muss mit einem Semikolon beginnen (<code>&gt;</code>).</li>
+</ul>
+</dd>
+
+<dt>Tagformate</dt>
+<dd>
+<ul>
+  <li><strong>Betonung</strong>: zwei Anf&uuml;hrungszeichen <code>''text''</code></li>
+  <li><strong>Starke Betonung</strong>: zwei Unterstriche <code>__text__</code></li>
+  <li><strong>Neue Zeile</strong>: <code>%%%</code></li>
+  <li><strong>Einschub</strong>: zwei Pluszeichen <code>++text++</code></li>
+  <li><strong>L&ouml;schung</strong>: zwei Minuszeichen <code>--text--</code></li>
+  <li><strong>Link</strong>: <code>[url]</code>, <code>[name|url]</code>,
+    <code>[name|url|language]</code> oder <code>[name|url|language|title]</code></li>
+  <li><strong>Bild</strong>:
+    <code>((url|alternative text))</code>,
+    <code>((url|alternative text|position))</code> oder
+    <code>((url|alternative text|position|long description))</code>.
+    <br />Die Position kann L oder G (links), R oder D (rechts) oder C (zentriert) sein.</li>
+  <li><strong>Ankerpunkt</strong>: <code>~anchor~</code></li>
+  <li><strong>Acronym</strong>: <code>??acronym|title??</code></li>
+  <li><strong>Inline HTML</strong>: zwei backquotes <code>``html code``</code></li>
+  <li><strong>Inline quote</strong>: <code>{{quote}}</code>,
+    <code>{{quote|language}}</code> oder <code>{{quote|language|url}}</code></li>
+  <li><strong>Code</strong>: <code>@@code@@</code></li>
+  <li><strong>Fussnote</strong>: <code>$$footnote$$</code></li>
+</ul>
+</dd>
+
+<dt>Unformatierter Text</dt>
+<dd>Wenn Du Deinen Text nicht formatieren willst, dann f&uuml;ge einfach nur
+<code>\</code> ein. Zum Beispiel:
+<code>\[Text in eckigen Klammern ohne URL\]</code>
+</dd>
+
+<dt>HTML Code</dt>
+<dd>Auch wenn Du Dich f&uuml;r die Verwendung der Wiki Syntax entschieden hast, Du ben&ouml;ntigst
+mitunter ausdrucksreichere M&ouml;glichkeiten, die Dir die HTML Syntax bietet. Geh folgendermassen vor:
+<pre>
+///html
+&lt;p style="color:red"&gt;mein text in rot&lt;/p&gt;
+///
+</pre>
+</dd>
+</dl>
+
+
+</body>
+</html>
Index: locales/lt/help/themeEditor.html
===================================================================
--- locales/lt/help/themeEditor.html	(revision 813)
+++ locales/lt/help/themeEditor.html	(revision 813)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html>
+<head>
+  <title>Theme Editor</title>
+</head>
+
+<body>
+<p>Der Theme Editor erlaubt Dir die Templatedateien,  die Stylesheetdateien und die JavaScriptdateien des Theme zu &auml;ndern, das Du gerade verwendest.</p>
+
+<p>Die Dateiliste ist in 3 Sektionen aufgeteilt&nbsp;:</p>
+<ul>
+  <li>Templatedateien: die Templates</li>
+  <li>CSS Dateien: die Stylesheets</li>
+  <li>JavaScriptdateien</li>
+</ul>
+
+<p>Die gelben Quadrate vor dem Dateinamen bedeuten, dass diese Dateien Teil des Templates sind. Schwarze Quadrate bedeuten, dass die Dateien Teil des "Standard" Theme sind.</p>
+<p>Wenn Du eine Datei &auml;ndern willst, die zum "Standard" Theme geh&ouml;rt, so wird diese automatisch kopiert.</p>
+
+<p>Um eine Datei zu bearbeiten, klicke einfach auf den Dateinamen und der Inhalt dieser wird im Editor erscheinen. 
+Wenn der Inhalt beschrieben werden kann, dann kannst Du auch auf "Speichern" klicken und Deine &Auml;nderungen werden gespeichert.</p>
+
+<p>Die &Auml;nderungen sind nicht r&uuml;ckg&auml;ngig zu machen und deshalb sei vorsichtig.</p>
+
+<p>Mehr Hilfe bei der &Auml;nderungen bekommst Du hier <a href="http://doc.dotclear.net/2.0/resources/templates">Template Tagliste</a>.</p>
+
+</body>
+</html>
Index: locales/lt/main.po
===================================================================
--- locales/lt/main.po	(revision 813)
+++ locales/lt/main.po	(revision 813)
@@ -0,0 +1,2630 @@
+# German translation of DotClear
+# Copyright (C) 2008.
+# Andreas Diller <nendilo@gmail.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Dotclear 2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-01-15 22:40+0100\n"
+"PO-Revision-Date: 2012-04-19 03:31+0100\n"
+"Last-Translator: Paulius Černakauskas <paulius.cernakauskas@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Lithuanian\n"
+"X-Poedit-Country: LITHUANIA\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+msgid "Dotclear has been upgraded."
+msgstr "Dotclear atnaujintas."
+
+msgid "Password reset"
+msgstr "Naujo slaptažodžio nustatymas"
+
+msgid "Someone has requested to reset the password for the following site and username."
+msgstr "Dalyvis paprašė nustatyti naują slaptažodį šiame puslapyje ir tokiu vardu."
+
+msgid "Username:"
+msgstr "Prisijungimo vardas:"
+
+msgid "To reset your password visit the following address, otherwise just ignore this email and nothing will happen."
+msgstr "Paspauskite atsiųstą nuoroda tam, kad iš naujo nustatyti slaptažodį. Jei neketinote keisti slaptažodžio, nespauskite ir senasis išliks."
+
+#, php-format
+msgid "The e-mail was sent successfully to %s."
+msgstr "El. laiškas sėkmingai išsiųstas į %s."
+
+msgid "Your new password"
+msgstr "Jūsų naujas slaptažodis."
+
+msgid "Password:"
+msgstr "Slaptažodis:"
+
+msgid "Your new password is in your mailbox."
+msgstr "Naujas slaptažodis yra jūsų elektroniniame pašte."
+
+msgid "Passwords don't match"
+msgstr "Slaptažodžiai nesutampa"
+
+msgid "You didn't change your password."
+msgstr "Jūs nepakeitėte savo slaptažodžio."
+
+msgid "You have to change your password before you can login."
+msgstr "Jūs turite pakeisti savo slaptažodį kad galėtumėte prisijungti."
+
+msgid "In order to login, you have to change your password now."
+msgstr "Jūs turite pakeisti savo slaptažodį prieš prisijungdami."
+
+msgid "Wrong username or password"
+msgstr "Klaidingas prisijungimo vardas ir slaptažodis"
+
+msgid "Back to login screen"
+msgstr "Atgal į prisijungimo puslapį"
+
+msgid "Request a new password"
+msgstr "Prašyti naujo slaptažodžio"
+
+msgid "Email:"
+msgstr "El. paštas:"
+
+msgid "recover"
+msgstr "atstatyti"
+
+msgid "Change your password"
+msgstr "Slaptawodžio keitimas"
+
+msgid "New password:"
+msgstr "Naujas slaptažodis:"
+
+msgid "Confirm password:"
+msgstr "Patvirtinkite slaptažodį:"
+
+msgid "change"
+msgstr "keisti"
+
+msgid "Remember my ID on this computer"
+msgstr "Prisiminti mano ID šiame kompiuteryje"
+
+msgid "login"
+msgstr "prisijungti"
+
+msgid "You must accept cookies in order to use the private area."
+msgstr "Tam kad pasiekti tolimesnį puslapį jūs turite leisti įjungti Cookies."
+
+msgid "I forgot my password"
+msgstr "Pamiršau slaptažodį"
+
+msgid "New blog"
+msgstr "Naujas blogas"
+
+msgid "Blogs"
+msgstr "Blogai"
+
+msgid "Blog details"
+msgstr "Blogas išsamiau"
+
+msgid "Blog ID:"
+msgstr "Blogo ID:"
+
+msgid "Required field"
+msgstr "Būtinas laukelis"
+
+msgid "At least 2 characters using letters, numbers or symbols."
+msgstr "Naudokite raidžių, skaičių ir simbolių kombinaciją iš mažiausiai 2 ženklų."
+
+msgid "Please note that changing your blog ID may require changes in your public index.php file."
+msgstr "Jei keičiate savo blogo ID, gali tekti atlikti pakeitimus index.php faile."
+
+msgid "Blog name:"
+msgstr "Blogo pavadinimas:"
+
+msgid "Blog URL:"
+msgstr "Blogo URL:"
+
+msgid "Blog description:"
+msgstr "Blogo aprašymas:"
+
+msgid "save"
+msgstr "išsaugoti"
+
+msgid "No such blog ID"
+msgstr "Tokio blogo ID nėra"
+
+msgid "Password verification failed"
+msgstr "Slaptažodžio patvirtinti nepavyko."
+
+msgid "Delete a blog"
+msgstr "Ištrinti blogą"
+
+msgid "Warning"
+msgstr "Dėmesio"
+
+#, php-format
+msgid "You are about to delete the blog %s. Every entry, comment and category will be deleted."
+msgstr "Jūs ketinate ištrinti %s blogą. Visi įrašai, komentarai ir kategorijos bus ištrintos."
+
+msgid "Please give your password to confirm the blog deletion."
+msgstr "Įveskite savo slaptažodį, kad patvirtintumėte blogo ištrynimą."
+
+msgid "Your password:"
+msgstr "Jūsų slaptažodis:"
+
+msgid "Delete this blog"
+msgstr "Trinti šį blogą."
+
+msgid "No given blog id."
+msgstr "Nėra pasirinkto blogo ID."
+
+msgid "No such blog."
+msgstr "Tokio blogo nėra"
+
+msgid "year/month/day/title"
+msgstr "metai/mėnuo/diena/antraštė"
+
+msgid "year/month/title"
+msgstr "metai/mėnuo/antraštė"
+
+msgid "year/title"
+msgstr "metai/antraštė"
+
+msgid "title"
+msgstr "antraštė"
+
+msgid "Title"
+msgstr "Antraštė"
+
+msgid "Title, Date"
+msgstr "Antraštė, Data"
+
+msgid "Title, Country, Date"
+msgstr "Antraštė, Šalis, Data"
+
+msgid "Title, City, Country, Date"
+msgstr "Antraštė, Miestas, Šalis, Data"
+
+msgid "I would like search engines and archivers to index and archive my blog's content."
+msgstr "Noriu, kad paieškos sistemos ir archyvatoriai indeksuotų ir archyvuotų mano blogo turinį."
+
+msgid "I would like search engines and archivers to index but not archive my blog's content."
+msgstr "Noriu, kad paieškos sistemos ir archyvatoriai indeksuotų ir bet ne archyvuotų mano blogo turinio."
+
+msgid "I would like to prevent search engines and archivers from indexing or archiving my blog's content."
+msgstr "Nenoriu, kad paieškos sistemos ir archyvatoriai indeksuotų ir archyvuotų mano blogo turinio."
+
+msgid "That blog Id is already in use."
+msgstr "Šito blogo ID jau yra naudojamas."
+
+msgid "Invalid language code"
+msgstr "Netinkamas kalbos kodas"
+
+msgid "Blog settings"
+msgstr "Blogo nustatymai"
+
+msgid "Warning: except for special configurations, it is generally advised to have a trailing \"/\" in your blog URL in PATH_INFO mode."
+msgstr "Dėmesio: blogo adreso URL gale rekomenduojama naudoti \"/\" pasirinkus PATH_INFO, išskyrus specialius konfigūravimo atvejus."
+
+msgid "Warning: except for special configurations, it is generally advised to have a trailing \"?\" in your blog URL in when QUERY_STRING mode."
+msgstr "Dėmesio: blogo adreso URL gale rekomenduojama naudoti \"?\" pasirinkus QUERY_STRING, išskyrus specialius konfigūravimo atvejus."
+
+msgid "Blog has been successfully created."
+msgstr "Blogas sėkmingai sukurtas."
+
+msgid "Blog has been successfully updated."
+msgstr "Blogas sėkmingai atnaujintas."
+
+msgid "Parameters"
+msgstr "Parametrai"
+
+msgid "URL scan method:"
+msgstr "URL skaitymo metodas:"
+
+msgid "Blog status:"
+msgstr "Blogo būklė:"
+
+msgid "Blog configuration"
+msgstr "Blogo konfigūracija"
+
+msgid "Blog editor name:"
+msgstr "Blogo autoriaus vardas:"
+
+msgid "Default language:"
+msgstr "Pagrindinė kalba:"
+
+msgid "Blog timezone:"
+msgstr "Blogo laiko juosta:"
+
+msgid "Copyright notice:"
+msgstr "Copyright:"
+
+msgid "New post URL format:"
+msgstr "Naujo įrašo URL formatas:"
+
+msgid "Enable XML/RPC interface"
+msgstr "Įjungti XML/RPC sąsają"
+
+msgid "more information"
+msgstr "daugiau informacijos"
+
+msgid "Comments and trackbacks"
+msgstr "Komentarai ir trackback'ai"
+
+msgid "Accept comments"
+msgstr "Leisti komentuoti"
+
+msgid "Moderate comments"
+msgstr "Tvarkyti komentarus"
+
+#, php-format
+msgid "Leave comments open for %s days"
+msgstr "Komentarus palikti atvirus %s dienų"
+
+msgid "Leave blank to disable this feature."
+msgstr "Norėdami išjungti, palikite tuščią"
+
+msgid "Wiki syntax for comments"
+msgstr "Wiki syntax komentarams"
+
+msgid "Accept trackbacks"
+msgstr "Leisti trackback'us"
+
+msgid "Moderate trackbacks"
+msgstr "Tvarkyti trackback'us"
+
+#, php-format
+msgid "Leave trackbacks open for %s days"
+msgstr "Trackback'us palikti atvirus %s dienų"
+
+msgid "Add \"nofollow\" relation on comments and trackbacks links"
+msgstr "Pridėti \"nofollow\" prie komentarų ir trackback'ų nuorodų."
+
+msgid "Blog presentation"
+msgstr "Blogo pristatymas"
+
+msgid "Date format:"
+msgstr "Datos formatas:"
+
+msgid "Time format:"
+msgstr "Laiko formatas:"
+
+msgid "Display smilies on entries and comments"
+msgstr "Įrašuose ir komentaruose rodyti veidelius"
+
+#, php-format
+msgid "Display %s entries per page"
+msgstr "Rodyti %s įrašus puslapyje"
+
+#, php-format
+msgid "Display %s entries per feed"
+msgstr "Rodyti %s įrašus kanale"
+
+#, php-format
+msgid "Display %s comments per feed"
+msgstr "Rodyti %s komentarus kanale"
+
+msgid "Truncate feeds"
+msgstr "Trumpinti kanalus"
+
+msgid "Media and images"
+msgstr "Media ir paveikslėliai"
+
+msgid "Generated image sizes (in pixels)"
+msgstr "Sukurtų paveikslėlių dydis (pikseliais)"
+
+msgid "Thumbnails:"
+msgstr "Miniatiūros:"
+
+msgid "Small:"
+msgstr "Mažos:"
+
+msgid "Medium:"
+msgstr "Vidutinės:"
+
+msgid "Inserted image title"
+msgstr "Įrašykite paveikslėlio pavadinimą"
+
+msgid "This defines image tag title when you insert it in a post from the media manager. It is retrieved from the picture's metadata."
+msgstr "Čia nustatomas paveikslėlio pavadinimas kai jis įkeliamas iš media tvarkyklės. Pavadinimas gaunamas iš metadata informacijos."
+
+msgid "Search engines robots policy"
+msgstr "Paieškos variklių nustatymai"
+
+msgid "XML/RPC interface"
+msgstr "XML/RPC sąsaja"
+
+msgid "XML/RPC interface allows you to edit your blog with an external client."
+msgstr "XML/RPC sąsaja leiidžia jums redaguoti savo blogą per išorinį klientą."
+
+msgid "XML/RPC interface is not active. Change settings to enable it."
+msgstr "XML/RPC sąsaja neaktyvi. Keiskite nustatymus norėdami įjungti."
+
+msgid "XML/RPC interface is active. You should set the following parameters on your XML/RPC client:"
+msgstr "XML/RPC sąsaja yra aktyvi. Savo XML/RPC kliente turėtumėte nustatyti šiuos parametrus:"
+
+msgid "Server URL:"
+msgstr "Serverio URL:"
+
+msgid "Blogging system:"
+msgstr "Blogo sistema:"
+
+msgid "User name:"
+msgstr "Prisijungimo vardas:"
+
+msgid "your password"
+msgstr "jūsų slaptažodis"
+
+msgid "Users"
+msgstr "Dalyviai"
+
+msgid "Users on this blog"
+msgstr "Dalyviai šiame bloge"
+
+msgid "No users"
+msgstr "Dalyvių nėra"
+
+msgid "change permissions"
+msgstr "keisti leidimus"
+
+msgid "Super administrator"
+msgstr "Super administratorius"
+
+msgid "You can't remove default theme."
+msgstr "Negalite ištrinti numatytosios temos"
+
+msgid "Theme does not exist."
+msgstr "Tokia tema neegzistuoja"
+
+msgid "Unable to move uploaded file."
+msgstr "Nepavyksta perkelti atsiųsto failo."
+
+msgid "An error occurred while downloading the file."
+msgstr "Atsisiunčiant failą įvyko klaida"
+
+#, php-format
+msgid "by %s"
+msgstr "per %s"
+
+#, php-format
+msgid "version %s"
+msgstr " %s versija"
+
+#, php-format
+msgid "(built on \"%s\")"
+msgstr "(sukurtas \"%s\")"
+
+#, php-format
+msgid "(requires \"%s\")"
+msgstr "(reikalauja \"%s\")"
+
+msgid "Stylesheet"
+msgstr "Stylesheet"
+
+msgid "Theme configuration"
+msgstr "Temos konfigūravimas"
+
+msgid "Blog themes"
+msgstr "Blogo temos"
+
+msgid "Blog appearance"
+msgstr "Blogo vaizdavimas"
+
+msgid "Theme has been successfully changed."
+msgstr "Tema sėkmingai pakeista."
+
+msgid "Theme has been successfully installed."
+msgstr "Tema sėkmingai instaliuota."
+
+msgid "Theme has been successfully upgraded"
+msgstr "Tema sėkmingai atnaujinta."
+
+msgid "Theme has been successfully deleted."
+msgstr "Tema sėkmingai ištrinta."
+
+#, php-format
+msgid "You can find additional themes for your blog on %s."
+msgstr "Daugiau temų savo blogui galite rasti %s."
+
+msgid "To install or upgrade a theme you generally just need to upload it in \"Install or upgrade a theme\" section."
+msgstr "Paprastai norint atnaujinti temą tereikia ją įkelti į \"Install or upgrade a theme\" skyrių"
+
+msgid "Themes"
+msgstr "Temos"
+
+#, php-format
+msgid "You are currently using \"%s\""
+msgstr "Šiuo metu jūs naudojate \"%s\""
+
+msgid "use selected theme"
+msgstr "naudoti pasirinktą temą"
+
+msgid "delete selected theme"
+msgstr "ištrinti pasirinkta temą"
+
+msgid "Install or upgrade a theme"
+msgstr "instaliuoti arba atnaujinti pasirinktą temą"
+
+msgid "You can install themes by uploading or downloading zip files."
+msgstr "Instaliuoti temas galite įkeldami arba atsisiųsdami zip failus."
+
+msgid "Upload a zip file"
+msgstr "Įkelti zip failą"
+
+msgid "Theme zip file:"
+msgstr "Temos zip failas:"
+
+msgid "Upload theme"
+msgstr "Įkelti temą"
+
+msgid "Download a zip file"
+msgstr "Atsisiųsti zip failą"
+
+msgid "Theme zip file URL:"
+msgstr "Temos zip failo URL:"
+
+msgid "Download theme"
+msgstr "Atsisiųsti temą"
+
+msgid "To enable this function, please give write access to your themes directory."
+msgstr "Įjunkite įrašymo teises savo temų direktorijai norėdami naudotis šia funkcija."
+
+msgid "back"
+msgstr "atgal"
+
+msgid "Last update"
+msgstr "Paskutinis atnaujinimas"
+
+msgid "Blog name"
+msgstr "Blogo pavadinimas"
+
+msgid "Blog ID"
+msgstr "Blogo ID"
+
+msgid "Descending"
+msgstr "Mažėjantis"
+
+msgid "Ascending"
+msgstr "Didėjantis"
+
+msgid "List of blogs"
+msgstr "Blogų sąrašas"
+
+msgid "Blog has been successfully deleted."
+msgstr "Blogas sėkmingai ištrintas."
+
+msgid "Create a new blog"
+msgstr "Kurtin naują blogą"
+
+msgid "Filters"
+msgstr "Filtrai"
+
+msgid "Order by:"
+msgstr "Rikiuoti pagal:"
+
+msgid "Sort:"
+msgstr "Rūšiuoti:"
+
+msgid "Search:"
+msgstr "Ieškoti:"
+
+msgid "Blogs per page"
+msgstr "Blogų viename puslapyje"
+
+msgid "filter"
+msgstr "filtras"
+
+msgid "No blog"
+msgstr "Nėra blogo"
+
+msgid "Page(s)"
+msgstr "Puslapis(iai)"
+
+msgid "Entries"
+msgstr "Įrašai"
+
+msgid "Status"
+msgstr "Statusas"
+
+#, php-format
+msgid "Edit blog %s"
+msgstr "Regaguoti blogą %s"
+
+msgid "edit"
+msgstr "redaguoti"
+
+#, php-format
+msgid "Switch to blog %s"
+msgstr "Pereitį į blogą %s"
+
+msgid "This category does not exist."
+msgstr "Ši kategorija neegzistuoja"
+
+msgid "Categories"
+msgstr "Kategorijos"
+
+msgid "The category has been successfully created."
+msgstr "Kategorija sėkmingai sukurta."
+
+msgid "The category has been successfully removed."
+msgstr "Kategorija sėkmingai pašalinta."
+
+msgid "Categories have been successfully reordered."
+msgstr "Kategorijos sėkmingai pertvarkytos."
+
+msgid "The category has been successfully moved."
+msgstr "Kategorija sėkmingai perkelta."
+
+msgid "No category yet."
+msgstr "Kategorijos kolkas nėra."
+
+msgid "Categories list"
+msgstr "Kategorijų sąrašas"
+
+#, php-format
+msgid "%d entries"
+msgstr "%d įrašai"
+
+#, php-format
+msgid "%d entry"
+msgstr "%d įrašas"
+
+msgid "total:"
+msgstr "viso:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Add a new category"
+msgstr "Pridėti naują kategoriją"
+
+msgid "Title:"
+msgstr "Antraštė:"
+
+msgid "Parent:"
+msgstr "Pozicija:"
+
+msgid "Top level"
+msgstr "Viršus"
+
+msgid "Save"
+msgstr "Išsaugoti"
+
+msgid "Remove a category"
+msgstr "Pašalinti kategoriją"
+
+msgid "Choose a category to remove:"
+msgstr "Pasirinkti pašalinamą kategoriją:"
+
+msgid "ok"
+msgstr "tinka"
+
+msgid "Reorder categories"
+msgstr "Pertvarkyti kategorijas"
+
+msgid "This will relocate all categories on the top level"
+msgstr "Visos viršuje esančios kategorijos bus perkeltos"
+
+msgid "Reorder"
+msgstr "Pertvarkyti"
+
+msgid "New category"
+msgstr "Nauja kategorija"
+
+msgid "Category has been successfully updated."
+msgstr "Kategorija sėkmingai atnaujinta"
+
+msgid "Category information"
+msgstr "Kategorijos informacija"
+
+msgid "Warning: If you set the URL manually, it may conflict with another category."
+msgstr "Dėmesio: rankinis URL nustatymas gali sukurti neatitikimą su kita kategoriją."
+
+msgid "Description:"
+msgstr "Aprašymas:"
+
+msgid "Move this category"
+msgstr "Perkelti šią kategoriją"
+
+msgid "Category parent"
+msgstr "Pagrindinė kategorija"
+
+msgid "Category sibling"
+msgstr "Antrinė kategorija"
+
+msgid "Move current category"
+msgstr "Perkelti dabartinę kategoriją"
+
+msgid "after"
+msgstr "po"
+
+msgid "before"
+msgstr "prieš"
+
+msgid "Entry does not exist."
+msgstr "Įrašas neegzistuoja."
+
+msgid "No comment"
+msgstr "Komentarų nėra."
+
+msgid "You can't edit this comment."
+msgstr "Jūs negalite redaguoti šio komentaro."
+
+msgid "Edit comment"
+msgstr "Redaguoti komentarą"
+
+msgid "Comment has been successfully updated."
+msgstr "Komentaras sėkmingai atnaujintas."
+
+#, php-format
+msgid "Your comment on my blog %s"
+msgstr "Jūsų komentaras mano %s bloge"
+
+#, php-format
+msgid ""
+"Hi!\n"
+"\n"
+"You wrote a comment on:\n"
+"%s\n"
+"\n"
+"\n"
+msgstr ""
+"Sveiki!\n"
+"\n"
+"Jūs parašėte komentarą:\n"
+"%s\n"
+"\n"
+"\n"
+
+msgid "Send an e-mail"
+msgstr "Siųsti el. laišką"
+
+#, php-format
+msgid "Back to \"%s\""
+msgstr "Atgal į \"%s\""
+
+msgid "IP address:"
+msgstr "IP adresas:"
+
+msgid "Date:"
+msgstr "Data:"
+
+msgid "Author:"
+msgstr "Autorius:"
+
+msgid "Web site:"
+msgstr "Asmeninis tinklapis:"
+
+msgid "Status:"
+msgstr "Statusas:"
+
+msgid "Comment:"
+msgstr "Komentaras:"
+
+msgid "delete"
+msgstr "trinti"
+
+msgid "comment"
+msgstr "komentaras"
+
+msgid "trackback"
+msgstr "trackback'as"
+
+msgid "Date"
+msgstr "Data"
+
+msgid "Entry title"
+msgstr "Įrašo antraštė"
+
+msgid "Author"
+msgstr "Autorius"
+
+msgid "publish"
+msgstr "publikuoti"
+
+msgid "unpublish"
+msgstr "nebepublikuoti"
+
+msgid "mark as pending"
+msgstr "žymti kaip laukiantį"
+
+msgid "mark as junk"
+msgstr "žymėti kaip šiukšlę"
+
+msgid "Comments"
+msgstr "Komentarai"
+
+msgid "Type:"
+msgstr "Tipas:"
+
+msgid "Comments per page"
+msgstr "Komentarų viename puslapyje"
+
+msgid "Comment author:"
+msgstr "Komentaro autorius:"
+
+msgid "You have one spam comments."
+msgstr "Turite vieną spamo komentarą."
+
+msgid "Show it."
+msgstr "Parodyti."
+
+#, php-format
+msgid "You have %s spam comments."
+msgstr "Turite %s spamo komentarų(us)."
+
+msgid "Show them."
+msgstr "Parodyti."
+
+msgid "Selected comments action:"
+msgstr "Veiksmas pasirinktiems komentarams:"
+
+#, php-format
+msgid "%d comment"
+msgstr "%d komentaras"
+
+#, php-format
+msgid "%d comments"
+msgstr "%d komentarai"
+
+msgid "New entry"
+msgstr "Naujas įrašas"
+
+msgid "User preferences"
+msgstr "Dalyvio nustatymai"
+
+msgid "Documentation"
+msgstr "Dokumentacija"
+
+msgid "Latest news"
+msgstr "Naujienos"
+
+msgid "Dashboard"
+msgstr "Valdymas"
+
+msgid "Make this blog my default blog"
+msgstr "Padaryti šitą dlogą pagrindiniu"
+
+msgid "This blog is offline"
+msgstr "Šis blogas yra išjungtas"
+
+msgid "This blog is removed"
+msgstr "Šis blogas yra pašalintas"
+
+msgid "DC_ADMIN_URL is not defined, you should edit your configuration file."
+msgstr "DC_ADMIN_URL nėra nurodytas. Redaguokite savo konfigūracinį failą."
+
+msgid "Following plugins have been installed:"
+msgstr "Buvo instaliuoti šie plugin'ai:"
+
+msgid "Following plugins have not been installed:"
+msgstr "Šie plugin'ai nebuvo instaliuoti:"
+
+msgid "Quick entry"
+msgstr "Greitas įrašas"
+
+msgid "Content:"
+msgstr "Turinys:"
+
+msgid "Category:"
+msgstr "Kategorija:"
+
+msgid "save and publish"
+msgstr "saugoti ir publikuoti"
+
+#, php-format
+msgid "Dotclear %s is available!"
+msgstr "Pasirodė naujas Dotclear %s!"
+
+msgid "Upgrade now"
+msgstr "Atnaujinti dabar"
+
+msgid "Remind me later"
+msgstr "Priminti vėliau"
+
+msgid "Some plugins are installed twice:"
+msgstr "Kai kurie plugin'ai instaduoti du kart:"
+
+#, php-format
+msgid "PHP version is %s (5.0 or earlier needed)."
+msgstr "PHP versija %s (reikalinga 5.0 arba ankstesnė)."
+
+msgid "Multibyte string module (mbstring) is not available."
+msgstr "Nėra Multibyte string modulio (mbstring)."
+
+msgid "Iconv module is not available."
+msgstr "Nėra Iconv modulio."
+
+msgid "Output control functions are not available."
+msgstr "Nėra Output control funkcijų."
+
+msgid "SimpleXML module is not available."
+msgstr "Nėra SimpleXML modulio."
+
+msgid "DOM XML module is not available."
+msgstr "Nėra DOM XML modulio."
+
+msgid "PCRE engine does not support UTF-8 strings."
+msgstr "PCRE valdiklis nepalaiko UTF-8 stringų."
+
+msgid "SPL module is not available."
+msgstr "Nėra SPL modulio."
+
+#, php-format
+msgid "MySQL version is %s (4.1 or earlier needed)."
+msgstr "MySQL verija %s (reikalinga 4.1 arba ankstesnė)."
+
+msgid "MySQL InnoDB engine is not available."
+msgstr "Nėra MySQL InnoDB engine."
+
+#, php-format
+msgid "PostgreSQL version is %s (8.0 or earlier needed)."
+msgstr "PostgreSQL versija %s (reikalinga 8.0 arba ankstesnė)."
+
+msgid "Please set a master key (DC_MASTER_KEY) in configuration file."
+msgstr "Nustatykite master key (DC_MASTER_KEY) konfigūraciniame faile."
+
+msgid "Dotclear is already installed."
+msgstr "Dotclear jau yra instaliuota."
+
+msgid "Dotclear cannot be installed."
+msgstr "Dotclear negali būti instaliuota."
+
+msgid "No user ID given"
+msgstr "Nepateiktas dalyvio ID"
+
+msgid "User ID must contain at least 2 characters using letters, numbers or symbols."
+msgstr "Dalyvio ID turi būti skaičių ir simbolių kombinaciją iš mažiausiai 2 ženklų."
+
+msgid "Invalid email address"
+msgstr "Netinkamas el. pašto adresas"
+
+msgid "No password given"
+msgstr "Nėra slaptažodžio"
+
+msgid "Password must contain at least 6 characters."
+msgstr "Slaptažodį turi sudaryti mažiausiai 6 ženklai."
+
+msgid "My first blog"
+msgstr "Mano pirmasis blogas"
+
+msgid "%A, %B %e %Y"
+msgstr "%A, %B %e %Y"
+
+msgid "Welcome to Dotclear!"
+msgstr "Jus sveikina Dotclear!"
+
+msgid "This is your first entry. When you're ready to blog, log in to edit or delete it."
+msgstr "Tai pirmas jūsų blogo įrašas. Prsijunkite norėdami ištrinti arba redaguoti šį įrašą."
+
+msgid "Dotclear Team"
+msgstr "Dotclear komanda"
+
+msgid ""
+"<p>This is a comment.</p>\n"
+"<p>To delete it, log in and view your blog's comments. Then you might remove or edit it.</p>"
+msgstr ""
+"<p>Čia yra komentaras.</p>\n"
+"<p>Prisijunkite tam, kad peržiūrėti ir trinti blogo komentarus.</p>"
+
+msgid "Dotclear Install"
+msgstr "Dotclear instaliacija"
+
+msgid "show"
+msgstr "rodyti"
+
+msgid "Dotclear installation"
+msgstr "Dotclear instaliacija"
+
+#, php-format
+msgid "Cache directory %s is not writable."
+msgstr "Cache direktorija %s neturi rašymo nustatymų."
+
+msgid "Errors:"
+msgstr "Klaidos:"
+
+msgid "Configuration file has been successfully created."
+msgstr "Konfigūracinis failas sėkmingai sukurtas."
+
+msgid "User information"
+msgstr "Dalyvio informacija"
+
+msgid "Please provide the following information needed to create the first user."
+msgstr "Pateikite informaciją reikalingą sukurti pimam dalyviui."
+
+msgid "First Name:"
+msgstr "Vardas:"
+
+msgid "Last Name:"
+msgstr "Pavardė:"
+
+msgid "Username and password"
+msgstr "Prisijungimo vardas ir slaptažodis"
+
+msgid "All done!"
+msgstr "Štai ir viskas!"
+
+msgid "Dotclear has been successfully installed. Here is some useful information you should keep."
+msgstr "Dotclear sėkmingai instaliuota. Čia pateikiama šiek tiek naudingos informacijos, kurią verta išsaugoti."
+
+msgid "Your account"
+msgstr "Jūsų paskyra"
+
+msgid "Your blog"
+msgstr "Jūsų blogas"
+
+msgid "Blog address:"
+msgstr "Blogo adresas:"
+
+msgid "Administration interface:"
+msgstr "Administravimo sąsaja:"
+
+msgid "Manage your blog now"
+msgstr "Tvarkykite savo blogą dabar"
+
+msgid "Installation can not be completed"
+msgstr "Instaliacija negali būti baigta"
+
+msgid "For the said reasons, Dotclear can not be installed. Please refer to <a href=\"http://dotclear.org/documentation/2.0/admin/install\">the documentation</a> to learn how to correct the problem."
+msgstr "Dėl šių priežaščių, instaliacija negali būti baigta. Peržiūrėkite susijusią <a href=\"http://dotclear.org/documentation/2.0/admin/install\">dokumentaciją (anglų k.)</a>, skitrą tokių problemų sprendimui."
+
+#, php-format
+msgid "File %s does not exist."
+msgstr "Failas %s neegzistuoja."
+
+#, php-format
+msgid "Cannot write %s file."
+msgstr "Negalima įrašyti failo %s."
+
+msgid "Dotclear installation wizard"
+msgstr "Dotclaer instaliavimas"
+
+msgid "Welcome"
+msgstr "Sveiki"
+
+msgid "To complete your Dotclear installation and start writing on your blog, we just need to know how to access your database and who you are. Just fill this two steps wizard with this information and we will be done."
+msgstr "Mums reikia žinoti kaip naudotis jūsų duomenų baze ir kas jūs esate tam, kad galėtume baigti Dotclear instaliaciją ir pradėtume rašyti blogą. Jums tereiks pateikti sekančią informaciją."
+
+msgid "Attention:"
+msgstr "Dėmesio:"
+
+msgid "this wizard may not function on every host. If it does not work for you, please refer to <a href=\"http://dotclear.org/documentation/2.0/admin/install\">the documentation</a> to learn how to create the <strong>config.php</strong> file manually."
+msgstr "šis diegimas gali neveikti kaikuriuose hostuose. Jeigu diegimas neveikia prašome peržiūrėti <a href=\"http://dotclear.org/documentation/2.0/admin/install\">dokumentaciją (anglų k.)</a>, kaip rankiniu būdu sukurti <strong>config.php</strong> failą."
+
+msgid "System information"
+msgstr "Sistemos informacija"
+
+msgid "Please provide the following information needed to create your configuration file."
+msgstr "Pateikite informaciją reikalingą tam, kad sukrti konfigūracinį failą."
+
+msgid "Database type:"
+msgstr "Database type:"
+
+msgid "Database Host Name:"
+msgstr "Database Host Name:"
+
+msgid "Database Name:"
+msgstr "Database Name:"
+
+msgid "Database User Name:"
+msgstr "Database User Name:"
+
+msgid "Database Password:"
+msgstr "Datenbank Passwort:"
+
+msgid "Database Tables Prefix:"
+msgstr "Datenbank Tabellen Präfix:"
+
+msgid "No such installed language"
+msgstr "Nųra tokios instaliuotos kalbos"
+
+msgid "You can't remove English language."
+msgstr "Anglų kalbos pašalinti negalima."
+
+msgid "Permissions to delete language denied."
+msgstr "Leidimas trinti kalbą atmestas."
+
+msgid "Invalid language file URL."
+msgstr "Negaliojantis kalbos failo URL."
+
+msgid "Languages management"
+msgstr "Kalbų tvarkymas"
+
+msgid "Language has been successfully deleted."
+msgstr "Kalba sėkmingai ištrinta"
+
+msgid "Language has been successfully installed."
+msgstr "Kalba sėkmingai instaliuota."
+
+msgid "Language has been successfully upgraded"
+msgstr "Kalba sėkmingai atnaujinta"
+
+msgid "Here you can install, upgrade or remove languages for your Dotclear installation."
+msgstr "Čia jūs galite instaliuoti, atnaujinti arba pašalinti kalbas iš Dotclear instaliacijos."
+
+#, 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 "Galite pakeisti savo kalbą <a href=\"%1$s\">nustatymuose</a>, arba pakeisti pagrindinę blogo kalbą <a href=\"%2$s\">blogo nustatymuose</a>."
+
+msgid "Installed languages"
+msgstr "Instaliuotos kalbos"
+
+msgid "No additional language is installed."
+msgstr "Jokia papildoma kalba nėra instaliuota"
+
+msgid "Language"
+msgstr "Kalba"
+
+msgid "Action"
+msgstr "Veiksmas"
+
+msgid "Delete"
+msgstr "Trinti"
+
+msgid "Install or upgrade languages"
+msgstr "Instaliuoti arba trinti kalbas"
+
+#, php-format
+msgid "You can install or remove a language by adding or removing the relevant directory in your %s folder."
+msgstr "Galite instaliuoti arba šalinti kalbą pridėdami arba pašalindami atitinkamą direktoriją savo %s byloje."
+
+msgid "Available languages"
+msgstr "Galimos kalbos"
+
+#, php-format
+msgid "You can download and install a additional language directly from Dotclear.net. Proposed languages are based on your version: %s."
+msgstr "Galite atsisiųsti ir instaliuoti papildomą kalbą tiesiai iš Dotclear.net. Kalbos pateikiamos jūsų versijos %s pagrindu."
+
+msgid "Language:"
+msgstr "Kalba:"
+
+msgid "Install language"
+msgstr "Instaliuoti kalbą"
+
+msgid "You can install languages by uploading zip files."
+msgstr "Galite instaliuoti kalbas ikeldami zip failus."
+
+msgid "Language zip file:"
+msgstr "Kalbos zip failas:"
+
+msgid "Upload language"
+msgstr "Įkelti kalbą"
+
+msgid "Invalid language zip file."
+msgstr "Netinkamas kalbos zip failas"
+
+msgid "The zip file does not appear to be a valid Dotclear language pack."
+msgstr "Šis zip failas netinka kaip Dotclear kalbų paketas."
+
+msgid "An error occurred during language upgrade."
+msgstr "Atnaujinant kalbą įvyko klaida."
+
+msgid "Error:"
+msgstr "Klaida:"
+
+msgid "By names, in ascending order"
+msgstr "Pagal vardus, didėjančia tvarka"
+
+msgid "By names, in descending order"
+msgstr "Pagal vardus, mažėjančia tvarka"
+
+msgid "By dates, in ascending order"
+msgstr "Pagal datas, didėjančia tvarka"
+
+msgid "By dates, in descending order"
+msgstr "Pagal datas, mažėjančia tvarka"
+
+msgid "Media manager"
+msgstr "Media tvarkyklė"
+
+msgid "confirm removal"
+msgstr "patvirtinti pašalinimą"
+
+#, php-format
+msgid "Are you sure you want to remove %s?"
+msgstr "Ar tikrai norite pašalinti %s?"
+
+msgid "cancel"
+msgstr "atšaukti"
+
+msgid "yes"
+msgstr "taip"
+
+msgid "Directory has been successfully created."
+msgstr "Direktorija sėkmingai sukurta."
+
+msgid "Files have been successfully uploaded."
+msgstr "Failai sėkmingai įkelti."
+
+msgid "File has been successfully removed."
+msgstr "Failai sėkmingai pašalinti."
+
+msgid "Directory has been successfully removed."
+msgstr "Direktorija sėkmingai pašalinta."
+
+msgid "Directory has been successfully rebuilt."
+msgstr "Direktorija sėkmingai atstatyta."
+
+msgid "Zip file has been successfully extracted."
+msgstr "Sėkmingai išarchyvuotas zip failas."
+
+#, php-format
+msgid "Choose a file to attach to entry %s by clicking on %s."
+msgstr "Pasirinkite prie įrašo %s prisegamą failą paspausdami %s."
+
+msgid "Attach this file to entry"
+msgstr "Prisegti šį failą prie įrašo"
+
+#, php-format
+msgid "Choose a file to insert into entry by clicking on %s."
+msgstr "Pasirinkite prie įrašo pridedamą failą paspausdami %s."
+
+msgid "No file."
+msgstr "Nėra failo."
+
+msgid "Sort files:"
+msgstr "Rūšiuoti failus:"
+
+msgid "Add files"
+msgstr "Pridėti failus"
+
+msgid "Choose a file:"
+msgstr "Pasirinkite failą:"
+
+#, php-format
+msgid "Maximum size %s"
+msgstr "Maksimalus dydis: %s"
+
+msgid "Private"
+msgstr "Privatus"
+
+msgid "send"
+msgstr "siųsti"
+
+msgid "Please take care to publish media that you own and that are not protected by copyright."
+msgstr "Prašome atsakingai skelbti turimus media elementus, kurie gali būti saugomi autorinių teisių."
+
+msgid "New directory"
+msgstr "Nauja direktorija"
+
+msgid "Directory Name:"
+msgstr "Direktorijos pavadinimas:"
+
+msgid "Download this directory as a zip file"
+msgstr "Atsisiųsti šią direktoriją zip failu"
+
+msgid "open"
+msgstr "atidaryti"
+
+msgid "Insert this file into entry"
+msgstr "Pridėti šį failą prie įrašo"
+
+msgid "Not a valid file"
+msgstr "Netinkamas failas"
+
+msgid "File has been successfully updated."
+msgstr "Failas sėkmingai atnaujintas"
+
+msgid "Thumbnails have been successfully updated."
+msgstr "Miniatiūra sėkmingai atnaujinta"
+
+msgid "Insert media item"
+msgstr "Pridėti media elementą"
+
+msgid "Image size:"
+msgstr "Paveikslėlio dydis:"
+
+msgid "original"
+msgstr "originalas"
+
+msgid "Image alignment"
+msgstr "Paveikslėlio lygiavimas"
+
+msgid "None"
+msgstr "Jokio"
+
+msgid "Left"
+msgstr "Kairė"
+
+msgid "Right"
+msgstr "Dešinė"
+
+msgid "Center"
+msgstr "Centras"
+
+msgid "Image insertion"
+msgstr "Paveikslėlio įdėjimas"
+
+msgid "As a single image"
+msgstr "Kaip vieną paveikslėlį"
+
+msgid "As a link to original image"
+msgstr "Kaip nuorodą į originalų paveikslėlį"
+
+msgid "MP3 disposition"
+msgstr "MP3 dispozicija"
+
+msgid "Please note that you cannot insert mp3 files with visual editor."
+msgstr "Dėmesio, MP3 failai negali būti įkeliami su Visual Editor"
+
+msgid "Please note that you cannot insert video files with visual editor."
+msgstr "Dėmesio, video failai negali būti įkeliami su Visual Editor"
+
+msgid "Video size"
+msgstr "Video dydis"
+
+msgid "Width:"
+msgstr "Plotis:"
+
+msgid "Height:"
+msgstr "Aukštis:"
+
+msgid "Video disposition"
+msgstr "Video dispozicija"
+
+msgid "Media item will be inserted as a link."
+msgstr "Medien elementas bus įkeltas kaip nuoroda."
+
+msgid "Cancel"
+msgstr "Atšaukti"
+
+msgid "Insert"
+msgstr "Įkelti"
+
+msgid "Media details"
+msgstr "Media detalės"
+
+msgid "Available sizes:"
+msgstr "Galimi dydžiai:"
+
+msgid "File owner:"
+msgstr "Failo savininkas:"
+
+msgid "File type:"
+msgstr "Failo tipas:"
+
+msgid "File size:"
+msgstr "Failo dydis:"
+
+msgid "File URL:"
+msgstr "Failo URL:"
+
+msgid "Show entries containing this media"
+msgstr "Rodyti įrašus su šiuo media elementu"
+
+msgid "Entries containing this media"
+msgstr "Įrašai su šiuo media elementu"
+
+msgid "No entry seems contain this media."
+msgstr "Nėra įrašų su šiuo media elementu"
+
+msgid "Image details"
+msgstr "Pavekslėlio detalės"
+
+msgid "No detail"
+msgstr "Nėra detalių"
+
+msgid "Update thumbnails"
+msgstr "Atnaujinti miniatiūras"
+
+msgid "This will create or update thumbnails for this image."
+msgstr "Šio paveikslėlio miniatiūros bus sukurtos arba atnaujintos."
+
+msgid "update thumbnails"
+msgstr "atnaujinti miniatiūras"
+
+msgid "Extract in a new directory"
+msgstr "Išarchyvuoti naujoje direktorijoje"
+
+msgid "Extract in current directory"
+msgstr "Išarchyvuoti šioje direktorijoje"
+
+msgid "Extract archive"
+msgstr "Išarchyvuoti"
+
+msgid "This will extract archive in a new directory that should not exist yet."
+msgstr "Išarchyvuojama naujoje direktorijoje, kuri neturėtų egzistuoti."
+
+msgid "This will extract archive in current directory and will overwrite existing files or directory."
+msgstr "Išarchyvuojama šioje direktorijoje, kuri bus perrašyta kartu su egzistuojančiais failais."
+
+msgid "Extract mode:"
+msgstr "Išarchyvavimo būdas:"
+
+msgid "extract"
+msgstr "išarchyvuoti"
+
+msgid "Change media properties"
+msgstr "Keisti media savybes"
+
+msgid "File name:"
+msgstr "Failo pavadinimas:"
+
+msgid "File title:"
+msgstr "Failo antraštė:"
+
+msgid "File date:"
+msgstr "Failo data:"
+
+msgid "New directory:"
+msgstr "Nauja direktorija:"
+
+msgid "Change file"
+msgstr "Keisti failą"
+
+msgid "No blog or user given."
+msgstr "Nepateiktas joks blogo dalyvis"
+
+msgid "permissions"
+msgstr "teisės"
+
+msgid "Permissions"
+msgstr "Teisės"
+
+msgid "The permissions have been successfully updated."
+msgstr "Teisės sėkmingai atnaujintos "
+
+#, php-format
+msgid "You are about to change permissions on the following blogs for users %s."
+msgstr "Jūs ruošiatės pakeisti šių blogo dalyvių %s teises."
+
+msgid "choose a blog"
+msgstr "pasirinkite blogą"
+
+msgid "Choose a blog"
+msgstr "Pasirinkite blogą"
+
+msgid "Entries per page"
+msgstr "Įrašų viename puslapyje"
+
+#, php-format
+msgid "Choose one or more blogs to which you want to give permissions to users %s."
+msgstr "Pasirinkite vieną ar daugiau blogų kurių teises norėtumėte suteikti dalyviams  %s."
+
+msgid "set permissions"
+msgstr "nustatyti teises"
+
+msgid "No content found on this plugin."
+msgstr "Šiame plugin'e jokio turinio nerasta."
+
+msgid "Plugin not found"
+msgstr "Plugin'as nerastas"
+
+msgid "The plugin you reached does not exist or does not have an admin page."
+msgstr "Plugin'as kurį pasiek'te neegzistuoja arba neturi administravimo puslapio."
+
+msgid "No such plugin."
+msgstr "Nėra tokio plugin'o"
+
+msgid "You don't have permissions to delete this plugin."
+msgstr "Neturite teisių ištrinti šį plugin'ą."
+
+msgid "You don't have permissions to deactivate this plugin."
+msgstr "Neturite teisių išjungti šį plugin'ą."
+
+msgid "Plugins management"
+msgstr "Plugin'ų valdymas"
+
+msgid "Plugin has been successfully deleted."
+msgstr "Plugin'as sėkmingai ištrintas."
+
+msgid "Plugin has been successfully installed."
+msgstr "Plugin'as sėkmingai instaliuotas."
+
+msgid "Plugin has been successfully upgraded"
+msgstr "Plugin'as sėkmingai atnaujintas."
+
+msgid "Plugins add new functionalities to Dotclear. Here you can activate or deactivate installed plugins."
+msgstr "Plugin'ai Dotclear prideda funkcionalumo. Čia galite įjungti ar išjungti instaliuotus plugin'us."
+
+#, php-format
+msgid "You can find additional plugins for your blog on %s."
+msgstr "Papildomus plugin'us galite rasti savo bloge %s."
+
+msgid "To install or upgrade a plugin you generally just need to upload it in \"Install or upgrade a plugin\" section."
+msgstr "Norėdami instaliuoti ar atnaujinti plugin'us, įkelkite juos į \"Instaliuoti arba atnaujinti plugin'ą\" ."
+
+msgid "To install or upgrade a plugin you just need to extract it in your plugins directory."
+msgstr "Norėdami instaliuoti ar atnaujinti plugin'ą išarchyvuokite jį plugin'ų direktorijoje"
+
+msgid "Plugins"
+msgstr "Plugin'ai"
+
+msgid "Activated plugins"
+msgstr "Įjungti plugin'ai"
+
+msgid "Plugin"
+msgstr "Plugin'as"
+
+msgid "Version"
+msgstr "Versija"
+
+msgid "Details"
+msgstr "Detalės"
+
+msgid "Deactivate"
+msgstr "Išjungti"
+
+msgid "Deactivated plugins"
+msgstr "Išjungti plgin'us"
+
+msgid "Activate"
+msgstr "Įjungti"
+
+msgid "Install or upgrade a plugin"
+msgstr "Instaliuoti arba atnaujinti plugin'ą"
+
+msgid "You can install plugins by uploading or downloading zip files."
+msgstr "Galite instaliuoti plugin'us įkeldami ar parsisiųsdami zip failus."
+
+msgid "Plugin zip file:"
+msgstr "Plugin'o zip failas"
+
+msgid "Upload plugin"
+msgstr "Įkelti plugin'ą"
+
+msgid "Plugin zip file URL:"
+msgstr "Plugin'o zip failo URL:"
+
+msgid "Download plugin"
+msgstr "Atisiųsti plugin'ą"
+
+msgid "To enable this function, please give write access to your plugins directory."
+msgstr "Įjunkite įrašymo teises savo plugin'ų direktorijai norėdami naudotis šia funkcija."
+
+msgid "Add a link"
+msgstr "Pridėti nuorodą"
+
+msgid "Available"
+msgstr "Galimas"
+
+msgid "Most used"
+msgstr "Dažniausiai naudojamas"
+
+msgid "Link URL:"
+msgstr "Nuorodos URL:"
+
+msgid "Link title:"
+msgstr "Nuorodos pavadinimas:"
+
+msgid "Link language:"
+msgstr "Nuorodos kalba:"
+
+msgid "insert"
+msgstr "įdėti"
+
+msgid "Add a link to an entry"
+msgstr "Pridėti nuorodą prie įrašo"
+
+msgid "Search entry:"
+msgstr "Ieškoti įraše:"
+
+msgid "This entry does not exist."
+msgstr "Šis įrašas neegzistuoja."
+
+msgid "Edit entry"
+msgstr "Įrašo redagavimas"
+
+msgid "next entry"
+msgstr "sekantis įrašas"
+
+msgid "previous entry"
+msgstr "ankstesnis įrašas"
+
+msgid "Entry has been successfully updated."
+msgstr "Įrašas sėkmingai atnaujintas"
+
+msgid "Entry has been successfully created."
+msgstr "Įrašas sėkmingai sukurtas."
+
+msgid "File has been successfully attached."
+msgstr "Failas sėkmingai prikabintas."
+
+msgid "Attachment has been successfully removed."
+msgstr "Priedas sėkmingai pašalintas."
+
+msgid "Comment has been successfully created."
+msgstr "Komentaras sėkmingai sukurtas."
+
+msgid "Don't forget to validate your XHTML conversion by saving your post."
+msgstr "Nepamirškite patvirtinti XHTML išsaugodami savo įrašą."
+
+msgid "View entry"
+msgstr "Žiūrėti įrašą"
+
+msgid "Preview entry"
+msgstr "Pažiūrėti įrašą"
+
+msgid "Entry status:"
+msgstr "Įrašo būklė:"
+
+msgid "Published on:"
+msgstr "Įrašytas:"
+
+msgid "Text formating:"
+msgstr "Teksto formatas:"
+
+msgid "Convert to XHTML"
+msgstr "Konvertuoti į XHTML"
+
+msgid "Selected entry"
+msgstr "Pasirinktas įrašas"
+
+msgid "Entry lang:"
+msgstr "Įrašo kalba:"
+
+msgid "Entry password:"
+msgstr "Įrašo slaptažodis:"
+
+msgid "Basename:"
+msgstr "Pagindinis vardas:"
+
+msgid "Warning: If you set the URL manually, it may conflict with another entry."
+msgstr "Dųmesio: Įrašydami URL ranka rizikuojate kad nuoroda gali atitikti kitą įrašą."
+
+msgid "Attachments"
+msgstr "Prisegimai"
+
+msgid "remove"
+msgstr "pašalinti"
+
+msgid "No attachment."
+msgstr "Nieko neprisegta."
+
+msgid "Add files to this entry"
+msgstr "Pridėti failus prie šio įrašo"
+
+msgid "Excerpt:"
+msgstr "Santrauka:"
+
+msgid "Notes:"
+msgstr "Pastabos:"
+
+msgid "Ping blogs"
+msgstr "Ping blogai"
+
+msgid "Trackbacks"
+msgstr "Trackback'ai"
+
+msgid "No trackback"
+msgstr "Trackback'ų nėra"
+
+msgid "Add a comment"
+msgstr "Pridėti komentarą"
+
+msgid "Name:"
+msgstr "Vardas:"
+
+msgid "IP address"
+msgstr "IP adresas"
+
+msgid "published"
+msgstr "publikuojamas"
+
+msgid "unpublished"
+msgstr "nepublikuojamas"
+
+msgid "pending"
+msgstr "laukiantis"
+
+msgid "junk"
+msgstr "šiukšlės"
+
+msgid "Edit this comment"
+msgstr "Redaguoti šį komentarą"
+
+msgid "This attachment does not exist"
+msgstr "Šis komentaras neegzistuoja"
+
+msgid "Remove attachment"
+msgstr "Pašalinti prisegtą failą"
+
+msgid "Attachment"
+msgstr "Prisegimas"
+
+msgid "Are you sure you want to remove this attachment?"
+msgstr "Ar tikrai norite pašalinti šį prisegimą?"
+
+msgid "selected"
+msgstr "pažymėtas"
+
+msgid "not selected"
+msgstr "nepažymėtas"
+
+msgid "Category"
+msgstr "Kategorija"
+
+msgid "Selected"
+msgstr "Pažymėta"
+
+msgid "Publish"
+msgstr "Publikuoti"
+
+msgid "Unpublish"
+msgstr "Nebepublikuoti"
+
+msgid "Schedule"
+msgstr "Tvarkaraštis"
+
+msgid "Mark as pending"
+msgstr "Žymėti kaip laukiantį"
+
+msgid "Mark"
+msgstr "Žymėti"
+
+msgid "Mark as selected"
+msgstr "Žymėti kaip pasirinktus"
+
+msgid "Mark as unselected"
+msgstr "Žymėti kaip nepasirinktus"
+
+msgid "Change"
+msgstr "Keisti"
+
+msgid "Change category"
+msgstr "Keisti direktoriją"
+
+msgid "Change author"
+msgstr "Keisti autorių"
+
+msgid "Selected:"
+msgstr "Pažymėtas:"
+
+msgid "Month:"
+msgstr "Mėnuo:"
+
+msgid "Lang:"
+msgstr "Kalba:"
+
+msgid "Selected entries action:"
+msgstr "Pasirinktų įrašų veiksmas:"
+
+msgid "This user does not exist"
+msgstr "Šis dalyvis neegzistuoja"
+
+msgid "Change category for entries"
+msgstr "Keisti įrašų kategoriją"
+
+msgid "Change author for entries"
+msgstr "Keisti įrašų autorių"
+
+msgid "Author ID:"
+msgstr "Autoriaus ID:"
+
+msgid "If you want to change your email or password you must provide your current password."
+msgstr "Norėdami pakeisti savo el. paštą ar slaptažodį privalote pateikti dabartinį savo slaptažodį."
+
+msgid "Personal information has been successfully updated."
+msgstr "Asmeninė informacija sėkmingai atnaujinta."
+
+msgid "Display name:"
+msgstr "Rodyti vardą:"
+
+msgid "Preferred format:"
+msgstr "Pageidaujamas formatas:"
+
+msgid "Default entry status:"
+msgstr "Tipinė įrašo būklė:"
+
+msgid "Entry edit field height:"
+msgstr "Įrašo laukelio aukščio redagavimas:"
+
+msgid "User language:"
+msgstr "Dalyvio kalba:"
+
+msgid "User timezone:"
+msgstr "Dalyvio laiko juosta:"
+
+msgid "Enable WYSIWYG mode"
+msgstr "Įjungti WYSIWYG rėžimą"
+
+msgid "Search"
+msgstr "Paieška"
+
+msgid "Search options"
+msgstr "Paieškos nustatymai"
+
+msgid "Query:"
+msgstr "Užklausa:"
+
+msgid "search entries"
+msgstr "paieškos įrašai"
+
+msgid "search comments"
+msgstr "paieškos komentarai"
+
+msgid "schedule"
+msgstr "tvarkaraštis"
+
+msgid "change category"
+msgstr "keisti kategoriją"
+
+msgid "change author"
+msgstr "keisti autorių"
+
+#, php-format
+msgid "%d entries found"
+msgstr "Rasti %d įrašai"
+
+#, php-format
+msgid "%d entry found"
+msgstr "Rastas %d įrašas"
+
+#, php-format
+msgid "%d comment found"
+msgstr "Rastas %d komentaras"
+
+#, php-format
+msgid "%d comments found"
+msgstr "Rasti %d komentarai"
+
+msgid "This entry does not exist or is not published"
+msgstr "Įrašas neegzistuoja arba nėra publikuotas"
+
+msgid "All pings sent."
+msgstr "Visos ping komandos išsiųstos"
+
+msgid "Auto discover ping URLs"
+msgstr "Automatiškai rasti ping URLus"
+
+msgid "URLs to ping:"
+msgstr "URL kuriems siunčiamas ping:"
+
+msgid "Send excerpt:"
+msgstr "Siųsti ištrauką:"
+
+msgid "Previously sent pings"
+msgstr "Anksčiau siųsti ping"
+
+msgid "Dotclear update"
+msgstr "Dotclear atnaujinimas"
+
+#, php-format
+msgid "Unable to delete file %s"
+msgstr "Nepavyko ištrinti failo %s"
+
+#, php-format
+msgid "Downloaded Dotclear archive seems to be corrupted. Try <a %s>download it</a> again."
+msgstr "Atisiųstas Dotclear archyvas greičiausiai yra sugadintas. Pabandykite <a %s>atsisiųsti archyvą</a> iš naujo."
+
+msgid "The following files of your Dotclear installation have been modified so we won't try to update your installation. Please try to <a href=\"http://dotclear.org/download\">update manually</a>."
+msgstr "Šie Dotclear instaliaciniai failai buvo pakeisti taigi nebus bandoma atnaujinti instaliacijos. Prašome <a href=\"http://dotclear.org/download\">atnaujinti rankiniu būdu</a>."
+
+#, php-format
+msgid "The following files of your Dotclear installation are not readable. Please fix this or try to make a backup file named %s manually."
+msgstr "Šių Dotclear instaliacinių failų neįmanoma perkaityti. Sutaisykite tai arba padarykite atsarginę kopiją pavadintą %s rankiniu būdu."
+
+msgid "The following files of your Dotclear installation cannot be written. Please fix this or try to <a href=\"http://dotclear.org/download\">update manually</a>."
+msgstr "Šių Dotclear instaliacinių failų neįmanoma įrašyti. Sutaisykite tai arba bandykite <a href=\"http://dotclear.org/download\">atnaujinti rankiniu būdu</a>."
+
+msgid "No newer Dotclear version available."
+msgstr "Naujesnė Dotclear versija neegzistuoja."
+
+#, php-format
+msgid "Dotclear %s is available."
+msgstr "Galima atisiųsti naują Dotclear %s versiją."
+
+msgid "To upgrade your Dotclear installation simply click on the following button. A backup file of your current installation will be created in your root directory."
+msgstr "Norėdami atnaujinti Dotclear instaliaciją spustelkite sekantį mygtuką. Atsarginė dabartinės instaiacijos kopija bus sukurta root direktorijoje."
+
+msgid "Update Dotclear"
+msgstr "Atnaujinti Dotclear"
+
+msgid "Update backup files"
+msgstr "Atnaujinti failų atsargines kopijas"
+
+msgid "The following files are backups of previously updates. You can revert your previous installation or delete theses files."
+msgstr "Šie failai yra ankstesnių atnaujinimų atsarginės kopijos. Galite atkurti ankstesnę instaliaciją arba ištrinti šiuos failus."
+
+msgid "Please note that reverting your Dotclear version may have some unwanted side-effects. Consider reverting only if you experience strong issues with this new version."
+msgstr "Dėmesio, ankstesnės Dotclear versijos atstatymas gali turėti tam tikrų nepageidaujamų šalutinių padarinių. Atstatinėkite ankstesnę versiją tik jei turite rimtų problemų su naujaja versija."
+
+#, php-format
+msgid "You should not revert to version prior to last one (%s)."
+msgstr "Neturėtumėte atstatinėti ankstesnės nei prieš tai buvusi versija (%s)."
+
+msgid "Delete selected file"
+msgstr "Trinti pasirinktą failą"
+
+msgid "Revert to selected file"
+msgstr "Atstatyti pasirinktą failą"
+
+msgid "Congratulations, you're one click away from the end of the update."
+msgstr "Sveikinimai, esate per vieną paspaudimą nuo atnaujinimo pabaigos."
+
+msgid "Finish the update."
+msgstr "Baigti atnaujinimą."
+
+msgid "new user"
+msgstr "naujas dalyvis"
+
+#, php-format
+msgid "User \"%s\" already exists."
+msgstr "Dalyvis \"%s\" jau yra."
+
+msgid "User has been successfully updated."
+msgstr "Dalyvis sėkmingai atnaujintas."
+
+msgid "User has been successfully created."
+msgstr "Dalyvis sėkmingai sukurtas."
+
+msgid "Warning:"
+msgstr "Dėmesio:"
+
+msgid "If you change your username, you will have to log in again."
+msgstr "Pakeitęs savo prisijungimo vardą turėsite iš naujo prisijungti."
+
+msgid "Password change required to connect"
+msgstr "Prisijungimui reikalingas slaptažodžio pakeitimas."
+
+msgid "No permissions."
+msgstr "Teisių nėra."
+
+msgid "Add new permissions"
+msgstr "Pridėti naujų teisių"
+
+msgid "Username"
+msgstr "Prisijungimo vvardas"
+
+msgid "Last Name"
+msgstr "Pavardė"
+
+msgid "First Name"
+msgstr "Vardas"
+
+msgid "Display name"
+msgstr "Rodomas vardas"
+
+msgid "Number of entries"
+msgstr "Įrašų skaičius"
+
+msgid "Set permissions"
+msgstr "Nustatyti teises"
+
+msgid "users"
+msgstr "dalyviai"
+
+msgid "User has been successfully removed."
+msgstr "Dalyvis sėkmingai pašalintas"
+
+msgid "Create a new user"
+msgstr "Sukurti naują dalyvį"
+
+msgid "Users per page"
+msgstr "Dalyvių viename puslapyje"
+
+msgid "Selected users action:"
+msgstr "Veiskmas pasirinktiems dalyviams:"
+
+msgid "Blog:"
+msgstr "Blogas:"
+
+msgid "Change blog"
+msgstr "Keisti blogą"
+
+msgid "Blogs:"
+msgstr "Blogai:"
+
+msgid "View site"
+msgstr "Žiūrėti puslapį"
+
+msgid "User:"
+msgstr "Dalyvis:"
+
+msgid "Logout"
+msgstr "Atsijungti"
+
+#, php-format
+msgid "Thank you for using %s."
+msgstr "Ačiū, kad naudojatės %s."
+
+msgid "Help"
+msgstr "Pagalba"
+
+msgid "uncover"
+msgstr "rodyti"
+
+msgid "hide"
+msgstr "slėpti"
+
+msgid "help"
+msgstr "pagalba"
+
+msgid "no selection"
+msgstr "be pasirinkimo"
+
+msgid "select all"
+msgstr "pasirinkti viską"
+
+msgid "invert selection"
+msgstr "atvirkščias pasirinkimas"
+
+msgid "view entry"
+msgstr "žiūrėti įrašą"
+
+#, php-format
+msgid "Are you sure you want to delete selected entries (%s)?"
+msgstr "Ar tikrai norite ištrinti pasirinktus įrašus (%s)?"
+
+msgid "Are you sure you want to delete this entry?"
+msgstr "Ar tikrai norite ištrinti šį įrašą?"
+
+#, php-format
+msgid "Are you sure you want to delete selected comments (%s)?"
+msgstr "Ar tikrai norite ištrinti pasirinktus komentarus (%s)?"
+
+msgid "Are you sure you want to delete this comment?"
+msgstr "Ar tikrai norite ištrinti šį komentarą?"
+
+msgid "Users with posts cannot be deleted."
+msgstr "Dalyviai turintys įrašų negali būti ištrinti."
+
+#, php-format
+msgid "Are you sure you want to delete selected users (%s)?"
+msgstr "Ar tikrai norite ištrinti pasirinktus dalyvius (%s)?"
+
+#, php-format
+msgid "Are you sure you want to delete category \"%s\"?"
+msgstr "Ar tikrai norite ištrinti kategoriją \"%s\"?"
+
+msgid "Are you sure you want to reorder all categories?"
+msgstr "Ar tikrai norite pertvarkyti visas kategorijas?"
+
+#, php-format
+msgid "Are you sure you want to remove media \"%s\"?"
+msgstr "Ar tikrai norite pašalinti media \"%s\"?"
+
+msgid "Are you sure you want to extract archive in current directory?"
+msgstr "Ar tikrai norite išarchyvuoti šioje direktorijoje?"
+
+#, php-format
+msgid "Are you sure you want to remove attachment \"%s\"?"
+msgstr "Ar tikrai norite pašalinti prisegimą \"%s\"?"
+
+#, php-format
+msgid "Are you sure you want to delete \"%s\" language?"
+msgstr "Ar tikrai norite ištrinti \"%s\" kalbą?"
+
+#, php-format
+msgid "Are you sure you want to delete \"%s\" plugin?"
+msgstr "Ar tikrai norite ištrinti \"%s\" plugin'ą?"
+
+msgid "Use this theme"
+msgstr "Naudoti šią temą"
+
+msgid "Remove this theme"
+msgstr "Pašalinti šią temą"
+
+#, php-format
+msgid "Are you sure you want to delete \"%s\" theme?"
+msgstr "Ar tikrai norite ištrinti \"%s\" temą?"
+
+msgid "Zip file content"
+msgstr "Zip failo turinys"
+
+msgid "XHTML markup validator"
+msgstr "XHTML markup validator"
+
+msgid "XHTML content is valid."
+msgstr "XHTML turinys tinkamas."
+
+msgid "There are XHTML markup errors."
+msgstr "Yra XHTML markup klaidų."
+
+msgid "You have unsaved changes. Switch post format will loose these changes. Proceed anyway?"
+msgstr "Yra neišsaugotų pakeitimų. Įrašo formato keitimas panaikins visus atnaujinimus. Tęsti?"
+
+msgid "You have unsaved changes."
+msgstr "Yra neišsaugotų pakeitimų. "
+
+msgid "close"
+msgstr "uždaryti"
+
+msgid "now"
+msgstr "dabar"
+
+msgid "visual"
+msgstr "rodomas"
+
+msgid "source"
+msgstr "kodas"
+
+msgid "You can use the following shortcuts to format your text."
+msgstr "Teksto formatavimui galite naudoti šias santrumpas."
+
+msgid "-- none --"
+msgstr "-- nepasirinkta --"
+
+msgid "-- block format --"
+msgstr "-- paragrafo formatas --"
+
+msgid "Paragraph"
+msgstr "Paragrafas"
+
+msgid "Level 1 header"
+msgstr "1 lygio antraštė"
+
+msgid "Level 2 header"
+msgstr "2 lygio antraštė"
+
+msgid "Level 3 header"
+msgstr "3 lygio antraštė"
+
+msgid "Level 4 header"
+msgstr "4 lygio antraštė"
+
+msgid "Level 5 header"
+msgstr "5 lygio antraštė"
+
+msgid "Level 6 header"
+msgstr "6 lygio antraštė"
+
+msgid "Strong emphasis"
+msgstr "Ryškus išskyrimo šriftas"
+
+msgid "Emphasis"
+msgstr "Išskyrimo šriftas"
+
+msgid "Inserted"
+msgstr "Įdėtas"
+
+msgid "Deleted"
+msgstr "Ištrintas"
+
+msgid "Inline quote"
+msgstr "Citata"
+
+msgid "Code"
+msgstr "Kodas"
+
+msgid "Line break"
+msgstr "Kita eilutė"
+
+msgid "Blockquote"
+msgstr "Kitas paragrafas"
+
+msgid "Preformated text"
+msgstr "Suformatuotas tekstas"
+
+msgid "Unordered list"
+msgstr "Nerūšiuotas sąrašas"
+
+msgid "Ordered list"
+msgstr "Rūšiuotas sąrašas"
+
+msgid "Link"
+msgstr "Nuoroda"
+
+msgid "URL?"
+msgstr "URL?"
+
+msgid "Language?"
+msgstr "Kalba?"
+
+msgid "External image"
+msgstr "Išorinis paveikslėlis"
+
+msgid "Media chooser"
+msgstr "Media pasrinkimas"
+
+msgid "Link to an entry"
+msgstr "Nuoroda į įrašą"
+
+msgid "Activate enhanced uploader"
+msgstr "Įjungti enhanced Uploader"
+
+msgid "Disable enhanced uploader"
+msgstr "Išjungti enhanced uploader"
+
+msgid "File successfully uploaded."
+msgstr "Failas sėkmingai įkeltas"
+
+msgid "Maximum file size allowed:"
+msgstr "Maksimalus leistinas failo dydis:"
+
+msgid "Limit exceeded."
+msgstr "Limitas viršytas."
+
+msgid "File size exceeds allowed limit."
+msgstr "Failo dydis viršija leistiną ribą."
+
+msgid "Canceled."
+msgstr "Atšaukta."
+
+msgid "HTTP Error:"
+msgstr "HTTP klaida:"
+
+msgid "Choose file"
+msgstr "Pasirinkti failą"
+
+msgid "Choose files"
+msgstr "Pasirinkti failus"
+
+msgid "Clean"
+msgstr "Išvalyti"
+
+msgid "Upload"
+msgstr "Įkelti"
+
+msgid "No file in queue."
+msgstr "Eilėje failo nėra."
+
+msgid "1 file in queue."
+msgstr "Eilėje 1 failas."
+
+#, php-format
+msgid "%d files in queue."
+msgstr "%d failai eilėje."
+
+msgid "Queue error:"
+msgstr "Eilės klaida:"
+
+msgid "&#171;prev."
+msgstr "&#171;ankst."
+
+msgid "next&#187;"
+msgstr "sek&#187;"
+
+msgid "No entry"
+msgstr "Įrašo nėra"
+
+msgid "scheduled"
+msgstr "suplanuotas"
+
+msgid "protected"
+msgstr "apsaugotas"
+
+#, php-format
+msgid "%d attachment"
+msgstr "%d prisegimas"
+
+#, php-format
+msgid "%d attachments"
+msgstr "%d prisegimai"
+
+msgid "Type"
+msgstr "Tipas"
+
+msgid "No user"
+msgstr "Nėra dalyvio"
+
+msgid "admin"
+msgstr "admin"
+
+msgid "superadmin"
+msgstr "Super Administratorius"
+
+msgid "Database error"
+msgstr "Datenbankfehler"
+
+msgid "There seems to be no Session table in your database. Is Dotclear completly installed?"
+msgstr "Jūsų duomenų bazėje nėra Session table . Ar Dotclear yra pilkai instaliuotas?"
+
+msgid "System"
+msgstr "Sistema"
+
+msgid "Blog"
+msgstr "Blogas"
+
+msgid "Updates"
+msgstr "Atnaujinimai"
+
+msgid "Languages"
+msgstr "Kalbos"
+
+msgid "Unable to open directory."
+msgstr "Nepavyksta atidaryti direktorijos"
+
+msgid "Unable to create directory."
+msgstr "Nepavyksta sukurti direktorijos"
+
+msgid "File is not writable."
+msgstr "Failui nesuteiktos rašymo teisės."
+
+msgid "Unable to open file."
+msgstr "Nepavyksta atidaryti failo."
+
+msgid "Not an uploaded file."
+msgstr "Ne įkeltas failas."
+
+msgid "The uploaded file exceeds the maximum file size allowed."
+msgstr "Įkeltas failas viršija maksimalų leistiną dydį."
+
+msgid "The uploaded file was only partially uploaded."
+msgstr "Buvo įkelta tik dalis failo."
+
+msgid "No file was uploaded."
+msgstr "Failas nebuvo įkeltas."
+
+msgid "Missing a temporary folder."
+msgstr "Nėra temporary direktorijos."
+
+msgid "Failed to write file to disk."
+msgstr "Nepavyko įrašyti į diską."
+
+#, php-format
+msgid "%s is not a directory."
+msgstr "%s yra ne direktorija."
+
+msgid "Uploading this file is not allowed."
+msgstr "Šio failo įkėlimas yra neleidžiamas."
+
+msgid "Destination directory is not in jail."
+msgstr "Direktorija nėra užrakinta."
+
+msgid "File already exists."
+msgstr "Failas jau egzistuoja."
+
+msgid "Cannot write in this directory."
+msgstr "Negalima įrašyti į šią direktoriją."
+
+msgid "An error occurred while writing the file."
+msgstr "Įrašant failą įvyko klaida."
+
+msgid "Source file does not exist."
+msgstr "Pradinis failas neegzistuoja."
+
+msgid "File is not in jail."
+msgstr "Failas nėra užrakintas."
+
+msgid "Destination directory is not writable."
+msgstr "Paskirta direktorija neturi rašymo teisių."
+
+msgid "Unable to rename file."
+msgstr "Nepavyko pervadinti failo."
+
+msgid "File cannot be removed."
+msgstr "Failas negali būti pašalintas."
+
+msgid "Directory is not in jail."
+msgstr "Direktorija nėra užrakinta."
+
+msgid "Directory cannot be removed."
+msgstr "Direktorija negali būti pašakinta"
+
+msgid "Not enough memory to open image."
+msgstr "Nepakanka atminties atidaryti paveikslėliui."
+
+#, php-format
+msgid "File %s is not compressed in the zip."
+msgstr "Failas %s nėra suarchyvuotas zip formatu."
+
+#, php-format
+msgid "Trying to unzip a folder name %s"
+msgstr " Bandoma išarchyvuoti bylą pavadinimu %s"
+
+msgid "Unable to write destination file."
+msgstr "Nepavyksta įrašyti į paskirtą failą."
+
+msgid "Unable to write in target directory, permission denied."
+msgstr "Nepavyksta įrašyti į adresuotą direktoriją, priėjimas draudžiamas."
+
+msgid "Not enough memory to open file."
+msgstr "Nepakanka atminties atidaryti failui."
+
+msgid "File does not exist"
+msgstr "Failas neegzistuoja"
+
+msgid "Cannot read file"
+msgstr "Nepavyksta perskaityti failo"
+
+msgid "Directory does not exist"
+msgstr "Direktorija neegzistuoja"
+
+msgid "Cannot read directory"
+msgstr "Nepavyksta perskaityti direktorijos"
+
+msgid "administrator"
+msgstr "administratorius"
+
+msgid "manage their own entries and comments"
+msgstr "tvarkyti savo įrašus ir komentarus"
+
+msgid "publish entries and comments"
+msgstr "publikuoti įrašus ir komentarus"
+
+msgid "delete entries and comments"
+msgstr "trinti įrašus ir komentarus"
+
+msgid "manage all entries and comments"
+msgstr "tvarkyti visus įrašus ir komentarus"
+
+msgid "manage categories"
+msgstr "tvarkyti kategorijas"
+
+msgid "manage their own media items"
+msgstr "tvarkyti savo media elementus"
+
+msgid "manage all media items"
+msgstr "tvarkyti visus media elementus"
+
+msgid "That user does not exist in the database."
+msgstr "Šis dalyvis neegzistuoja duomenų bazėje."
+
+msgid "That key does not exist in the database."
+msgstr "Šis požymis neegzistuoja duomenų bazėje."
+
+msgid "You are not allowed to add categories"
+msgstr "Jums nėra leidžiama pridėti kategorijas"
+
+msgid "You are not allowed to update categories"
+msgstr "Jums nėra leidžiama atnaujinti kategorijų"
+
+msgid "You are not allowed to delete categories"
+msgstr "Jums nėra leidžiama trinti kategorijų"
+
+msgid "This category is not empty."
+msgstr "Ši kategorija nėra tuščia"
+
+msgid "Category URL must be unique."
+msgstr "Kategorijos URL turi būti unikalus"
+
+msgid "You must provide a category title"
+msgstr "Turite nurodyti kategorijos pavadinimą"
+
+msgid "You must provide a category URL"
+msgstr "Turite nurodyti kategorijos URL"
+
+msgid "You are not allowed to create an entry"
+msgstr "Jums neleidžiama kurti įrašų"
+
+msgid "You are not allowed to update entries"
+msgstr "Jums neleidžiama kurti atnaujinti įrašų"
+
+msgid "No such entry ID"
+msgstr "Tokio įrašo ID nėra"
+
+msgid "You are not allowed to edit this entry"
+msgstr "Jums neleidžiama redaguoti šio įrašo"
+
+msgid "You are not allowed to change this entry status"
+msgstr "Jums neleidžiama keisti šio įrašo statuso"
+
+msgid "You are not allowed to change this entry category"
+msgstr "Jums neleidžiama keisti šio įrašo kategorijos"
+
+msgid "You are not allowed to mark this entry as selected"
+msgstr "Jums neleidžiama pažymėti šio įrašo kaip pasirinkto"
+
+msgid "You are not allowed to delete entries"
+msgstr "Jums neleidžiama trinti įrašų"
+
+msgid "You are not allowed to delete this entry"
+msgstr "Jums neleidžiama trinti šio įrašo"
+
+msgid "No entry title"
+msgstr "Nėra įrašo pavadinimo"
+
+msgid "No entry content"
+msgstr "Nėra įrašo turinio"
+
+msgid "Empty entry URL"
+msgstr "Tuščias įrašo URL"
+
+msgid "You are not allowed to update comments"
+msgstr "Jums neleidžiama atnaujinti komentarų"
+
+msgid "No such comment ID"
+msgstr "Tokio komentaro ID nėra"
+
+msgid "You are not allowed to update this comment"
+msgstr "Jums neleidžiama atnaujinti šio komentaro"
+
+msgid "You are not allowed to change this comment's status"
+msgstr "Jums neleidžiama keisti šio komentaro statuso"
+
+msgid "You are not allowed to delete comments"
+msgstr "Jums neleidžiama trinti komentarų"
+
+msgid "You are not allowed to delete this comment"
+msgstr "Jums neleidžiama trinti šio komentaro"
+
+msgid "You must provide a comment"
+msgstr "Turite pateikti komentarą"
+
+msgid "You must provide an author name"
+msgstr "Turite pateikti autoriaus vardą"
+
+msgid "Email address is not valid."
+msgstr "El. pašto adresas negalioja"
+
+msgid "online"
+msgstr "prisijungęs"
+
+msgid "offline"
+msgstr "neprisijungęs"
+
+msgid "removed"
+msgstr "ištrintas"
+
+msgid "You are not an administrator"
+msgstr "Jūs nesate administratorius"
+
+msgid "Invalid user language code"
+msgstr "Negaliojantis dalyvio kalbos kodas"
+
+msgid "Blog ID must contain at least 2 characters using letters, numbers or symbols."
+msgstr "Blogo ID turi sudaryti raidžių, skaičių ir simbolių kombinaciją iš mažiausiai 2 ženklų."
+
+msgid "No blog name"
+msgstr "Nėra blogo pavadinimo"
+
+msgid "No blog URL"
+msgstr "Nėra blogo URL"
+
+msgid "No log message"
+msgstr "Nėra registro žinutės"
+
+msgid "unknown"
+msgstr "nežinoma"
+
+msgid "medium"
+msgstr "Vidutinis:"
+
+msgid "small"
+msgstr "Mažas:"
+
+msgid "thumbnail"
+msgstr "Miniatiūra:"
+
+msgid "square"
+msgstr "kvadratas"
+
+msgid "No blog defined."
+msgstr "Nenurodytas joks blogas"
+
+#, php-format
+msgid "Directory %s does not exist."
+msgstr "Direktorija %s neegzistuoja."
+
+msgid "You are not a super administrator."
+msgstr "Jūs nesate super administratorius."
+
+msgid "Permission denied."
+msgstr "Priėjimas draudžiamas."
+
+msgid "You are not the file owner."
+msgstr "Jūs nesate failo savininkas."
+
+msgid "New file already exists."
+msgstr "Naujas failas jau egzistuoja."
+
+msgid "File does not exist in the database."
+msgstr "Failo nėra duomenų bazėje."
+
+#, php-format
+msgid "Extract destination directory %s already exists."
+msgstr "Išarchyvuojama direktorija %s jau egzistuoja."
+
+msgid "Embedded Audio Player"
+msgstr "Embedded Audio Player"
+
+msgid "Embedded Video Player"
+msgstr "Embedded Video Player"
+
+#, php-format
+msgid "%s: in [%s] and [%s]"
+msgstr "%s: į [%s] ir [%s]"
+
+msgid "Empty module zip file."
+msgstr "Tuščias modulio zip failas"
+
+msgid "The zip file does not appear to be a valid Dotclear module."
+msgstr "Tai nėra tinkamas Dotclear modulio zip failas."
+
+msgid "An error occurred during module deletion."
+msgstr "Modulio trynimo metu įvykl klaida."
+
+#, php-format
+msgid "Unable to upgrade \"%s\". (same version)"
+msgstr "Nepavyko atnaujinti \"%s\". (ta pati versija)"
+
+msgid "Unable to read new _define.php file"
+msgstr "Nepavyko perskaityti naujo _define.php failo"
+
+msgid "No such module."
+msgstr "Nėra tokio modulio."
+
+msgid "Cannot remove module files"
+msgstr "Negalima pašalinti modulio failų"
+
+msgid "Cannot deactivate plugin."
+msgstr "Negalima išjungti plugin'o"
+
+msgid "Cannot activate plugin."
+msgstr "Negalima įjungti plugin'o"
+
+#, php-format
+msgid "Invalid setting dcNamespace: %s"
+msgstr "Negaliojantis nustatymas dcNamespace: %s"
+
+msgid "Unable to retrieve settings:"
+msgstr "Nepavyksta gauti nustatymų:"
+
+#, php-format
+msgid "%s is not a valid setting id"
+msgstr "%s yra negaliojantis nustatymų id"
+
+msgid "No namespace specified"
+msgstr "Namespace nenurodytas."
+
+msgid "Unable to retrieve namespaces:"
+msgstr "Nepavyko gauti namespaces:"
+
+#, php-format
+msgid "Invalid setting namespace: %s"
+msgstr "Negaliojantys nustatymai namespace: %s"
+
+#, php-format
+msgid "%s has still been pinged"
+msgstr "%s vis dar siunčiamas ping"
+
+msgid "Unable to ping URL"
+msgstr "Nepavyksta siųsti ping URL"
+
+#, php-format
+msgid "%s is not a ping URL"
+msgstr "%s nėra ping URL"
+
+#, php-format
+msgid "%s, ping error:"
+msgstr "%s, ping klaida:"
+
+msgid "Digests file not found."
+msgstr "Digests failas nerastas."
+
+msgid "No file to download"
+msgstr "Nėra failo atsisiuntimui"
+
+msgid "Root directory is not writable."
+msgstr "Root direktorijai nesuteiktos rašymo teisės."
+
+msgid "An error occurred while downloading archive."
+msgstr "Atisiunčiant archyvą įvykl klaida."
+
+msgid "Archive not found."
+msgstr "Archyvas nerastas."
+
+msgid "Unable to read current digests file."
+msgstr "Nepavyksta perskaityti dabartinio digests failo."
+
+msgid "Downloaded file does not seem to be a valid archive."
+msgstr "Atsiųstas archyvas yra netinkamo formato."
+
+msgid "Incomplete archive."
+msgstr "Nepilnas archyvas."
+
+msgid "Unable to read digests file."
+msgstr "Nepavyksta perskaityti digests failo."
+
+msgid "Invalid digests file."
+msgstr "Negaliojantis digests failas."
+
+msgid "SQLite Database Schema cannot be upgraded."
+msgstr "SQLite Database Schema negali būti atnaujinta."
+
+msgid "Something went wrong with auto upgrade:"
+msgstr "Automatinio atnaujinimo metu įvyko klaida:"
+
+msgid "Unable to connect to database"
+msgstr "Nepavyksta prisijungti prie duomenų bazės"
+
+#, php-format
+msgid "<p>This either means that the username and password information in your <strong>config.php</strong> file is incorrect or we can't contact the database server at \"<em>%s</em>\". This could mean your host's database server is down.</p> <ul><li>Are you sure you have the correct username and password?</li><li>Are you sure that you have typed the correct hostname?</li><li>Are you sure that the database server is running?</li></ul><p>If you're unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href=\"http://forum.dotclear.net/\">Dotclear Support Forums</a>.</p>"
+msgstr "<p>Tai reiškia, kad arba username ir slaptažodis jūsų <strong>config.php</strong> faile yra neteisingi arba neįmanoma prisijungti prie duomenų bazės serverio \"<em>%s</em>\". Gali būti kad jūsų hosto duomenų bazės serveris neveikia.</p> <ul><li>Ar esate įsitikinęs, kad duomenų bazės prisijungimo duomenys geri?</li><li>Ar suvedėte teisingą hostname?</li><li>Ar duomenų bazės serveris tikrai veikia?</li></ul><p>Jei nesate tikras ką šie terminai reiškia, patariame susisiekti su hostingo tiekėju. Jei vis dar reikia pagalbos visada galite apsilankyti <a href=\"http://forum.dotclear.net/\">Dotclear Support Forums</a>.</p>"
+
+msgid "The following error was encountered while trying to read the database:"
+msgstr "Bandant nuskaityti duomenų bazę įvyko tokios klaidos:"
+
+#~ msgid "The file <strong>%s</strong> already exists. If you need to reset any of the configuration items in this file, please delete it first or you may <a href=\"%s\">continue to install</a>."
+#~ msgstr "Die Datei <strong>%s</strong> existiert bereits. Willst Du die Einträge in der Konfigurationsdatei zurücksetzen, bitte lösche diese erst oder fahre mit <a href=\"%s\">der Installation fort</a>."
+
+#~ msgid "Login:"
+#~ msgstr "Login:"
+
+#~ msgid "Login and password"
+#~ msgstr "Login und Passwort:"
+
+#~ msgid "User ID"
+#~ msgstr "Benutzer ID"
+
+#~ msgid "Name"
+#~ msgstr "Name"
Index: locales/lt/plugins.po
===================================================================
--- locales/lt/plugins.po	(revision 813)
+++ locales/lt/plugins.po	(revision 813)
@@ -0,0 +1,1410 @@
+# German translation of DotClear
+# Copyright (C) 2008.
+# Andreas Diller <nendilo@gmail.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Dotclear 2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-01-14 22:01+0100\n"
+"PO-Revision-Date: 2012-04-19 03:20+0100\n"
+"Last-Translator: Paulius Černakauskas <paulius.cernakauskas@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: German\n"
+"X-Poedit-Country: GERMANY\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+msgid "no"
+msgstr "ne"
+
+msgid "Configuration successfully updated"
+msgstr "Nustatymai sėkmingai atnaujinti"
+
+msgid "Settings definition successfully updated"
+msgstr "Nustatymų aprašas sėkmingai atnaujintas"
+
+msgid "blog settings"
+msgstr "blogo nustatymai"
+
+msgid "Value"
+msgstr "Reikšmė"
+
+msgid "Description"
+msgstr "Aprašymas"
+
+msgid "global settings"
+msgstr "bendri nustatymai"
+
+msgid "Akismet spam filter"
+msgstr "Aksimet spamo filtras"
+
+#, php-format
+msgid "Filtered by %s."
+msgstr "Filtruota pagal %s"
+
+msgid "Akismet API key:"
+msgstr "Akismet API raktas:"
+
+msgid "API key verified"
+msgstr "API raktas patvirtintas"
+
+msgid "API key not verified"
+msgstr "API raktas nepatvirtintas"
+
+msgid "Get your own API key"
+msgstr "Gaukite savo API raktą"
+
+msgid "Antispam"
+msgstr "Antispam"
+
+msgid "Delete junk comments older than"
+msgstr "Trinti šiukšlėmis pažymųtus komentarus senesnius nei"
+
+msgid "days"
+msgstr "dienų"
+
+msgid "IP Blacklist / Whitelist Filter"
+msgstr "IP Blacklist sąrašas / Whitelist filtras"
+
+#, php-format
+msgid "Filtered by %1$s with rule %2$s."
+msgstr "Filtruota pagal %1$s taikant taisyklę %2$s."
+
+msgid "IP address has been successfully added."
+msgstr "IP adresas sėkmingai pridėtas."
+
+msgid "IP addresses have been successfully removed."
+msgstr "IP adresas sųkmingai pašalintas."
+
+msgid "Blacklist"
+msgstr "Blacklist"
+
+msgid "Whitelist"
+msgstr "Whitelist"
+
+msgid "Add an IP address"
+msgstr "Pridėti IP adresą"
+
+msgid "Global IP"
+msgstr "Globalus IP"
+
+msgid "Add"
+msgstr "Pridėti"
+
+msgid "No IP address in list."
+msgstr "Sąraše nėra IP adreso"
+
+msgid "IP list"
+msgstr "IP sąrašas"
+
+msgid "Checks sender IP address against DNSBL servers"
+msgstr "Patikrina siuntėjo IP adresą DNSLB serveriuose"
+
+#, php-format
+msgid "Filtered by %1$s with server %2$s."
+msgstr "Filtruota pagal %1$s su %2$s serveriu."
+
+msgid "IP Lookup servers"
+msgstr "IP paieškos serveriai"
+
+msgid "Add here a coma separated list of servers."
+msgstr "Čia pridėkite kableliais atskirtų serverių sąrašą."
+
+msgid "Checks links in comments against surbl.org"
+msgstr "Patikrinkite komentarų nuorodos pagal surbl.org"
+
+msgid "Words Blacklist"
+msgstr "Žodžių Blacklist"
+
+#, php-format
+msgid "Filtered by %1$s with word %2$s."
+msgstr "Filtruota pagal %1$s su žodžiu %2$s."
+
+msgid "Words have been successfully added."
+msgstr "Žodžiai sėkmingai pridėti."
+
+msgid "Word has been successfully added."
+msgstr "Žodžis sėkmingai pridėtas."
+
+msgid "Words have been successfully removed."
+msgstr "Žodžiai sėkmingai pašalinti."
+
+msgid "Add a word"
+msgstr "Pridėti žodį."
+
+msgid "Global word"
+msgstr "Bendras žodis"
+
+msgid "No word in list."
+msgstr "Sąraše žodžių nėra"
+
+msgid "List"
+msgstr "Sąrašas"
+
+msgid "Delete selected words"
+msgstr "Trinti pasirinktus žodžius"
+
+msgid "Create default wordlist"
+msgstr "Sukurti nustatytą žodžių sąrašą"
+
+msgid "This word exists"
+msgstr "Toks žodis yra"
+
+msgid "No description"
+msgstr "Nėra aprašymo"
+
+#, php-format
+msgid "Filtered by %1$s (%2$s)"
+msgstr "Filtruota pagal %1$s (%2$s)"
+
+msgid "Unknown filter."
+msgstr "Nežinomas filtras."
+
+msgid "This comment is a spam:"
+msgstr "Šis komentaras yra spamas:"
+
+#, php-format
+msgid "(including %d spam comment)"
+msgstr "(įskaitant %d spamo komentarą)"
+
+#, php-format
+msgid "(including %d spam comments)"
+msgstr "(įskaitant %d spamo komentarus)"
+
+msgid "Spam moderation"
+msgstr "Spamo tvarkymas"
+
+msgid "Spam"
+msgstr "Spamas"
+
+msgid "Ham"
+msgstr "Hamas"
+
+msgid "Filter does not exist."
+msgstr "Nėra filtro"
+
+msgid "Filter has no user interface."
+msgstr "Filtras neturi vartotojo sąsajos."
+
+msgid "Return to filters"
+msgstr "Grįžti į filtrus"
+
+#, php-format
+msgid "%s configuration"
+msgstr "%s nustatymai"
+
+msgid "Information"
+msgstr "Informacija"
+
+msgid "Spam comments have been successfully deleted."
+msgstr "Spamo komentarai sėkmingai ištrinti."
+
+msgid "Junk comments:"
+msgstr "Komentarų šiukšlės:"
+
+msgid "Published comments:"
+msgstr "Publikuoti komentarai:"
+
+msgid "Delete all spams"
+msgstr "Trinti visą spamą"
+
+#, php-format
+msgid "All spam comments older than %s day(s) will be automatically deleted."
+msgstr "Senesni nei %s dienų spamo komentarai bus automatiškai ištrinami."
+
+msgid "Available spam filters"
+msgstr "Galimi spam filtrai"
+
+msgid "Filters configuration has been successfully saved."
+msgstr "Filtrų nustatymai sėkmingai išsaugoti."
+
+msgid "Order"
+msgstr "Rūšiavimas"
+
+msgid "Active"
+msgstr "Aktyvus"
+
+msgid "Auto Del."
+msgstr "Auto tryn."
+
+msgid "Filter name"
+msgstr "Filtro pavadinimas"
+
+msgid "Filter configuration"
+msgstr "Filtro nustatymai"
+
+msgid "Syndication"
+msgstr "Sindikavimas"
+
+msgid "Junk comments RSS feed"
+msgstr "Šlamšto komentarų RSS "
+
+msgid "Published comments RSS feed"
+msgstr "Publikuotų komentarų RSS"
+
+msgid "Blogroll"
+msgstr "Blogroll"
+
+msgid "manage blogroll"
+msgstr "tvarkyti Bogroll"
+
+msgid "Links"
+msgstr "Nuorodos"
+
+msgid "All categories"
+msgstr "Visos kategorijos"
+
+msgid "Home page only"
+msgstr "Tik namų puslapis"
+
+msgid "You must provide a link title"
+msgstr "Turite įrašyti nuorodos pavadinimą"
+
+msgid "You must provide a link URL"
+msgstr "Turite įrašyti nuorodos URL"
+
+msgid "You need to provide a XBEL or OPML file."
+msgstr "Turite pateikti XBEL arba OPML failą."
+
+msgid "File is not in XML format."
+msgstr "Tai ne XML formato failas."
+
+msgid "No such link or title"
+msgstr "Tokios nuorodos ar pavadinimo nėra"
+
+msgid "Return to blogroll"
+msgstr "Grįžti į Blogroll"
+
+msgid "Category has been successfully updated"
+msgstr "Kategorija sėkmingai atnaujinta"
+
+msgid "Edit category"
+msgstr "Taisyti kategoriją"
+
+msgid "Link has been successfully updated"
+msgstr "Nuoroda sėkmingai atnaujinta"
+
+msgid "Edit link"
+msgstr "Taisyti nuorodą"
+
+msgid "XFN"
+msgstr "XFN"
+
+msgid "_xfn_Me"
+msgstr "Aš"
+
+msgid "_xfn_Another link for myself"
+msgstr "Kita nuoroda man"
+
+msgid "_xfn_Friendship"
+msgstr "Draugystė"
+
+msgid "_xfn_Contact"
+msgstr "Kontaktas"
+
+msgid "_xfn_Acquaintance"
+msgstr "Pažįstamas"
+
+msgid "_xfn_Friend"
+msgstr "Draugas"
+
+msgid "_xfn_Physical"
+msgstr "Fizinis"
+
+msgid "_xfn_Met"
+msgstr "Sutiktas"
+
+msgid "_xfn_Professional"
+msgstr "Profesionalas"
+
+msgid "_xfn_Co-worker"
+msgstr "Bendradarbis"
+
+msgid "_xfn_Colleague"
+msgstr "Kolega"
+
+msgid "_xfn_Geographical"
+msgstr "Geografinis"
+
+msgid "_xfn_Co-resident"
+msgstr "Rezidentas"
+
+msgid "_xfn_Neighbor"
+msgstr "Kaimynas"
+
+msgid "_xfn_Family"
+msgstr "Šeima"
+
+msgid "_xfn_Child"
+msgstr "Vaikas"
+
+msgid "_xfn_Parent"
+msgstr "Tėvas"
+
+msgid "_xfn_Sibling"
+msgstr "Giminaitis"
+
+msgid "_xfn_Spouse"
+msgstr "Sutuoktinis"
+
+msgid "_xfn_Kin"
+msgstr "Giminė"
+
+msgid "_xfn_Romantic"
+msgstr "Romntiškas"
+
+msgid "_xfn_Muse"
+msgstr "Mūza"
+
+msgid "_xfn_Crush"
+msgstr "Meilė"
+
+msgid "_xfn_Date"
+msgstr "Pasimatymas"
+
+msgid "_xfn_Sweetheart"
+msgstr "Mylimas"
+
+msgid "Nothing to import"
+msgstr "Nėra ką įkelti"
+
+msgid "Import operation cancelled."
+msgstr "Įkėlimas atšauktas."
+
+msgid "Items order has been successfully updated"
+msgstr "Išdėstymas sėkmingai atnaujintas."
+
+msgid "Items have been successfully removed."
+msgstr "Sėkmingai pašalinti."
+
+msgid "Link has been successfully created."
+msgstr "Nuoroda sėkmingai sukurta."
+
+msgid "category has been successfully created."
+msgstr "Kategorija sėkmingai sukurta."
+
+msgid "links have been successfully imported."
+msgstr "nuorodos sėkmingai įkeltos."
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Lang"
+msgstr "Kalba"
+
+msgid "Save order"
+msgstr "Išsaugojimo tvarka"
+
+msgid "Delete selected links"
+msgstr "Trinti pasirinktas nuorodas"
+
+msgid "Are you sure you want to delete selected links?"
+msgstr "Ar tikrai norite ištrinti pasirinktas nuorodas?"
+
+msgid "The link list is empty."
+msgstr "Šis nuorodų sąrašas yra tuščias."
+
+msgid "Add a new link"
+msgstr "Pridėti naują nuorodą"
+
+msgid "Add a category"
+msgstr "Pridėti naują kategoriją"
+
+msgid "Import links"
+msgstr "Įkelti nuorodas"
+
+msgid "OPML or XBEL File:"
+msgstr "OPML arba XBEL failas:"
+
+msgid "import"
+msgstr "įkelti"
+
+msgid "Light linear gradient"
+msgstr "Šviesus linijinis gradientas"
+
+msgid "Medium linear gradient"
+msgstr "Vidutinis linijinis gradientas"
+
+msgid "Dark linear gradient"
+msgstr "Tamsus linijinis gradientas"
+
+msgid "Solid color"
+msgstr "Spalva"
+
+msgid "Custom..."
+msgstr "Kitoks…"
+
+msgid "Blowup configuration"
+msgstr "Blowup nustatymai"
+
+msgid "Predefined styles"
+msgstr "Numatyti stiliai"
+
+msgid "Apply code"
+msgstr "Taikyti kodą"
+
+msgid "For the following reasons, images cannot be created. You won't be able to change some background properties."
+msgstr "Dėl šių priežasčių paveikslėliai negali būti sukurti. Nebus galima keisti kai kurių fono nustatymų."
+
+msgid "Theme configuration has been successfully updated."
+msgstr "Nustatymai sėkmingai atnaujiti."
+
+msgid "General"
+msgstr "Bendras"
+
+msgid "Background color:"
+msgstr "Fono spalva:"
+
+msgid "Background color fill:"
+msgstr "Fono spalvos užpildas:"
+
+msgid "Main text font:"
+msgstr "Pagrindinio teksto šriftas:"
+
+msgid "Main text font size:"
+msgstr "Pagrindinio teksto dydis:"
+
+msgid "Main text color:"
+msgstr "Pagrindinio teksto spalva:"
+
+msgid "Text line height:"
+msgstr "Linijos aukštis:"
+
+msgid "Links color:"
+msgstr "Nuorodų spalva:"
+
+msgid "Visited links color:"
+msgstr "Aplankytų nuorodų spalva:"
+
+msgid "Focus links color:"
+msgstr "Fokusuotų nuorodų spalva:"
+
+msgid "Page top"
+msgstr "Puslapio viršus"
+
+msgid "Prelude color:"
+msgstr "Įžangos spalva:"
+
+msgid "Hide main title"
+msgstr "Slėpti pagrindinę antraštę"
+
+msgid "Main title font:"
+msgstr "Pagrindinės antraštės šriftas:"
+
+msgid "Main title font size:"
+msgstr "Pagrindinės antraštės šrifto spalva:"
+
+msgid "Main title color:"
+msgstr "Pagrindinės antraštės spalva:"
+
+msgid "Main title alignment:"
+msgstr "Pagrindinės antraštės lygiavimas:"
+
+msgid "center"
+msgstr "centre"
+
+msgid "left"
+msgstr "kairėje"
+
+msgid "right"
+msgstr "dešinėje"
+
+msgid "Main title position (x:y)"
+msgstr "Pagrindinės antraštės pozicija (x:y):"
+
+msgid "Top image"
+msgstr "Viršutinis paveikslėlis"
+
+msgid "Choose \"Custom...\" to upload your own image."
+msgstr "Pasirinkite \"Kitoks…\" norėdami įkelti savo paveikslėlį."
+
+msgid "Add your image:"
+msgstr "Pridėkite savo paveikslėlį:"
+
+#, php-format
+msgid "JPEG or PNG file, 800 pixels wide, maximum size %s"
+msgstr "800 pikselių pločio, maksimalaus %s dydžio, JPEG arba PNG failas."
+
+msgid "Preview"
+msgstr "Peržiūrėti"
+
+msgid "Sidebar"
+msgstr "Šoninė juosta"
+
+msgid "Sidebar position:"
+msgstr "Šoninės juostos pozicija:"
+
+msgid "Sidebar text font:"
+msgstr "Šoninės juostos teksto šriftas:"
+
+msgid "Sidebar text font size:"
+msgstr "Šoninės juostos teksto šrifto dydis:"
+
+msgid "Sidebar text color:"
+msgstr "Šoninės juostos teksto spalva:"
+
+msgid "Sidebar titles font:"
+msgstr "Šoninės juostos antraštės šriftas:"
+
+msgid "Sidebar titles font size:"
+msgstr "Šoninės juostos antraštės šrifto dydis:"
+
+msgid "Sidebar titles color:"
+msgstr "Šoninės juostos antraštės spalva:"
+
+msgid "Sidebar 2nd level titles font:"
+msgstr "Šoninės juostos 2 eilės antraštės šriftas:"
+
+msgid "Sidebar 2nd level titles font size:"
+msgstr "Šoninės juostos 2 eilės antraštės šrifto dydis:"
+
+msgid "Sidebar 2nd level titles color:"
+msgstr "Šoninės juostos 2 eilės antraštės spalva:"
+
+msgid "Sidebar lines color:"
+msgstr "Šoninės juostos linijų spalva:"
+
+msgid "Sidebar links color:"
+msgstr "Šoninės juostos nuorodų spalva:"
+
+msgid "Sidebar visited links color:"
+msgstr "Šoninės juostos aplankytų nuorodų spalva:"
+
+msgid "Sidebar focus links color:"
+msgstr "Šoninės juostos fokusuotų nuorodų spalva:"
+
+msgid "Date title font:"
+msgstr "Datos antraštės šriftas:"
+
+msgid "Date title font size:"
+msgstr "Datos antraštės šrifto dydis:"
+
+msgid "Date title color:"
+msgstr "Datos antraštės spalva:"
+
+msgid "Entry title font:"
+msgstr "Įrašo antraštės šriftas:"
+
+msgid "Entry title font size:"
+msgstr "Įrašo antraštės šrifto dydis:"
+
+msgid "Entry title color:"
+msgstr "Įrašo antraštės spalva:"
+
+msgid "Comment background color:"
+msgstr "Komentaro fono spalva:"
+
+msgid "Comment text color:"
+msgstr "Komentaro teksto spalva:"
+
+msgid "My comment background color:"
+msgstr "Mano komentaro fono spalva:"
+
+msgid "My comment text color:"
+msgstr "Mao komentaro teksto spalva:"
+
+msgid "Footer"
+msgstr "Apatinė dalis"
+
+msgid "Footer font:"
+msgstr "Apatinės dalies šriftas:"
+
+msgid "Footer font size:"
+msgstr "Apatinės dalies šrifto dydis:"
+
+msgid "Footer color:"
+msgstr "Apatinės dalies spalva:"
+
+msgid "Footer links color:"
+msgstr "Apatinės dalies nuorodų spalva:"
+
+msgid "Footer background color:"
+msgstr "Apatinės dalies fono spalva:"
+
+msgid "Configuration import / export"
+msgstr "Nustatymų importavimas / eksportavimas"
+
+msgid "You can share your configuration using the following code. To apply a configuration, paste the code, click on \"Apply code\" and save."
+msgstr "Galite dalintis savo nustatymai naudodamiesi šiuo kodu. Norėdami pritaikyti nustatymus, ikelkite kodą, paspauskite \"Taikyti kodą\" ir išsaugokite."
+
+msgid "default"
+msgstr "standartinis"
+
+msgid "At least one of the following functions is not available: imagecreatetruecolor, imagepng & imagecreatefrompng."
+msgstr "Negalima bent viena iš šių funkcijų: imagecreatetruecolor, imagepng & imagecreatefrompng."
+
+msgid "The 'public' directory does not exist."
+msgstr "Direktorija 'public' neegzistuoja"
+
+#, php-format
+msgid "The '%s' directory cannot be modified."
+msgstr "Negalima modifikuoti '%s' direktorijos."
+
+msgid "Unable to create images."
+msgstr "Nepavyksta sukurti paveikslėlių."
+
+msgid "Invalid file type."
+msgstr "Netinkamas failo tipas."
+
+msgid "Uploaded image is not 800 pixels wide."
+msgstr "Įkeltas paveikslėlis yra ne 800 pikselių pločio."
+
+msgid "Unable to open image."
+msgstr "Nepavyko atidaryti paveikslėlio."
+
+msgid "Checks trackback source for a link to the post"
+msgstr "Patikrina trackback šaltinio nuorodą į įrašą."
+
+msgid "Import/Export"
+msgstr "Import./Eksport."
+
+msgid "Flat file export"
+msgstr "Paprasto failo eksportavimas"
+
+msgid "Exports a blog or a full Dotclear installation to flat file."
+msgstr "Eksportuoja blogą arba pilną Dotclear instaliaciją į bendrą failą."
+
+msgid "Export file not found."
+msgstr "Eksportuojamas failas nerastas."
+
+msgid "Export a blog"
+msgstr "Eksportuoti blogą"
+
+#, php-format
+msgid "This will create an export of your current blog: %s"
+msgstr "Bus sukurtas eksportuojamas failas jūsų dabartiniam blogui: %s"
+
+msgid "Export"
+msgstr "Eksportavimas"
+
+msgid "You may also want to download your media directory as a zip file"
+msgstr "Tai pat galite parsisiųsti savo media direktoriją kaip zip failą."
+
+msgid "Export all content"
+msgstr "Eksportuoti visą turinį"
+
+msgid "Congratulation!"
+msgstr "Sveikiname!"
+
+msgid "Your blog has been successfully imported. Welcome on Dotclear 2!"
+msgstr "Jūsų blogas sėkmingai importuotas. Sveiki prisijungę prie Dotclear 2!"
+
+msgid "Why don't you blog this now?"
+msgstr "Kodėl jums neparašius apie tai į blogą?"
+
+msgid "or"
+msgstr "arba"
+
+msgid "visit your dashboard"
+msgstr "užeikite į savo nustatymų puslapį"
+
+msgid "Dotclear 1.2 import"
+msgstr "Dotclear 1.2 importavimas"
+
+msgid "Import a Dotclear 1.2 installation into your current blog."
+msgstr "Importuoja Dotclear 1.2 Instaliaciją į dabartinį blogą."
+
+#, php-format
+msgid "This will import your Dotclear 1.2 content as new content in the current blog: %s."
+msgstr "Visas Dotclear 1.2 turinys bus importuotas į dabartinį blogą (%s) kaip naujas turinys."
+
+msgid "Please note that this process will empty your categories, blogroll, entries and comments on the current blog."
+msgstr "Atkreipkite dėmesį, kad šis procesas gali ištrinti jūsų kategorijas, blogroll, įrašus ir komentarus dabartiniame bloge."
+
+msgid "Depending on the size of your blog, it could take a few minutes."
+msgstr "Tai gali užtrukti iki kelių minučių priklausomai nuo jūsų blogo dydžio."
+
+msgid "General information"
+msgstr "Bendra informacija"
+
+msgid "Import my blog now"
+msgstr "Importuoti mano blogą"
+
+msgid "We first need some information about your old Dotclear 1.2 installation."
+msgstr "Pirmiausiai mums reikalinga informacija apie jūsų seną Dotclear 1.2 instaliaciją."
+
+msgid "Entries import options"
+msgstr "Įrašų importavimo pasirinkimai"
+
+msgid "Number of entries to import at once:"
+msgstr "Vienu kartu importuojamų įrašų skaičius:"
+
+msgid "Importing users"
+msgstr "Importuojami dalyviai"
+
+msgid "Importing categories"
+msgstr "Importuojamos kategorijos"
+
+msgid "Importing blogroll"
+msgstr "Importuojamas Blogroll"
+
+#, php-format
+msgid "Importing entries from %d to %d / %d"
+msgstr "Importuojami įrašai iš %d į %d / %d"
+
+msgid "Please read carefully"
+msgstr "Prašome atidžiai perskaityti"
+
+msgid "Every newly imported user has received a random password and will need to ask for a new one by following the \"I forgot my password\" link on the login page (Their registered email address has to be valid.)"
+msgstr "Kiekvienam nauujai importuotam dalyviui suteiktas skirtingas slaptažodis, kuris gali būti pakeistas sekant \"Pamiršau slaptažodį\" instrukcijas prisijungimo puslapyje (Jų el. pašto adresai turi būti galiojantys)."
+
+#, php-format
+msgid "Please note that Dotclear 2 has a new URL layout. You can avoid broken links by installing <a href=\"%s\">DC1 redirect</a> plugin and activate it in your blog configuration."
+msgstr "Atkreipkite dėmesį, kad Dotclear 2 turi naują URL išdėstymą. Galite išvengti neveikiančių nuorodų instaliuodami <a href=\"%s\">DC1 redirect</a> plugin'ą ir aktyvuodami jį savo blogo nustatymuose."
+
+msgid "next step"
+msgstr "kitas žingsnis"
+
+msgid "Dotclear tables not found"
+msgstr "Dotclear lentelės nerastos"
+
+msgid "Feed import"
+msgstr "Feed importas"
+
+msgid "Imports a feed as new entries."
+msgstr "Importuoja rss feed kaip naujus įrašus"
+
+msgid "Cannot retrieve feed URL."
+msgstr "Nepavyksta gauti rss URL."
+
+msgid "No items in feed."
+msgstr "Nėra rss įrašų."
+
+msgid "Content successfully imported."
+msgstr "Turinys sėkmingai importuotas."
+
+msgid "Import from a feed"
+msgstr "Importuoti iš rss"
+
+#, php-format
+msgid "This will import a feed (RSS or Atom) a as new content in the current blog: %s."
+msgstr "Bus importuota RSS arba Atom įrašai kaip nauji įrašai jūsų bloge: %s"
+
+msgid "Feed URL:"
+msgstr "Rss URL:"
+
+msgid "Send"
+msgstr "Siųsti"
+
+msgid "Flat file import"
+msgstr "Paprastas failo importavimas"
+
+msgid "Imports a blog or a full Dotclear installation from flat file."
+msgstr "Importuoja blogą arba pilną Dotclear instaliaciją iš failo."
+
+msgid "Single blog successfully imported."
+msgstr "Vienas blogas sėkmingai importuotas."
+
+msgid "Are you sure you want to import a full backup file?"
+msgstr "Ar tikrai norite importuoti visą atsarginės kopijos failą?"
+
+msgid "Import a single blog"
+msgstr "Importuoti vieną blogą"
+
+#, php-format
+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."
+
+msgid "Upload a backup file"
+msgstr "Įkelti atsarginės kopijos failą"
+
+msgid "or pick up a local file in your public directory"
+msgstr "arba pasirinkite vietinį failą iš savo public direktorijos"
+
+msgid "Import a full backup file"
+msgstr "Importuoti visą atsarginės kopijos failą"
+
+msgid "Warning: This will reset all the content of your database, except users."
+msgstr "Dėmesio: Bus ištrintas visas jūsų duomenų bazės turinys išskyrus dalyvius."
+
+msgid "WordPress import"
+msgstr "Wordpress importavimas"
+
+msgid "Import a WordPress installation into your current blog."
+msgstr "Importuoja WordPress instaliaciją į jūsų dabartinį blogą."
+
+#, php-format
+msgid "This will import your WordPress content as new content in the current blog: %s."
+msgstr "WordPress turinys bus importuotas naujo turinio pavidalu į jūsų blogą: %s."
+
+msgid "We first need some information about your old WordPress installation."
+msgstr "Pirmiausiai mums reikalinga tam tikra informacija apie jūsų WordPress instaliaciją."
+
+msgid "WordPress and Dotclear's handling of categories are quite different. You can assign several categories to a single post in WordPress. In the Dotclear world, we see it more like \"One category, several tags.\" Therefore Dotclear can only import one category per post and will chose the lowest numbered one. If you want to keep a trace of every category, you can import them as tags, with an optional prefix."
+msgstr "WordPress ir Dotclear categorijų tvarkymas yra gana skinrtingas. WordPress jūs galite priskirti kelias kategorijas vienam įrašui. Dotclear mes į tai žiūrime labiau kaip \"Viena kategorija, kelios žymos.\". Tokiu būdu Dotclear gali importuoti tik vieną kategoriją kiekvienam įrašui ir pasirinks pirmiausiai įvardintą. Jei norite atkirai atsekti kiekvieną kategoriją, galite jas įkelti kaip žymas, naudodami pasirinktiną prefiksą."
+
+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 importing your blog, as Dotclear allows you to actually keep your posts uncategorized."
+msgstr "Kita vertus WordPress įrašams kategorijos negai būti atšauktos ir tipinė instaliaciją pirmą kategoriją įvardina <i>\"Uncategorized\"</i>. Jei jūs nekeitėte šios kategorijos, tiesiog ignoruokite tai nes Dotclear leidžia jūsų įrašų nepriskirti jokiai kategorijai."
+
+msgid "Ignore the first category:"
+msgstr "Ignoruoti pirmą kategoriją:"
+
+msgid "Import lowest numbered category on posts:"
+msgstr "Importuoti pirmiausiai įvardintą kategoriją įrašuose:"
+
+msgid "Import all categories as tags:"
+msgstr "Importuoti visas kategorijas kaip žymas."
+
+msgid "Prefix such tags with:"
+msgstr "Tokioms žymoms kurti prefiksus:"
+
+msgid "Content filters"
+msgstr "Turinio filtrai"
+
+msgid "You may want to process your post and/or comment content with the following filters."
+msgstr "Galite taikyti filtrus šiems savo įrašasms ir/arba komentarams."
+
+msgid "Post content formatter:"
+msgstr "Įrašų turinio formatavimas:"
+
+msgid "Comment content formatter:"
+msgstr "Komentarų turinio formatavimas:"
+
+msgid "WordPress tables not found"
+msgstr "Nerastos Wordpress lentelės"
+
+msgid "No file to read."
+msgstr "Nėra skaitomo failo."
+
+msgid "File is not a DotClear backup."
+msgstr "Tai nėra Dotclear atsarginės kopijos failas."
+
+msgid "File is not a single blog export."
+msgstr "Tai nėra vieno blogo eksportuotas failas."
+
+msgid "File is not a full export."
+msgstr "Nepilnai eksportuotas failas."
+
+msgid "The backup file does not appear to be well formed."
+msgstr "Atsarginės kopijos failas yra blogai formatuotas,"
+
+msgid "Please wait..."
+msgstr "Prašome palaukti…"
+
+msgid "Import"
+msgstr "Importuoti"
+
+msgid "Maintenance"
+msgstr "Priežiūra"
+
+msgid "Optimization successful."
+msgstr "Sėkmingai optimizuota."
+
+msgid "Comments and trackback counted."
+msgstr "Komentarai ir trackback suskaičiuoti."
+
+msgid "Templates cache directory emptied."
+msgstr "Šablonų cache direktorija išvalyta."
+
+msgid "Logs deleted."
+msgstr "Registras ištrintas."
+
+#, php-format
+msgid "Indexing entry %d to %d."
+msgstr "Indeksuojami įrašai nuo %d iki %d"
+
+msgid "next"
+msgstr "kitas"
+
+msgid "Entries index done."
+msgstr "Įrašų indeksavimas baigtas."
+
+msgid "Back"
+msgstr "Atgal"
+
+#, php-format
+msgid "Indexing comment %d to %d."
+msgstr "Ineksuojami komentarai nuo %d iki %d."
+
+msgid "Comments index done."
+msgstr "Komentarų indeksavimas baigtas."
+
+msgid "Optimize database room"
+msgstr "Optimizuojama duomenų bazės talpa"
+
+msgid "Vacuum tables"
+msgstr "Vacuum lentelės"
+
+msgid "Counters"
+msgstr "Skaičiuoklės"
+
+msgid "Reset comments and ping counters"
+msgstr "Išvalyti komentarų ir ping skaitiklius"
+
+msgid "Search engine index"
+msgstr "Paieškos variklio indeksas"
+
+msgid "This may take a very long time"
+msgstr "gali ilgai užtrukti"
+
+msgid "Index all posts"
+msgstr "Indeksuoti visus įrašus"
+
+msgid "Index all comments"
+msgstr "Indeksuoti visus komentarus"
+
+msgid "Vacuum logs"
+msgstr "Vacuum registras"
+
+msgid "Delete all logs"
+msgstr "Trinti visus registrus"
+
+msgid "Empty templates cache directory"
+msgstr "Trinti šablonų cache direktoriją"
+
+msgid "Empty directory"
+msgstr "Trinti direktoriją"
+
+msgid "Pages"
+msgstr "Puslapiai"
+
+msgid "manage pages"
+msgstr "tvarkyti puslapius"
+
+msgid "Published on"
+msgstr "Publikuota"
+
+msgid "This page's comments feed"
+msgstr "Šio puslapio komentarų rss"
+
+msgid "You must provide a valid email address."
+msgstr "Turite įrašyti el. pašto adresą."
+
+msgid "Page title"
+msgstr "Puslapio antraštė"
+
+msgid "Page position"
+msgstr "Puslapio pozicija"
+
+msgid "Publication date"
+msgstr "Publikavimo data"
+
+msgid "No page"
+msgstr "Puslapio nėra"
+
+msgid "Are you sure you want to delete selected pages?"
+msgstr "Ar tikrai norite ištrinti pasirinktus puslapius?"
+
+msgid "New page"
+msgstr "Naujas puslapis"
+
+msgid "Selected pages action:"
+msgstr "Veiksmas pasirinktiems puslapiams:"
+
+msgid "This page does not exist."
+msgstr "Šis puslapis neegzistuoja."
+
+msgid "Edit page"
+msgstr "Redaguoti puslapį"
+
+msgid "next page"
+msgstr "kitas puslapis"
+
+msgid "previous page"
+msgstr "ankstesnis puslapis"
+
+msgid "Are you sure you want to delete this page?"
+msgstr "Ar tikrai norite ištrinti šį puslapį?"
+
+msgid "Page has been successfully updated."
+msgstr "Puslapis sėkmingai atnaujintas."
+
+msgid "Page has been successfully created."
+msgstr "Puslapis sėkmingai sukurtas"
+
+msgid "View page"
+msgstr "Žiūrėti puslapį"
+
+msgid "Preview page"
+msgstr "Peržiūrėti puslapį"
+
+msgid "Page status:"
+msgstr "Puslapio statusas:"
+
+msgid "Page position:"
+msgstr "Puslapio pozicija:"
+
+msgid "Page lang:"
+msgstr "Puslapio kalba:"
+
+msgid "Page password:"
+msgstr "Puslapio slaptažodis:"
+
+msgid "Warning: If you set the URL manually, it may conflict with another page."
+msgstr "Dėmesio: gali atsirasti konfliktas su kitu puslapiu, jei URL nustatysite rankiniu būdu."
+
+msgid "Add files to this page"
+msgstr "Pridėti failus prie šio puslapio"
+
+msgid "Pings"
+msgstr "Pingai"
+
+msgid "Pings configuration"
+msgstr "Pings nustatymai"
+
+msgid "Settings have been successfully updated."
+msgstr "Nustatymi sėkmingai atnaujinti."
+
+msgid "Activate pings extension"
+msgstr "Įjungti ping'ų išplėtimus"
+
+msgid "Service name:"
+msgstr "Serviso pavadinimas:"
+
+msgid "Service URI:"
+msgstr "Serviso URI:"
+
+msgid "error"
+msgstr "klaida"
+
+msgid "Test ping services"
+msgstr "Testuoti ping servisus"
+
+msgid "Check all"
+msgstr "Patikrinti visus"
+
+msgid "Pings:"
+msgstr "Ping'ai"
+
+msgid "Tags"
+msgstr "Žymos"
+
+msgid "Tags:"
+msgstr "Žymos:"
+
+#, php-format
+msgid "Are you sure you want to remove this %s?"
+msgstr "Ar tikrai norite pašalinti šį %s?"
+
+#, php-format
+msgid "Add a %s to this entry"
+msgstr "Pridėti %s? prie šio įrašo"
+
+msgid "Choose from list"
+msgstr "Pasirinkite iš sąrašo"
+
+msgid "all"
+msgstr "visi"
+
+msgid "Tag"
+msgstr "Žyma"
+
+msgid "used in %e - frequency %p%"
+msgstr "naudojama %e - dažnumas %p%"
+
+msgid "entry"
+msgstr "įrašas"
+
+msgid "entries"
+msgstr "įrašai"
+
+msgid "Enter tags separated by coma"
+msgstr "Įveslite žymas atskirtas kableliais"
+
+msgid "Add tags"
+msgstr "Pridėti žymėjimą"
+
+msgid "Remove tags"
+msgstr "Naikinti žymėjimą"
+
+msgid "Add tags to entries"
+msgstr "Pridėti žymas prie įrašų"
+
+msgid "Tags to add:"
+msgstr "Pridedamos žymos:"
+
+msgid "Remove selected tags from entries"
+msgstr "Pašalinti pasirinktas žymas nuo įrašų"
+
+msgid "No tags for selected entries"
+msgstr "Pasirinktiems įrašams žymų nėra"
+
+msgid "Following tags have been found in selected entries:"
+msgstr "Pasirinktuose įrašuose rastos tokios žymos:"
+
+msgid "short"
+msgstr "trumpas"
+
+msgid "extended"
+msgstr "išplėstas"
+
+msgid "Tags list format:"
+msgstr "Žymų sąrašo formatas:"
+
+msgid "This tag's comments Atom feed"
+msgstr "Šią žymą turinčių komentarų Atom feed"
+
+msgid "This tag's entries Atom feed"
+msgstr "Šią žymą turinčių įrašų Atom feed"
+
+msgid "Limit (empty means no limit):"
+msgstr "Riboti (jei tuščia - apribojimo nėra)"
+
+msgid "Entries count"
+msgstr "Įrašų skaičius"
+
+msgid "Tag name"
+msgstr "Žymos pavadinimas"
+
+msgid "All tags"
+msgstr "Visos žymos"
+
+msgid "Link to all tags:"
+msgstr "Nuoroda į visas žymas:"
+
+msgid "Edit tag"
+msgstr "Redaguoti žymą"
+
+msgid "Tag has been successfully renamed"
+msgstr "Žyma sėkmingai pervadinta"
+
+msgid "Back to tags list"
+msgstr "Atgal į žymų sąrašą"
+
+msgid "Rename this tag:"
+msgstr "Pervadinti šią žymą:"
+
+msgid "Delete this tag"
+msgstr "Trinti šią žymą"
+
+msgid "Tag has been successfully removed"
+msgstr "Žyma sėkmingai pašalinta"
+
+msgid "No tags on this blog."
+msgstr "Šiame bloge nėra žymų"
+
+msgid "Theme Editor"
+msgstr "Temų redaktorius"
+
+msgid "No file"
+msgstr "Failo nėra"
+
+msgid "File does not exist."
+msgstr "Failas neegzistuoja"
+
+#, php-format
+msgid "File %s is not readable"
+msgstr "Failas %s yra neperskaitomas"
+
+#, php-format
+msgid "Unable to write file %s. Please check your theme files and folders permissions."
+msgstr "Nepavyksta įrašyti %s failo. Patikrinkite savo temų failus ir byloms suteiktas teises."
+
+msgid "Saving document..."
+msgstr "Saugomas dokumentas..."
+
+msgid "Document saved"
+msgstr "Dokumentas išsaugotas"
+
+msgid "An error occurred:"
+msgstr "Įvyko klaida:"
+
+#, php-format
+msgid "Your current theme on this blog is \"%s\"."
+msgstr "Dabartinė jūsų blogo tema yra \"%s\"."
+
+msgid "You can't edit default theme."
+msgstr "Tipinės temos redaguoti negalima."
+
+msgid "Please select a file to edit."
+msgstr "Pasirinkite failą redagavimui."
+
+msgid "File editor"
+msgstr "Failų redagavimas"
+
+#, php-format
+msgid "Editing file %s"
+msgstr "Redaguojamas failas %s"
+
+msgid "This file is not writable. Please check your theme files permissions."
+msgstr "Negalima įrašyti į failą. Patikrinkite temų failams suteiktas teises."
+
+msgid "Templates files"
+msgstr "Šablonų failai"
+
+msgid "CSS files"
+msgstr "CSS failai"
+
+msgid "JavaScript files"
+msgstr "JavaScript failai"
+
+msgid "Presentation widgets"
+msgstr "Vaizdavimo valdikliai"
+
+msgid "Search engine"
+msgstr "Paie.kos variklis"
+
+msgid "Navigation links"
+msgstr "Navigacijos nuorodos"
+
+msgid "Selected entries"
+msgstr "Pasirinkti įrašai"
+
+msgid "Best of me"
+msgstr "Mano geriausia"
+
+msgid "Blog languages"
+msgstr "Blogo kalbos"
+
+msgid "With entries counts"
+msgstr "Su įrašų skaičiumi"
+
+msgid "Subscribe links"
+msgstr "Sekti nuorodas"
+
+msgid "Subscribe"
+msgstr "Sekti naujienas"
+
+msgid "Feeds type:"
+msgstr "Rss tipai:"
+
+msgid "Feed reader"
+msgstr "Rss skaityklė"
+
+msgid "Somewhere else"
+msgstr "Kitur"
+
+msgid "Entries limit:"
+msgstr "Įrašų limitas:"
+
+msgid "Text"
+msgstr "Tekstas"
+
+msgid "Text:"
+msgstr "Tekstas:"
+
+msgid "Last entries"
+msgstr "Paskutiniai įrašai"
+
+msgid "Uncategorized"
+msgstr "Nerūšiuota"
+
+msgid "Tag:"
+msgstr "Žyma:"
+
+msgid "Last comments"
+msgstr "Paskutiniai komentarai"
+
+msgid "Comments limit:"
+msgstr "Komentarų limitas:"
+
+msgid "Home"
+msgstr "Pagrindinis"
+
+msgid "Archives"
+msgstr "Archyvas"
+
+#, php-format
+msgid "This blog's entries %s feed"
+msgstr "Šio blogo įrašų %s rss"
+
+#, php-format
+msgid "This blog's comments %s feed"
+msgstr "Šio blogo komentarų %s rss"
+
+msgid "Entries feed"
+msgstr "Įrašų rss"
+
+msgid "Comments feed"
+msgstr "Komentarų rss"
+
+msgid "navigation"
+msgstr "navigacija"
+
+msgid "extra"
+msgstr "ekstra"
+
+msgid "Widgets"
+msgstr "Valdikliai"
+
+msgid "Are you sure you want to reset sidebars?"
+msgstr "Ar tikrai norite išvalyti šonines juostas?"
+
+msgid "Available widgets"
+msgstr "Galimi valdikliai"
+
+msgid "Append to:"
+msgstr "Pritaikyti:"
+
+msgid "add widgets to sidebars"
+msgstr "pridėti valdiklius prie šoninių juostų"
+
+msgid "Navigation sidebar"
+msgstr "Navigacinė soninė juosta"
+
+msgid "Extra sidebar"
+msgstr "Papildoma šoninė juosta"
+
+msgid "update sidebars"
+msgstr "atnaujinti šonines juostas"
+
+msgid "reset sidebars"
+msgstr "nutrinti šonines juostas"
+
+msgid "Widget templates tags"
+msgstr "Valdiklių šablonų žymės"
+
+msgid "If you are allowed to edit your theme templates, you can directly add widgets as templates tags, with their own configuration."
+msgstr "Jei jums leidžiama redaguoti savo temos šablonus, valdiklius galite pridėti tiesiogiai kaip šablonų žymas su savais nustatymais."
+
+msgid "To add a widget in your template, you need to write code like this:"
+msgstr "Norėdami pridėti valdiklį į savo šabloną, turite šitaip rašyti kodą:"
+
+msgid "Widget ID"
+msgstr "Valdiklio ID"
+
+msgid "Setting name"
+msgstr "Nustatymo pavadinimas"
+
+msgid "Setting value"
+msgstr "Nustatymo reikšmė"
+
+msgid "Here are the following available widgets for your blog:"
+msgstr "Šiuos valdiklius galite naudoti savo bloge:"
+
+msgid "Widget ID:"
+msgstr "Valdiklio ID:"
+
+msgid "No setting for this widget"
+msgstr "Nėra valdiklio nustatymų"
+
+msgid "Setting name:"
+msgstr "Nustatymo pavadiminas:"
+
+msgid "No widget."
+msgstr "Valdiklio nėra."
+
+msgid "order"
+msgstr "rūšiavimas"
+
+msgid "Remove widget"
+msgstr "Pašalinti valdiklį"
+
+#~ msgid "External media"
+#~ msgstr "Externes Medium"
+
+#~ msgid "External media selector"
+#~ msgstr "Externe Medienauswahl"
+
+#~ msgid "Supported media services"
+#~ msgstr "Unterstützte Medienservices"
+
+#~ msgid "Please enter the URL of the page containing the video you want to include in your post."
+#~ msgstr "Bitte gebe einen URL der Seite ein von der Du das Video einfügen willst."
+
+#~ msgid "Page URL:"
+#~ msgstr "URL der Seite:"
+
+#~ msgid "Media alignment"
+#~ msgstr "Ausrichtung des Mediums"
+
+#~ msgid "Media title"
+#~ msgstr "Titel des Mediums"
+
+#~ msgid "Unsupported service"
+#~ msgstr "Nicht unterstützter Service"
+
+#~ msgid "Invalid page URL"
+#~ msgstr "Falscher URL der Seite"
Index: locales/lt/public.po
===================================================================
--- locales/lt/public.po	(revision 813)
+++ locales/lt/public.po	(revision 813)
@@ -0,0 +1,244 @@
+# German translation of DotClear
+# Copyright (C) 2008.
+# Andreas Diller <nendilo@gmail.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Dotclear 2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-10-13 05:22+0200\n"
+"PO-Revision-Date: 2012-04-18 20:53+0100\n"
+"Last-Translator: Paulius Černakauskas <paulius.cernakauskas@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Lithuanian\n"
+"X-Poedit-Country: LITHUANIA\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+# Not found strings
+msgid "To content"
+msgstr "Į turinį"
+
+msgid "To menu"
+msgstr "Į meniu"
+
+msgid "To search"
+msgstr "Į paiešką"
+
+msgid "By"
+msgstr "Įrašė"
+
+msgid "by"
+msgstr "įrašė"
+
+msgid "on"
+msgstr ", "
+
+msgid "On"
+msgstr ", "
+
+msgid "Continue reading"
+msgstr "Skaityti toliau"
+
+msgid "no comment"
+msgstr "komentarų nėra"
+
+msgid "one comment"
+msgstr "vienas komentaras"
+
+msgid "%d comments"
+msgstr "%d komentarai"
+
+msgid "no trackback"
+msgstr "trackback nėra"
+
+msgid "one trackback"
+msgstr "vienas trackback"
+
+msgid "%d trackbacks"
+msgstr "%d trackback"
+
+msgid "no attachment"
+msgstr "prisegimų nėra"
+
+msgid "one attachment"
+msgstr "vienas prisegimas"
+
+msgid "%d attachments"
+msgstr "%d prisegimai"
+
+msgid "previous entries"
+msgstr "ankstesni įrašai"
+
+msgid "page"
+msgstr "puslapis"
+
+msgid "of"
+msgstr "iš"
+
+msgid "next entries"
+msgstr "sekantys įrašai"
+
+msgid "Search"
+msgstr "Paieška"
+
+msgid "Your search for <em>%1$s</em> returned no result."
+msgstr "Jūsų <em>%1$s</em> paieška nieko nerado."
+
+msgid "Your search for <em>%1$s</em> returned <strong>%2$s</strong> result."
+msgstr "Jūsų <em>%1$s</em> paieška atitiko <strong>%2$s</strong> įrašą."
+
+msgid "Your search for <em>%1$s</em> returned <strong>%2$s</strong> results."
+msgstr "Jūsų <em>%1$s</em> paieška atitiko <strong>%2$s</strong> įrašus."
+
+msgid "Home"
+msgstr "Pradžia"
+
+msgid "All keywords"
+msgstr "Visi raktažodžiai"
+
+msgid "Best of me"
+msgstr "Mano geriausia"
+
+msgid "Languages"
+msgstr "Kalbos"
+
+msgid "Categories"
+msgstr "Kategorijos"
+
+msgid "Subcategories"
+msgstr "Subkategorijos"
+
+msgid "Archives"
+msgstr "Archyvai"
+
+msgid "Links"
+msgstr "Nuorodos"
+
+msgid "Subscribe"
+msgstr "Prenumeruoti"
+
+msgid "Entries feed"
+msgstr "Įrašų rss feed"
+
+msgid "Comments feed"
+msgstr "Komentarų rss feed"
+
+msgid "This blog's comments Atom feed"
+msgstr "Šio blogo komentarų Atom feed"
+
+msgid "This category's entries Atom feed"
+msgstr "Šios kategorijos įrašų Atom feed"
+
+msgid "This category's comments Atom feed"
+msgstr "Šios kategorijos komentarų Atom feed"
+
+msgid "This post's comments feed"
+msgstr "Šios įrašo komentarų rss feed"
+
+msgid "This post's comments Atom feed"
+msgstr "Šios įrašo komentarų Atom feed"
+
+msgid "Attachments"
+msgstr "Prisegimai"
+
+msgid "Permalink"
+msgstr "nuoroda"
+
+msgid "Comments"
+msgstr "Komentarai"
+
+msgid "Your comment"
+msgstr "Jūsų komentaras"
+
+msgid "Your comment has been published."
+msgstr "Jūsų komentaras paskelbtas."
+
+msgid "Your comment has been submitted and will be reviewed for publication."
+msgstr "Jūsų komentaras priimtas ir bus peržiūrėtas prieš skelbiant."
+
+msgid "Add a comment"
+msgstr "Pridėti komentarą"
+
+msgid "Name or nickname"
+msgstr "Vardas ar slapyvardis"
+
+msgid "Email address"
+msgstr "El. pašto adresas"
+
+msgid "Website"
+msgstr "Tinklapis"
+
+msgid "optional"
+msgstr "pasirinktinai"
+
+msgid "Comment"
+msgstr "Komentaras"
+
+msgid "Comments can be formatted using a simple wiki syntax."
+msgstr ""
+
+msgid "HTML code is displayed as text and web addresses are automatically converted."
+msgstr "HTML kodas yra rodomas kaip tekstas ir internetiniai adresai yra automatiškai konvertuojami."
+
+msgid "Remember me on this blog"
+msgstr "Prisiminti mane šiame bloge"
+
+msgid "preview"
+msgstr "peržiūrėti"
+
+msgid "send"
+msgstr "siųsti"
+
+msgid "They posted on the same topic"
+msgstr "Jie parašė ta pačia tema"
+
+msgid "Trackback URL"
+msgstr "Trackback URL"
+
+msgid "You must provide an author name"
+msgstr "Turite nurodyti autoriaus vardą"
+
+msgid "You must provide a comment"
+msgstr "Turite parašyti komentarą"
+
+msgid "Email address is not valid"
+msgstr "El. pašto adresas netinkamas"
+
+msgid "Document not found"
+msgstr "Dokumentas nerastas"
+
+msgid "The document you are looking for does not exist."
+msgstr "Dokumentas kurio ieškote neegzistuoja"
+
+msgid "Powered by %s"
+msgstr "bogą gamina %s"
+
+msgid "Subscribe to"
+msgstr "Prenumeruoti"
+
+msgid "What is an RSS feed?"
+msgstr "Kas yra RSS feed?"
+
+msgid "RSS feed is a free blog summary. It provides content (either posts or comments) or summaries of content, together with links to the full versions, and other metadata. The last published items may then be read by your favorite RSS <a href=\"http://en.wikipedia.org/wiki/Aggregator\">aggregator</a>."
+msgstr "RSS yra nemokama interneto naujienų suvestinė. RSS pateikiamos naujienos ar naujienų komentarai, kartu su nuorodomis į pilną turinį ir kita. Tokiu būdu naujausius publikuotus įrašus tuomet galite perskaityti savo pasirinkta <a href=\"http://en.wikipedia.org/wiki/Aggregator\">priemone</a>."
+
+msgid "Simply copy the following URL into your aggregator:"
+msgstr "Paprasčiausiai nukopijuokite URL nuorodą į savo RSS programą."
+
+msgid "Password needed"
+msgstr "Reikalingas slaptažodis"
+
+msgid "You must give a password to access this area."
+msgstr "Norėdami čia apsilankyti turite nurodyti slaptažodį."
+
+msgid "Password:"
+msgstr "Slaptažodis:"
+
+msgid "You must provide a valid email address."
+msgstr "Turite nurodyti teisingą el. pašto adresą."
+
+msgid "Read"
+msgstr "Skaityti"
+
Index: locales/nl/public.po
===================================================================
--- locales/nl/public.po	(revision 221)
+++ locales/nl/public.po	(revision 820)
@@ -29,5 +29,5 @@
 
 msgid "By"
-msgstr "Doord"
+msgstr "Door"
 
 msgid "by"
Index: locales/ro/date.po
===================================================================
--- locales/ro/date.po	(revision 221)
+++ locales/ro/date.po	(revision 834)
@@ -1,134 +1,136 @@
-# SOME DESCRIPTIVE TITLE.
-# This file is put in the public domain.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Romanian translation for dotclear
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the dotclear package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
 #
-#, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: Dotclear 2\n"
+"Project-Id-Version: dotclear\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2008-04-15 16:27+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"PO-Revision-Date: 2011-09-02 22:03+0000\n"
+"Last-Translator: transla73436 <Unknown>\n"
+"Language-Team: Romanian <ro@li.org>\n"
+"Language: ro\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-05-27 15:39+0000\n"
+"X-Generator: Launchpad (build 15288)\n"
 
 msgid "%Y-%m-%d %H:%M"
-msgstr ""
+msgstr "%Y-%m-%d %H:%M"
 
 msgid "_Jan"
-msgstr ""
+msgstr "_Ian"
 
 msgid "_Feb"
-msgstr ""
+msgstr "_Feb"
 
 msgid "_Mar"
-msgstr ""
+msgstr "_Mar"
 
 msgid "_Apr"
-msgstr ""
+msgstr "_Apr"
 
 msgid "_May"
-msgstr ""
+msgstr "_Mai"
 
 msgid "_Jun"
-msgstr ""
+msgstr "_Iun"
 
 msgid "_Jul"
-msgstr ""
+msgstr "_Iul"
 
 msgid "_Aug"
-msgstr ""
+msgstr "_Aug"
 
 msgid "_Sep"
-msgstr ""
+msgstr "_Sep"
 
 msgid "_Oct"
-msgstr ""
+msgstr "_Oct"
 
 msgid "_Nov"
-msgstr ""
+msgstr "_Noi"
 
 msgid "_Dec"
-msgstr ""
+msgstr "_Dec"
 
 msgid "January"
-msgstr ""
+msgstr "Ianuarie"
 
 msgid "February"
-msgstr ""
+msgstr "Februarie"
 
 msgid "March"
-msgstr ""
+msgstr "Martie"
 
 msgid "April"
-msgstr ""
+msgstr "Aprilie"
 
 msgid "May"
-msgstr ""
+msgstr "Mai"
 
 msgid "June"
-msgstr ""
+msgstr "Iunie"
 
 msgid "July"
-msgstr ""
+msgstr "Iulie"
 
 msgid "August"
-msgstr ""
+msgstr "August"
 
 msgid "September"
-msgstr ""
+msgstr "Septembrie"
 
 msgid "October"
-msgstr ""
+msgstr "Octombrie"
 
 msgid "November"
-msgstr ""
+msgstr "Noiembrie"
 
 msgid "December"
-msgstr ""
+msgstr "Decembrie"
 
 msgid "_Mon"
-msgstr ""
+msgstr "_Lun"
 
 msgid "_Tue"
-msgstr ""
+msgstr "_Mar"
 
 msgid "_Wed"
-msgstr ""
+msgstr "_Mie"
 
 msgid "_Thu"
-msgstr ""
+msgstr "_Joi"
 
 msgid "_Fri"
-msgstr ""
+msgstr "_Vin"
 
 msgid "_Sat"
-msgstr ""
+msgstr "_Sâm"
 
 msgid "_Sun"
-msgstr ""
+msgstr "_Dum"
 
 msgid "Monday"
-msgstr ""
+msgstr "Luni"
 
 msgid "Tuesday"
-msgstr ""
+msgstr "Marţi"
 
 msgid "Wednesday"
-msgstr ""
+msgstr "Miercuri"
 
 msgid "Thursday"
-msgstr ""
+msgstr "Joi"
 
 msgid "Friday"
-msgstr ""
+msgstr "Vineri"
 
 msgid "Saturday"
-msgstr ""
+msgstr "Sâmbătă"
 
 msgid "Sunday"
-msgstr ""
+msgstr "Duminică"
Index: locales/ro/main.po
===================================================================
--- locales/ro/main.po	(revision 759)
+++ locales/ro/main.po	(revision 835)
@@ -1,19 +1,21 @@
-# SOME DESCRIPTIVE TITLE.
-# This file is put in the public domain.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Romanian translation for dotclear
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the dotclear package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
 #
-#, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: Dotclear 2\n"
+"Project-Id-Version: dotclear\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-06 18:09+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"POT-Creation-Date: 2012-05-28 07:53+0200\n"
+"PO-Revision-Date: 2012-05-27 11:38+0000\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"Language-Team: Romanian <ro@li.org>\n"
+"Language: ro\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-05-27 15:39+0000\n"
+"X-Generator: Launchpad (build 15288)\n"
 
 msgid "Dotclear has been upgraded."
@@ -1777,4 +1779,7 @@
 msgstr ""
 
+msgid "Hide My favorites menu"
+msgstr ""
+
 msgid "Iconset:"
 msgstr ""
@@ -2035,4 +2040,10 @@
 msgstr ""
 
+msgid "Go to the content"
+msgstr ""
+
+msgid "Go to the menu"
+msgstr ""
+
 msgid "Go to site"
 msgstr ""
@@ -2394,4 +2405,7 @@
 msgstr ""
 
+msgid "You are not allowed to reset categories order"
+msgstr ""
+
 msgid "Category URL must be unique."
 msgstr ""
Index: locales/ro/plugins.po
===================================================================
--- locales/ro/plugins.po	(revision 759)
+++ locales/ro/plugins.po	(revision 835)
@@ -1,22 +1,24 @@
-# SOME DESCRIPTIVE TITLE.
-# This file is put in the public domain.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Romanian translation for dotclear
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the dotclear package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
 #
-#, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: Dotclear 2\n"
+"Project-Id-Version: dotclear\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-06 18:09+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2012-05-28 07:53+0200\n"
+"PO-Revision-Date: 2011-09-03 00:21+0000\n"
+"Last-Translator: transla73436 <Unknown>\n"
+"Language-Team: Romanian <ro@li.org>\n"
+"Language: ro\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-05-27 15:39+0000\n"
+"X-Generator: Launchpad (build 15288)\n"
 
 msgid "no"
-msgstr ""
+msgstr "nu"
 
 msgid "yes"
@@ -24,17 +26,17 @@
 
 msgid "Configuration successfully updated"
-msgstr ""
+msgstr "Configurație actualizată cu succes"
 
 msgid "Settings definition successfully updated"
-msgstr ""
+msgstr "Definiția setărilor a fost actualizată cu succes"
 
 msgid "blog settings"
-msgstr ""
+msgstr "setări blog"
 
 msgid "Value"
-msgstr ""
+msgstr "Valoare"
 
 msgid "Description"
-msgstr ""
+msgstr "Descriere"
 
 msgid "Goto:"
@@ -45,108 +47,110 @@
 
 msgid "global settings"
-msgstr ""
+msgstr "setări globale"
 
 msgid "Akismet spam filter"
-msgstr ""
+msgstr "Filtru de spam Akismet"
 
 #, php-format
 msgid "Filtered by %s."
-msgstr ""
+msgstr "Filtrat de %s."
 
 msgid "Akismet API key:"
-msgstr ""
+msgstr "Cheie API de Akismet"
 
 msgid "API key verified"
-msgstr ""
+msgstr "Cheie API verificată"
 
 msgid "API key not verified"
-msgstr ""
+msgstr "Cheia API nu a fost verificată"
 
 msgid "Get your own API key"
-msgstr ""
+msgstr "Obțineți-vă propia cheie API"
 
 msgid "Antispam"
-msgstr ""
+msgstr "Antispam"
 
 msgid "Delete junk comments older than"
-msgstr ""
+msgstr "Șterge comentariile din folderul junk mai vechi de"
 
 msgid "days"
-msgstr ""
+msgstr "zile"
 
 msgid "IP Blacklist / Whitelist Filter"
-msgstr ""
+msgstr "IP Blacklist / Filtru Whitelist"
 
 #, php-format
 msgid "Filtered by %1$s with rule %2$s."
-msgstr ""
+msgstr "Filtrat de %1$s cu regula %2$s."
 
 msgid "IP address has been successfully added."
-msgstr ""
+msgstr "Adresa IP a fost adăugată cu succes."
 
 msgid "IP addresses have been successfully removed."
-msgstr ""
+msgstr "Adresele IP au fost șterse cu succes."
 
 msgid "Blacklist"
-msgstr ""
+msgstr "Lista neagră"
 
 msgid "Whitelist"
-msgstr ""
-
+msgstr "Listă excepții"
+
+#, fuzzy
 msgid "Add an IP address: "
-msgstr ""
+msgstr "Adaugă o adresă IP"
 
 msgid "Global IP"
-msgstr ""
+msgstr "IP global"
 
 msgid "Add"
-msgstr ""
+msgstr "Inserare"
 
 msgid "No IP address in list."
-msgstr ""
+msgstr "Nicio adresă IP în listă"
 
 msgid "IP list"
-msgstr ""
+msgstr "Lista cu IP"
 
 msgid "Checks sender IP address against DNSBL servers"
-msgstr ""
+msgstr "Verifică adresa IP a utilizatorului cu serverele DNSB"
 
 #, php-format
 msgid "Filtered by %1$s with server %2$s."
-msgstr ""
+msgstr "Filtrat de %1$s cu serverul %2$s."
 
 msgid "IP Lookup servers"
-msgstr ""
+msgstr "Servere de căutare IP"
 
 msgid "Add here a coma separated list of servers."
-msgstr ""
+msgstr "Adaugă aici o listă de servere separate prin virgulă"
 
 msgid "Checks links in comments against surbl.org"
-msgstr ""
+msgstr "Verifică legăturile în comentarii cu surbl.org"
 
 msgid "Words Blacklist"
-msgstr ""
+msgstr "Listă de cuvinte interzise"
 
 #, php-format
 msgid "Filtered by %1$s with word %2$s."
-msgstr ""
+msgstr "Filtrat de %1$s prin cuvântul %2$s."
 
 msgid "Words have been successfully added."
-msgstr ""
+msgstr "Cuvintele au fost adăugate cu succes."
 
 msgid "Word has been successfully added."
-msgstr ""
+msgstr "Cuvântul a fost adăugat cu succes."
 
 msgid "Words have been successfully removed."
-msgstr ""
-
+msgstr "Cuvintele au fost retrase cu succes."
+
+#, fuzzy
 msgid "Add a word "
-msgstr ""
+msgstr "Adaugă un cuvânt"
 
 msgid "Global word"
-msgstr ""
+msgstr "Cuvânt global"
 
 msgid "No word in list."
-msgstr ""
+msgstr "Niciun cuvânt în listă."
 
 msgid "List of bad words"
@@ -154,70 +158,70 @@
 
 msgid "Delete selected words"
-msgstr ""
+msgstr "Șterge cuvintele selectate"
 
 msgid "Create default wordlist"
-msgstr ""
+msgstr "Verifică lista implicită de cuvinte"
 
 msgid "This word exists"
-msgstr ""
+msgstr "Acest cuvânt (deja) există"
 
 msgid "No description"
-msgstr ""
+msgstr "Fără descriere"
 
 #, php-format
 msgid "Filtered by %1$s (%2$s)"
-msgstr ""
+msgstr "Filtrat de %1$s (%2$s)"
 
 msgid "Unknown filter."
-msgstr ""
+msgstr "Filtru necunoscut"
 
 msgid "This comment is a spam:"
-msgstr ""
+msgstr "Acest comentariu este spam:"
 
 #, php-format
 msgid "(including %d spam comment)"
-msgstr ""
+msgstr "(incluzând %d comentariu spam)"
 
 #, php-format
 msgid "(including %d spam comments)"
-msgstr ""
+msgstr "(incluzând %d comentarii spam)"
 
 msgid "Spam moderation"
-msgstr ""
+msgstr "Moderare spam"
 
 msgid "Spam"
-msgstr ""
+msgstr "Spam"
 
 msgid "Ham"
-msgstr ""
+msgstr "Ham"
 
 msgid "Filter does not exist."
-msgstr ""
+msgstr "Filtru nu există"
 
 msgid "Filter has no user interface."
-msgstr ""
+msgstr "Filtru nu are interfață de utilizator."
 
 #, php-format
 msgid "%s configuration"
-msgstr ""
+msgstr "configuratia %s"
 
 msgid "Information"
-msgstr ""
+msgstr "Informații"
 
 msgid "Spam comments have been successfully deleted."
-msgstr ""
+msgstr "Comentariile spam au fost șterse."
 
 msgid "Junk comments:"
-msgstr ""
+msgstr "Comentarii junk:"
 
 msgid "Published comments:"
-msgstr ""
+msgstr "Comentarii publicate:"
 
 msgid "Delete all spams"
-msgstr ""
+msgstr "Șterge tot spam-ul"
 
 #, php-format
 msgid "All spam comments older than %s day(s) will be automatically deleted."
-msgstr ""
+msgstr "Toate comentariile spam mai vechi de %s zile vor fi șterse automat."
 
 msgid "You can modify this duration in "
@@ -228,35 +232,36 @@
 
 msgid "Filters configuration has been successfully saved."
-msgstr ""
+msgstr "Configurația filtrelor a fost salvată."
 
 msgid "Available spam filters"
-msgstr ""
+msgstr "Filtre de spam disponibile."
 
 msgid "Order"
-msgstr ""
+msgstr "Comandă"
 
 msgid "Active"
-msgstr ""
+msgstr "Activ"
 
 msgid "Auto Del."
-msgstr ""
+msgstr "Ștergere auto."
 
 msgid "Filter name"
-msgstr ""
+msgstr "Nume filtru"
 
 msgid "Filter configuration"
-msgstr ""
-
+msgstr "Configurare filtru"
+
+#, fuzzy
 msgid "position"
-msgstr ""
+msgstr "Poziția barei laterale:"
 
 msgid "Syndication"
-msgstr ""
+msgstr "Abonare distribuită (syndication)"
 
 msgid "Junk comments RSS feed"
-msgstr ""
+msgstr "Abonare RSS de comentarii junk"
 
 msgid "Published comments RSS feed"
-msgstr ""
+msgstr "Abonare RSS de comentarii publicate"
 
 msgid "Attachments"
@@ -273,53 +278,53 @@
 
 msgid "Blogroll"
-msgstr ""
+msgstr "Blogroll"
 
 msgid "manage blogroll"
-msgstr ""
+msgstr "administrare blogroll"
 
 msgid "Links"
-msgstr ""
+msgstr "Legături"
 
 msgid "All categories"
-msgstr ""
+msgstr "Toate categoriile"
 
 msgid "Home page only"
-msgstr ""
+msgstr "Doar pagina de start"
 
 msgid "You must provide a link title"
-msgstr ""
+msgstr "Trebuie să inserezi un titlu al legăturii"
 
 msgid "You must provide a link URL"
-msgstr ""
+msgstr "Trebuie să inserezi o legătură web"
 
 msgid "You need to provide a XBEL or OPML file."
-msgstr ""
+msgstr "Trebuie să furnizezi un fișier XBEL sau OPML."
 
 msgid "File is not in XML format."
-msgstr ""
+msgstr "Fișierul nu este XML."
 
 msgid "No such link or title"
-msgstr ""
+msgstr "Nu există legătura/titlul"
 
 msgid "Return to blogroll"
-msgstr ""
+msgstr "Înapoi la blogroll"
 
 msgid "Category has been successfully updated"
-msgstr ""
+msgstr "Categoria a fost actualizată cu succes"
 
 msgid "Edit category"
-msgstr ""
+msgstr "Editează categoria"
 
 msgid "Link has been successfully updated"
-msgstr ""
+msgstr "Legătura a fost actualizată cu succes"
 
 msgid "Edit link"
-msgstr ""
+msgstr "Modifică legătura"
 
 msgid "XFN"
-msgstr ""
+msgstr "XFN"
 
 msgid "_xfn_Me"
-msgstr ""
+msgstr "_xfn_Me"
 
 msgid "_xfn_Another link for myself"
@@ -396,29 +401,29 @@
 
 msgid "Nothing to import"
-msgstr ""
+msgstr "Nimic a se importa"
 
 msgid "Import operation cancelled."
-msgstr ""
+msgstr "Execuția de import a fost anulată."
 
 msgid "Items order has been successfully updated"
-msgstr ""
+msgstr "Lista de elements a fost actualizată"
 
 msgid "Items have been successfully removed."
-msgstr ""
+msgstr "Elementele au fost eliminate"
 
 msgid "Link has been successfully created."
-msgstr ""
+msgstr "Legătura a fost creată."
 
 msgid "category has been successfully created."
-msgstr ""
+msgstr "categoria a fost creată."
 
 msgid "links have been successfully imported."
-msgstr ""
+msgstr "legături au fost importate."
 
 msgid "URL"
-msgstr ""
+msgstr "URL"
 
 msgid "Lang"
-msgstr ""
+msgstr "Limbă"
 
 msgid "select this link"
@@ -426,8 +431,9 @@
 
 msgid "Delete selected links"
-msgstr ""
-
+msgstr "Șterge legăturile selectate"
+
+#, fuzzy
 msgid "Are you sure you want to delete selected links?"
-msgstr ""
+msgstr "Sigur dorești a șterge legăturile selectate?"
 
 msgid "The link list is empty."
@@ -435,14 +441,14 @@
 
 msgid "Add a new link"
-msgstr ""
+msgstr "Adaugă o nouă legătură"
 
 msgid "Add a category"
-msgstr ""
+msgstr "Adaugă o categorie"
 
 msgid "Import links"
-msgstr ""
+msgstr "Importă legături"
 
 msgid "OPML or XBEL File:"
-msgstr ""
+msgstr "Fișier OPML sau XBEL:"
 
 msgid "Import"
@@ -450,62 +456,65 @@
 
 msgid "Light linear gradient"
-msgstr ""
+msgstr "Gradient linear deschis"
 
 msgid "Medium linear gradient"
-msgstr ""
+msgstr "Gradient linear mediu"
 
 msgid "Dark linear gradient"
-msgstr ""
+msgstr "Gradient linear închis"
 
 msgid "Solid color"
-msgstr ""
+msgstr "Culoare solidă"
 
 msgid "Custom..."
-msgstr ""
+msgstr "Personalizat..."
 
 msgid "Blowup configuration"
-msgstr ""
+msgstr "Aruncă configurația"
 
 msgid "Predefined styles"
-msgstr ""
+msgstr "Stil predefinit"
 
 msgid "Apply code"
-msgstr ""
-
+msgstr "Aplică cod"
+
+#, fuzzy
 msgid "Choose a predefined style"
-msgstr ""
-
+msgstr "Stil predefinit"
+
+#, fuzzy
 msgid "For the following reasons, images cannot be created. You won't be able to change some background properties."
-msgstr ""
-
+msgstr "Cum imaginile nu pot fi create, nu vei putea fi capabil a schimba anume propietăți de fundal."
+
+#, fuzzy
 msgid "Theme configuration has been successfully updated."
-msgstr ""
+msgstr "Configurația șablonului a fost actualizată."
 
 msgid "General"
-msgstr ""
+msgstr "General"
 
 msgid "Background color:"
-msgstr ""
+msgstr "Culoare de fundal:"
 
 msgid "Background color fill:"
-msgstr ""
+msgstr "Culoarea de umplere fundal:"
 
 msgid "Main text font:"
-msgstr ""
+msgstr "Fontul principal de text:"
 
 msgid "Main text font size:"
-msgstr ""
+msgstr "Mărimea de text principală:"
 
 msgid "Main text color:"
-msgstr ""
+msgstr "Culoarea de text principală:"
 
 msgid "Text line height:"
-msgstr ""
+msgstr "Înălțimea liniei de text:"
 
 msgid "Links color:"
-msgstr ""
+msgstr "Culoarea legăturilor:"
 
 msgid "Visited links color:"
-msgstr ""
+msgstr "Culoarea legăturilor vizitate:"
 
 msgid "Focus links color:"
@@ -513,5 +522,5 @@
 
 msgid "Page top"
-msgstr ""
+msgstr "Începutul paginii"
 
 msgid "Prelude color:"
@@ -519,51 +528,51 @@
 
 msgid "Hide main title"
-msgstr ""
+msgstr "Ascunde titlul principal"
 
 msgid "Main title font:"
-msgstr ""
+msgstr "Fontul principal de titlu:"
 
 msgid "Main title font size:"
-msgstr ""
+msgstr "Mărimea de titlu principală:"
 
 msgid "Main title color:"
-msgstr ""
+msgstr "Culoarea principală de titlu:"
 
 msgid "Main title alignment:"
-msgstr ""
+msgstr "Aranjamentul în pagină de titlu:"
 
 msgid "center"
-msgstr ""
+msgstr "centru"
 
 msgid "left"
-msgstr ""
+msgstr "la stânga"
 
 msgid "right"
-msgstr ""
+msgstr "la dreapta"
 
 msgid "Main title position (x:y)"
-msgstr ""
+msgstr "Poziția principală de titlu (x:y)"
 
 msgid "Top image"
-msgstr ""
+msgstr "Imagine principală"
 
 msgid "Choose \"Custom...\" to upload your own image."
-msgstr ""
+msgstr "Alege personalizat pentru a urca propia imagine."
 
 msgid "Add your image:"
-msgstr ""
+msgstr "Adaugă-ți imaginea:"
 
 #, php-format
 msgid "JPEG or PNG file, 800 pixels wide, maximum size %s"
-msgstr ""
+msgstr "JPEG sau PNG, lat de 800 pixeli, mărimea maximă de %s"
 
 msgid "Sidebar"
-msgstr ""
+msgstr "Bară laterală"
 
 msgid "Sidebar position:"
-msgstr ""
+msgstr "Poziția barei laterale:"
 
 msgid "Sidebar text font:"
-msgstr ""
+msgstr "Fontul barei laterale:"
 
 msgid "Sidebar text font size:"
@@ -669,6 +678,7 @@
 msgstr ""
 
+#, fuzzy
 msgid "The 'public' directory does not exist."
-msgstr ""
+msgstr "Filtru nu există"
 
 #, php-format
@@ -881,6 +891,7 @@
 msgstr ""
 
+#, fuzzy
 msgid "Content filters"
-msgstr ""
+msgstr "Întoarce-te la filtre"
 
 msgid "You may want to process your post and/or comment content with the following filters."
@@ -976,6 +987,7 @@
 msgstr ""
 
+#, fuzzy
 msgid "Delete all logs"
-msgstr ""
+msgstr "Șterge tot spam-ul"
 
 msgid "Empty templates cache directory"
@@ -1122,6 +1134,7 @@
 msgstr ""
 
+#, fuzzy
 msgid "Page"
-msgstr ""
+msgstr "Începutul paginii"
 
 msgid "Tags"
@@ -1167,12 +1180,15 @@
 msgstr ""
 
+#, fuzzy
 msgid "Menu item has been successfully added."
-msgstr ""
-
+msgstr "Cuvântul a fost adăugat cu succes."
+
+#, fuzzy
 msgid "Menu items have been successfully removed."
-msgstr ""
-
+msgstr "Elementele au fost eliminate"
+
+#, fuzzy
 msgid "Menu items have been successfully updated."
-msgstr ""
+msgstr "Lista de elements a fost actualizată"
 
 msgid "Add item"
@@ -1191,6 +1207,7 @@
 msgstr ""
 
+#, fuzzy
 msgid "Select category:"
-msgstr ""
+msgstr "Editează categoria"
 
 msgid "Select month (if necessary):"
@@ -1206,6 +1223,7 @@
 msgstr ""
 
+#, fuzzy
 msgid "Description of item menu:"
-msgstr ""
+msgstr "Descriere"
 
 msgid "URL of item menu:"
@@ -1215,6 +1233,7 @@
 msgstr ""
 
+#, fuzzy
 msgid "Add an item"
-msgstr ""
+msgstr "Adaugă o nouă legătură"
 
 msgid "Menu items list"
@@ -1224,9 +1243,11 @@
 msgstr ""
 
+#, fuzzy
 msgid "Delete selected menu items"
-msgstr ""
-
+msgstr "Șterge legăturile selectate"
+
+#, fuzzy
 msgid "Are you sure you want to remove selected menu items?"
-msgstr ""
+msgstr "Sigur dorești a șterge legăturile selectate?"
 
 msgid "Currently no menu items"
@@ -1398,15 +1419,18 @@
 msgstr ""
 
+#, fuzzy
 msgid "Preferences successfully updated"
-msgstr ""
-
+msgstr "Configurație actualizată cu succes"
+
+#, fuzzy
 msgid "Preferences definition successfully updated"
-msgstr ""
+msgstr "Definiția setărilor a fost actualizată cu succes"
 
 msgid "user preferences"
 msgstr ""
 
+#, fuzzy
 msgid "global preferences"
-msgstr ""
+msgstr "setări globale"
 
 msgid "Presentation widgets"
@@ -1490,6 +1514,7 @@
 msgstr ""
 
+#, fuzzy
 msgid "custom"
-msgstr ""
+msgstr "Personalizat..."
 
 msgid "Widgets"
@@ -1573,2 +1598,14 @@
 msgid "Remove widget"
 msgstr ""
+
+#~ msgid "List"
+#~ msgstr "Listă"
+
+#~ msgid "Save order"
+#~ msgstr "Salvează ordinea"
+
+#~ msgid "import"
+#~ msgstr "Import"
+
+#~ msgid "Preview"
+#~ msgstr "Previzualizare"
Index: locales/ro/public.po
===================================================================
--- locales/ro/public.po	(revision 221)
+++ locales/ro/public.po	(revision 834)
@@ -1,179 +1,180 @@
-# SOME DESCRIPTIVE TITLE.
-# This file is put in the public domain.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Romanian translation for dotclear
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the dotclear package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
 #
-#, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: Dotclear 2\n"
+"Project-Id-Version: dotclear\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2008-10-13 05:22+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"PO-Revision-Date: 2011-09-02 22:34+0000\n"
+"Last-Translator: transla73436 <Unknown>\n"
+"Language-Team: Romanian <ro@li.org>\n"
+"Language: ro\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-
-# Not found strings
+"X-Launchpad-Export-Date: 2012-05-27 15:39+0000\n"
+"X-Generator: Launchpad (build 15288)\n"
+
 msgid "To content"
-msgstr ""
+msgstr "Mergi la conținut"
 
 msgid "To menu"
-msgstr ""
+msgstr "Mergi la meniu"
 
 msgid "To search"
-msgstr ""
+msgstr "Mergi la căutare"
 
 msgid "By"
-msgstr ""
+msgstr "De"
 
 msgid "by"
-msgstr ""
+msgstr "de"
 
 msgid "on"
-msgstr ""
+msgstr "activat"
 
 msgid "On"
-msgstr ""
+msgstr "Activat"
 
 msgid "Continue reading"
-msgstr ""
+msgstr "Citește în continuare"
 
 msgid "no comment"
-msgstr ""
+msgstr "niciun comentariu"
 
 msgid "one comment"
-msgstr ""
+msgstr "un comentariu"
 
 msgid "%d comments"
-msgstr ""
+msgstr "%d comentarii"
 
 msgid "no trackback"
-msgstr ""
+msgstr "fără trackback"
 
 msgid "one trackback"
-msgstr ""
+msgstr "un trackback"
 
 msgid "%d trackbacks"
-msgstr ""
+msgstr "%d trackback-uri"
 
 msgid "no attachment"
-msgstr ""
+msgstr "niciun atașament"
 
 msgid "one attachment"
-msgstr ""
+msgstr "un atașament"
 
 msgid "%d attachments"
-msgstr ""
+msgstr "%d atașamente"
 
 msgid "previous entries"
-msgstr ""
+msgstr "postări anterioare"
 
 msgid "page"
-msgstr ""
+msgstr "pagină"
 
 msgid "of"
-msgstr ""
+msgstr "de"
 
 msgid "next entries"
-msgstr ""
+msgstr "următoarele postări"
 
 msgid "Search"
-msgstr ""
+msgstr "Căutare"
 
 msgid "Your search for <em>%1$s</em> returned no result."
-msgstr ""
+msgstr "Căutarea dvs după <em>%1$s</em> nu are rezultate."
 
 msgid "Your search for <em>%1$s</em> returned <strong>%2$s</strong> result."
-msgstr ""
+msgstr "Căutate dvs după <em>%1$s</em> are următorul <strong>%2$s</strong> rezultat"
 
 msgid "Your search for <em>%1$s</em> returned <strong>%2$s</strong> results."
-msgstr ""
+msgstr "Căutate dvs după <em>%1$s</em> are următoarele <strong>%2$s</strong> rezultate"
 
 msgid "Home"
-msgstr ""
+msgstr "Pagină de pornire"
 
 msgid "All keywords"
-msgstr ""
+msgstr "Toate cuvintele-cheie"
 
 msgid "Best of me"
-msgstr ""
+msgstr "Cel mai bun din mine"
 
 msgid "Languages"
-msgstr ""
+msgstr "Limbi"
 
 msgid "Categories"
-msgstr ""
+msgstr "Categorii"
 
 msgid "Subcategories"
-msgstr ""
+msgstr "Subcategorii"
 
 msgid "Archives"
-msgstr ""
+msgstr "Arhive"
 
 msgid "Links"
-msgstr ""
+msgstr "Legături"
 
 msgid "Subscribe"
-msgstr ""
+msgstr "Abonare"
 
 msgid "Entries feed"
-msgstr ""
+msgstr "Abonament de postări"
 
 msgid "Comments feed"
-msgstr ""
+msgstr "Abonament de comentarii"
 
 msgid "This blog's comments Atom feed"
-msgstr ""
+msgstr "Abonamentul Atom al acestui blog"
 
 msgid "This category's entries Atom feed"
-msgstr ""
+msgstr "Abonamentul Atom al postărilor din această categorie"
 
 msgid "This category's comments Atom feed"
-msgstr ""
+msgstr "Abonamentul Atom al comentarilor din această categorie"
 
 msgid "This post's comments feed"
-msgstr ""
+msgstr "Abonamentul comentarilor postării acesteia"
 
 msgid "This post's comments Atom feed"
-msgstr ""
+msgstr "Abonamentul Atom de comentarii al acestei postări"
 
 msgid "Attachments"
-msgstr ""
+msgstr "Atașamente"
 
 msgid "Permalink"
-msgstr ""
+msgstr "Permalink"
 
 msgid "Comments"
-msgstr ""
+msgstr "Comentarii"
 
 msgid "Your comment"
-msgstr ""
+msgstr "Comentariul dvs"
 
 msgid "Your comment has been published."
-msgstr ""
+msgstr "Comentariul dvs a fost publicat."
 
 msgid "Your comment has been submitted and will be reviewed for publication."
-msgstr ""
+msgstr "Comentariul dvs a fost trimis și va fi revizuit înainte de publicare."
 
 msgid "Add a comment"
-msgstr ""
+msgstr "Adaugă un comentariu"
 
 msgid "Name or nickname"
-msgstr ""
+msgstr "Nume sau poreclă"
 
 msgid "Email address"
-msgstr ""
+msgstr "Adresă de contact"
 
 msgid "Website"
-msgstr ""
+msgstr "Sit web"
 
 msgid "optional"
-msgstr ""
+msgstr "opțional"
 
 msgid "Comment"
-msgstr ""
+msgstr "Comentariu"
 
 msgid "Comments can be formatted using a simple wiki syntax."
@@ -181,63 +182,63 @@
 
 msgid "HTML code is displayed as text and web addresses are automatically converted."
-msgstr ""
+msgstr "Codul html este afișat ca text iar adresele web sunt procesate automat."
 
 msgid "Remember me on this blog"
-msgstr ""
+msgstr "Ține-mă minte pe acest blog."
 
 msgid "preview"
-msgstr ""
+msgstr "previzualizare"
 
 msgid "send"
-msgstr ""
+msgstr "trimite"
 
 msgid "They posted on the same topic"
-msgstr ""
+msgstr "Și ei au postat pe același subiect"
 
 msgid "Trackback URL"
-msgstr ""
+msgstr "Trackback URL"
 
 msgid "You must provide an author name"
-msgstr ""
+msgstr "Trebuie să specifici un nume de autor"
 
 msgid "You must provide a comment"
-msgstr ""
+msgstr "Trebuie să scrii un comentariu"
 
 msgid "Email address is not valid"
-msgstr ""
+msgstr "Adresa de contact nu este valabilă"
 
 msgid "Document not found"
-msgstr ""
+msgstr "Documentul nu a fost găsit"
 
 msgid "The document you are looking for does not exist."
-msgstr ""
+msgstr "Documentul pe care îl căutați nu există"
 
 msgid "Powered by %s"
-msgstr ""
+msgstr "Creat de %s"
 
 msgid "Subscribe to"
-msgstr ""
+msgstr "Abonează-te la"
 
 msgid "What is an RSS feed?"
-msgstr ""
+msgstr "Ce este un abonament RSS?"
 
 msgid "RSS feed is a free blog summary. It provides content (either posts or comments) or summaries of content, together with links to the full versions, and other metadata. The last published items may then be read by your favorite RSS <a href=\"http://en.wikipedia.org/wiki/Aggregator\">aggregator</a>."
-msgstr ""
+msgstr "Abonamentul RSS este un sumar de blog gratuit. Oferă conținut (fie postări sau comentarii) sau un sumar de conținut, împreună cu legături web către versiunea completă a conținutului respectiv, și alte metadate. Ultimele conținuturi publicate pot fi citite de către <a href=\"http://en.wikipedia.org/wiki/Aggregator\">abonatorul</a> dvs favorit."
 
 msgid "Simply copy the following URL into your aggregator:"
-msgstr ""
+msgstr "Pur și simplu copiați următoarea legătură web în abonatorul dvs"
 
 msgid "Password needed"
-msgstr ""
+msgstr "Parola este necesară"
 
 msgid "You must give a password to access this area."
-msgstr ""
+msgstr "Trebuie să inserați o parolă pentru a accesa această zonă."
 
 msgid "Password:"
-msgstr ""
+msgstr "Parolă:"
 
 msgid "You must provide a valid email address."
-msgstr ""
+msgstr "Trebuie să furnizați o adresă email validă."
 
 msgid "Read"
-msgstr ""
+msgstr "Citeşte"
Index: plugins/aboutConfig/index.php
===================================================================
--- plugins/aboutConfig/index.php	(revision 782)
+++ plugins/aboutConfig/index.php	(revision 589)
@@ -132,5 +132,5 @@
 <div id="local" class="multi-part" title="<?php echo __('blog settings'); ?>">
 
-<?php
+<?php 
 $table_header = '<table class="settings" id="%s"><caption>%s</caption>'.
 '<thead>'.
@@ -146,5 +146,4 @@
 
 $settings = array();
-
 foreach ($core->blog->settings->dumpNamespaces() as $ns => $namespace) {
 	foreach ($namespace->dumpSettings() as $k => $v) {
Index: plugins/antispam/index.php
===================================================================
--- plugins/antispam/index.php	(revision 782)
+++ plugins/antispam/index.php	(revision 776)
@@ -121,4 +121,5 @@
 {
 	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_name.'</span></h2>';
+
 	# Information
 	$spam_count = dcAntispam::countSpam($core);
@@ -231,3 +232,2 @@
 </body>
 </html>
-
Index: plugins/attachments/_define.php
===================================================================
--- plugins/attachments/_define.php	(revision 464)
+++ plugins/attachments/_define.php	(revision 843)
@@ -18,5 +18,5 @@
 	/* Version */		'1.0',
 	array(
-		'permissions' =>	'contentadmin,pages',
+		'permissions' =>	'usage,contentadmin,pages',
 		'priority' =>		999
 	)
Index: plugins/blogroll/index.php
===================================================================
--- plugins/blogroll/index.php	(revision 782)
+++ plugins/blogroll/index.php	(revision 717)
@@ -242,11 +242,10 @@
 <form action="plugin.php" method="post" id="links-form">
 <table class="maximal dragable">
-<caption><?php echo __('Links list'); ?></caption>
 <thead>
 <tr>
-  <th scope="col" colspan="3"><?php echo __('Title'); ?></th>
-  <th scope="col"><?php echo __('Description'); ?></th>
-  <th scope="col"><?php echo __('URL'); ?></th>
-  <th scope="col"><?php echo __('Lang'); ?></th>
+  <th colspan="3"><?php echo __('Title'); ?></th>
+  <th><?php echo __('Description'); ?></th>
+  <th><?php echo __('URL'); ?></th>
+  <th><?php echo __('Lang'); ?></th>
 </tr>
 </thead>
@@ -266,12 +265,12 @@
 	{
 		echo
-		'<th scope="row" colspan="5"><strong><a href="'.$p_url.'&amp;edit=1&amp;id='.$rs->link_id.'">'.
-		html::escapeHTML($rs->link_desc).'</a></strong></th>';
+		'<td colspan="5"><strong><a href="'.$p_url.'&amp;edit=1&amp;id='.$rs->link_id.'">'.
+		html::escapeHTML($rs->link_desc).'</a></strong></td>';
 	}
 	else
 	{
 		echo
-		'<th scope="row"><a href="'.$p_url.'&amp;edit=1&amp;id='.$rs->link_id.'">'.
-		html::escapeHTML($rs->link_title).'</a></th>'.
+		'<td><a href="'.$p_url.'&amp;edit=1&amp;id='.$rs->link_id.'">'.
+		html::escapeHTML($rs->link_title).'</a></td>'.
 		'<td>'.html::escapeHTML($rs->link_desc).'</td>'.
 		'<td>'.html::escapeHTML($rs->link_href).'</td>'.
Index: plugins/fairTrackbacks/_prepend.php
===================================================================
--- plugins/fairTrackbacks/_prepend.php	(revision 270)
+++ plugins/fairTrackbacks/_prepend.php	(revision 857)
@@ -12,4 +12,6 @@
 if (!defined('DC_RC_PATH')) { return; }
 
+global $__autoload;
+
 if (!defined('DC_FAIRTRACKBACKS_FORCE')) {
 	define('DC_FAIRTRACKBACKS_FORCE',false);
Index: plugins/importExport/_admin.php
===================================================================
--- plugins/importExport/_admin.php	(revision 324)
+++ plugins/importExport/_admin.php	(revision 840)
@@ -2,7 +2,7 @@
 # -- BEGIN LICENSE BLOCK ---------------------------------------
 #
-# This file is part of Dotclear 2.
+# This file is part of importExport, a plugin for DotClear2.
 #
-# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Copyright (c) 2003-2012 Olivier Meunier & Association Dotclear
 # Licensed under the GPL version 2.0 license.
 # See LICENSE file or
@@ -12,12 +12,11 @@
 if (!defined('DC_CONTEXT_ADMIN')) { return; }
 
-$_menu['Plugins']->addItem(__('Import/Export'),'plugin.php?p=importExport','index.php?pf=importExport/icon.png',
-		preg_match('/plugin.php\?p=importExport(&.*)?$/',$_SERVER['REQUEST_URI']),
-		$core->auth->check('admin',$core->blog->id));
-
-# Files needed by flat files import / export
-$__autoload['backupFile'] = dirname(__FILE__).'/inc/flat/class.backupFile.php';
-$__autoload['dcImport'] = dirname(__FILE__).'/inc/flat/class.dc.import.php';
-$__autoload['dbExport'] = dirname(__FILE__).'/inc/flat/class.db.export.php';
+$_menu['Plugins']->addItem(
+	__('Import/Export'),
+	'plugin.php?p=importExport',
+	'index.php?pf=importExport/icon.png',
+	preg_match('/plugin.php\?p=importExport(&.*)?$/',$_SERVER['REQUEST_URI']),
+	$core->auth->check('admin',$core->blog->id)
+);
 
 $core->addBehavior('adminDashboardFavs','importExportDashboardFavs');
@@ -25,7 +24,12 @@
 function importExportDashboardFavs($core,$favs)
 {
-	$favs['importExport'] = new ArrayObject(array('importExport','Import/Export','plugin.php?p=importExport',
-		'index.php?pf=importExport/icon.png','index.php?pf=importExport/icon-big.png',
-		'admin',null,null));
+	$favs['importExport'] = new ArrayObject(array(
+		'importExport',
+		__('Import/Export'),
+		'plugin.php?p=importExport',
+		'index.php?pf=importExport/icon.png',
+		'index.php?pf=importExport/icon-big.png',
+		'admin',null,null
+	));
 }
 ?>
Index: plugins/importExport/_define.php
===================================================================
--- plugins/importExport/_define.php	(revision 464)
+++ plugins/importExport/_define.php	(revision 841)
@@ -2,7 +2,7 @@
 # -- BEGIN LICENSE BLOCK ---------------------------------------
 #
-# This file is part of Dotclear 2.
+# This file is part of importExport, a plugin for DotClear2.
 #
-# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Copyright (c) 2003-2012 Olivier Meunier & Association Dotclear
 # Licensed under the GPL version 2.0 license.
 # See LICENSE file or
@@ -15,10 +15,7 @@
 	/* Name */			"Import / Export",
 	/* Description*/		"Import and Export your blog",
-	/* Author */			"Olivier Meunier",
-	/* Version */			'2.4',
-	array(
-		'permissions' => 'admin',
-		'priority' => 10
-	)
+	/* Author */			"Olivier Meunier & Contributors",
+	/* Version */			'3.1',
+	/* Perm */			'admin'
 );
 ?>
Index: plugins/importExport/_prepend.php
===================================================================
--- plugins/importExport/_prepend.php	(revision 857)
+++ plugins/importExport/_prepend.php	(revision 857)
@@ -0,0 +1,44 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of importExport, a plugin for DotClear2.
+#
+# Copyright (c) 2003-2012 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_RC_PATH')) { return; }
+
+global $__autoload,$core;
+
+$__autoload['dcIeModule'] = 	dirname(__FILE__).'/inc/class.dc.ieModule.php';
+
+$__autoload['dcImportFlat'] = 	dirname(__FILE__).'/inc/class.dc.import.flat.php';
+$__autoload['dcImportFeed'] = 	dirname(__FILE__).'/inc/class.dc.import.feed.php';
+
+$__autoload['dcExportFlat'] = 	dirname(__FILE__).'/inc/class.dc.export.flat.php';
+
+$__autoload['dcImportDC1'] = 	dirname(__FILE__).'/inc/class.dc.import.dc1.php';
+$__autoload['dcImportWP'] = 	dirname(__FILE__).'/inc/class.dc.import.wp.php';
+
+$__autoload['flatBackup'] = 	dirname(__FILE__).'/inc/flat/class.flat.backup.php';
+$__autoload['flatImport'] = 	dirname(__FILE__).'/inc/flat/class.flat.import.php';
+$__autoload['flatExport'] = 	dirname(__FILE__).'/inc/flat/class.flat.export.php';
+
+$core->addBehavior('importExportModules','registerIeModules');
+
+function registerIeModules($modules)
+{
+	$modules['import'][] = 'dcImportFlat';
+	$modules['import'][] = 'dcImportFeed';
+	
+	$modules['export'][] = 'dcExportFlat';
+	
+	if ($GLOBALS['core']->auth->isSuperAdmin()) {
+		$modules['import'][] = 'dcImportDC1';
+		$modules['import'][] = 'dcImportWP';
+	}
+}
+?>
Index: plugins/importExport/inc/class.dc.export.flat.php
===================================================================
--- plugins/importExport/inc/class.dc.export.flat.php	(revision 557)
+++ plugins/importExport/inc/class.dc.export.flat.php	(revision 840)
@@ -2,7 +2,7 @@
 # -- BEGIN LICENSE BLOCK ---------------------------------------
 #
-# This file is part of Dotclear 2.
+# This file is part of importExport, a plugin for DotClear2.
 #
-# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Copyright (c) 2003-2012 Olivier Meunier & Association Dotclear
 # Licensed under the GPL version 2.0 license.
 # See LICENSE file or
@@ -16,5 +16,5 @@
 	public function setInfo()
 	{
-		$this->type = 'e';
+		$this->type = 'export';
 		$this->name = __('Flat file export');
 		$this->description = __('Exports a blog or a full Dotclear installation to flat file.');
@@ -31,5 +31,5 @@
 			try
 			{
-				$exp = new dbExport($this->core->con,$fullname,$this->core->prefix);
+				$exp = new flatExport($this->core->con,$fullname,$this->core->prefix);
 				fwrite($exp->fp,'///DOTCLEAR|'.DC_VERSION."|single\n");
 				
@@ -84,4 +84,5 @@
 				$_SESSION['export_file'] = $fullname;
 				$_SESSION['export_filename'] = $_POST['file_name'];
+				$_SESSION['export_filezip'] = !empty($_POST['file_zip']);
 				http::redirect($this->getURL().'&do=ok');
 			}
@@ -99,5 +100,5 @@
 			try
 			{
-				$exp = new dbExport($this->core->con,$fullname,$this->core->prefix);
+				$exp = new flatExport($this->core->con,$fullname,$this->core->prefix);
 				fwrite($exp->fp,'///DOTCLEAR|'.DC_VERSION."|full\n");
 				$exp->exportTable('blog');
@@ -123,4 +124,5 @@
 				$_SESSION['export_file'] = $fullname;
 				$_SESSION['export_filename'] = $_POST['file_name'];
+				$_SESSION['export_filezip'] = !empty($_POST['file_zip']);
 				http::redirect($this->getURL().'&do=ok');
 			}
@@ -140,11 +142,47 @@
 			
 			ob_end_clean();
-			header('Content-Disposition: attachment;filename='.$_SESSION['export_filename']);
-			header('Content-Type: text/plain; charset=UTF-8');
-			readfile($_SESSION['export_file']);
-			unlink($_SESSION['export_file']);
-			unset($_SESSION['export_file']);
-			unset($_SESSION['export_filename']);
-			exit;
+			
+			if (substr($_SESSION['export_filename'],-4) == '.zip') {
+				$_SESSION['export_filename'] = substr($_SESSION['export_filename'],0,-4);//.'.txt';
+			}
+			
+			# Flat export
+			if (empty($_SESSION['export_filezip'])) {
+			
+				header('Content-Disposition: attachment;filename='.$_SESSION['export_filename']);
+				header('Content-Type: text/plain; charset=UTF-8');
+				readfile($_SESSION['export_file']);
+				
+				unlink($_SESSION['export_file']);
+				unset($_SESSION['export_file'],$_SESSION['export_filename'],$_SESSION['export_filezip']);
+				exit;
+			}
+			# Zip export
+			else {
+				try
+				{
+					$file_zipname = $_SESSION['export_filename'].'.zip';
+					
+					$fp = fopen('php://output','wb');
+					$zip = new fileZip($fp);
+					$zip->addFile($_SESSION['export_file'],$_SESSION['export_filename']);
+					
+					header('Content-Disposition: attachment;filename='.$file_zipname);
+					header('Content-Type: application/x-zip');
+					
+					$zip->write();
+					
+					unlink($_SESSION['export_file']);
+					unset($zip,$_SESSION['export_file'],$_SESSION['export_filename'],$file_zipname);
+					exit;
+				}
+				catch (Exception $e)
+				{
+					unset($zip,$_SESSION['export_file'],$_SESSION['export_filename'],$file_zipname);
+					@unlink($_SESSION['export_file']);
+					
+					throw new Exception(__('Failed to compress export file.'));
+				}
+			}
 		}
 	}
@@ -154,15 +192,25 @@
 		echo
 		'<form action="'.$this->getURL(true).'" method="post">'.
-		'<fieldset><legend>'.__('Export a blog').'</legend>'.
-		'<p>'.sprintf(__('This will create an export of your current blog: %s'),
-		'<strong>'.html::escapeHTML($this->core->blog->name).'</strong>').'</p>'.
-		'<p><label for="file_name" class="classic">'.__('File name:').'</label>'.
-		form::field(array('file_name','file_name'),25,255,date('Y-m-d-').html::escapeHTML($this->core->blog->id.'-backup.txt')).
-		'<input type="submit" value="'.__('Export').'" />'.
+		'<fieldset><legend>'.__('Single blog').'</legend>'.
+		'<p>'.sprintf(__('This will create an export of your current blog: %s'),html::escapeHTML($this->core->blog->name)).'</p>'.
+		
+		'<p><label for="file_name">'.__('File name:').'</label>'.
+		form::field(array('file_name','file_name'),50,255,date('Y-m-d-').html::escapeHTML($this->core->blog->id.'-backup.txt')).
+		'</p>'.
+		
+		'<p><label for="file_zip" class="classic">'.
+		form::checkbox(array('file_zip','file_zip'),1).' '.
+		__('Compress file').'</label>'.
+		'</p>'.
+		
+		'<p class="zip-dl"><a href="media.php?d=&amp;zipdl=1">'.
+		__('You may also want to download your media directory as a zip file').'</a></p>'.
+		
+		'<p><input type="submit" value="'.__('Export').'" />'.
 		form::hidden(array('do'),'export_blog').
 		$this->core->formNonce().'</p>'.
-		'<p class="zip-dl"><a href="media.php?d=&amp;zipdl=1">'.
-		__('You may also want to download your media directory as a zip file').'</a></p>'.
-		'</fieldset></form>';
+		
+		'</fieldset>'.
+		'</form>';
 		
 		if ($this->core->auth->isSuperAdmin())
@@ -170,11 +218,22 @@
 			echo
 			'<form action="'.$this->getURL(true).'" method="post">'.
-			'<fieldset><legend>'.__('Export all content').'</legend>'.
-			'<p><label for="file_name2" class="classic">'.__('File name:').'</label>'.
-			form::field(array('file_name','file_name2'),25,255,date('Y-m-d-').'dotclear-backup.txt').
-			'<input type="submit" value="'.__('Export all content').'" />'.
+			'<fieldset><legend>'.__('Multiple blogs').'</legend>'.
+			'<p>'.__('This will create an export of all the content of your database.').'</p>'.
+			
+			'<p><label for="file_name2">'.__('File name:').'</label>'.
+			form::field(array('file_name','file_name2'),50,255,date('Y-m-d-').'dotclear-backup.txt').
+			'</p>'.
+			
+			'<p><label for="file_zip2" class="classic">'.
+			form::checkbox(array('file_zip','file_zip2'),1).' '.
+			__('Compress file').'</label>'.
+			'</p>'.
+			
+			'<p><input type="submit" value="'.__('Export').'" />'.
 			form::hidden(array('do'),'export_all').
 			$this->core->formNonce().'</p>'.
-			'</fieldset></form>';
+			
+			'</fieldset>'.
+			'</form>';
 		}
 	}
Index: plugins/importExport/inc/class.dc.ieModule.php
===================================================================
--- plugins/importExport/inc/class.dc.ieModule.php	(revision 270)
+++ plugins/importExport/inc/class.dc.ieModule.php	(revision 840)
@@ -2,7 +2,7 @@
 # -- BEGIN LICENSE BLOCK ---------------------------------------
 #
-# This file is part of Dotclear 2.
+# This file is part of importExport, a plugin for DotClear2.
 #
-# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Copyright (c) 2003-2012 Olivier Meunier & Association Dotclear
 # Licensed under the GPL version 2.0 license.
 # See LICENSE file or
@@ -12,5 +12,5 @@
 if (!defined('DC_RC_PATH')) { return; }
 
-class dcIeModule
+abstract class dcIeModule
 {
 	public $type;
@@ -28,14 +28,14 @@
 		$this->setInfo();
 		
-		$this->id = get_class($this);
-		if (!$this->type) {
-			throw new Exception('No type for module'.$this->id);
+		if (!in_array($this->type,array('import','export'))) {
+			throw new Exception(sprintf('Unknow type for module %s',get_class($this)));
 		}
-		
-		$this->url = 'plugin.php?p=importExport&t='.$this->type.'&f='.$this->id;
 		
 		if (!$this->name) {
 			$this->name = get_class($this);
 		}
+		
+		$this->id = get_class($this);
+		$this->url = sprintf('plugin.php?p=importExport&type=%s&module=%s',$this->type,$this->id);
 	}
 	
@@ -44,23 +44,14 @@
 	}
 	
-	protected function setInfo()
-	{
-	}
+	abstract protected function setInfo();
 	
 	final public function getURL($escape=false)
 	{
-		if ($escape) {
-			return html::escapeHTML($this->url);
-		}
-		return $this->url;
+		return $escape ? html::escapeHTML($this->url) : $this->url;
 	}
 	
-	public function process($do)
-	{
-	}
+	abstract public function process($do);
 	
-	public function gui()
-	{
-	}
+	abstract public function gui();
 	
 	protected function progressBar($percent)
Index: plugins/importExport/inc/class.dc.import.dc1.php
===================================================================
--- plugins/importExport/inc/class.dc.import.dc1.php	(revision 270)
+++ plugins/importExport/inc/class.dc.import.dc1.php	(revision 840)
@@ -2,7 +2,7 @@
 # -- BEGIN LICENSE BLOCK ---------------------------------------
 #
-# This file is part of Dotclear 2.
+# This file is part of importExport, a plugin for DotClear2.
 #
-# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Copyright (c) 2003-2012 Olivier Meunier & Association Dotclear
 # Licensed under the GPL version 2.0 license.
 # See LICENSE file or
@@ -40,5 +40,5 @@
 	protected function setInfo()
 	{
-		$this->type = 'i';
+		$this->type = 'import';
 		$this->name = __('Dotclear 1.2 import');
 		$this->description = __('Import a Dotclear 1.2 installation into your current blog.');
Index: plugins/importExport/inc/class.dc.import.feed.php
===================================================================
--- plugins/importExport/inc/class.dc.import.feed.php	(revision 557)
+++ plugins/importExport/inc/class.dc.import.feed.php	(revision 840)
@@ -2,7 +2,7 @@
 # -- BEGIN LICENSE BLOCK ---------------------------------------
 #
-# This file is part of Dotclear 2.
+# This file is part of importExport, a plugin for DotClear2.
 #
-# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Copyright (c) 2003-2012 Olivier Meunier & Association Dotclear
 # Licensed under the GPL version 2.0 license.
 # See LICENSE file or
@@ -19,5 +19,5 @@
 	public function setInfo()
 	{
-		$this->type = 'i';
+		$this->type = 'import';
 		$this->name = __('Feed import');
 		$this->description = __('Imports a feed as new entries.');
@@ -81,16 +81,17 @@
 		
 		echo
-		'<h3>'.__('Import from a feed').'</h3>'.
-		'<p>'.sprintf(__('This will import a feed (RSS or Atom) a as new content in the current blog: %s.'),
-		'<strong>'.html::escapeHTML($this->core->blog->name).'</strong>').'</p>'.
 		'<form action="'.$this->getURL(true).'" method="post">'.
+		'<fieldset><legend>'.__('Single blog').'</legend>'.
+		'<p>'.sprintf(__('This will import a feed (RSS or Atom) a as new content in the current blog: %s.'),html::escapeHTML($this->core->blog->name)).'</p>'.
 		
-		'<div class="fieldset">'.
+		'<p><label for="feed_url">'.__('Feed URL:').'</label>'.
+		form::field('feed_url',50,300,html::escapeHTML($this->feed_url)).'</p>'.
+		
+		'<p>'.
 		$this->core->formNonce().
 		form::hidden(array('do'),1).
-		'<p><label for="feed_url">'.__('Feed URL:').'</label>'.
-		form::field('feed_url',40,300,html::escapeHTML($this->feed_url)).'</p>'.
-		'<p><input type="submit" value="'.__('Import').'" /></p>'.
-		'</div>'.
+		'<input type="submit" value="'.__('Import').'" /></p>'.
+		
+		'</fieldset>'.
 		'</form>';
 	}
Index: plugins/importExport/inc/class.dc.import.flat.php
===================================================================
--- plugins/importExport/inc/class.dc.import.flat.php	(revision 557)
+++ plugins/importExport/inc/class.dc.import.flat.php	(revision 840)
@@ -2,7 +2,7 @@
 # -- BEGIN LICENSE BLOCK ---------------------------------------
 #
-# This file is part of Dotclear 2.
+# This file is part of importExport, a plugin for DotClear2.
 #
-# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Copyright (c) 2003-2012 Olivier Meunier & Association Dotclear
 # Licensed under the GPL version 2.0 license.
 # See LICENSE file or
@@ -18,5 +18,5 @@
 	public function setInfo()
 	{
-		$this->type = 'i';
+		$this->type = 'import';
 		$this->name = __('Flat file import');
 		$this->description = __('Imports a blog or a full Dotclear installation from flat file.');
@@ -55,7 +55,17 @@
 			
 			try {
-				$bk = new dcImport($this->core,$file);
+				# Try to unzip file
+				$unzip_file = $this->unzip($file);
+				if (false !== $unzip_file) {
+					$bk = new flatImport($this->core,$unzip_file);
+				}
+				# Else this is a normal file
+				else {
+					$bk = new flatImport($this->core,$file);
+				}
+				
 				$bk->importSingle();
 			} catch (Exception $e) {
+				@unlink($unzip_file);
 				if ($to_unlink) {
 					@unlink($file);
@@ -63,4 +73,5 @@
 				throw $e;
 			}
+			@unlink($unzip_file);
 			if ($to_unlink) {
 				@unlink($file);
@@ -95,7 +106,17 @@
 			
 			try {
-				$bk = new dcImport($this->core,$file);
+				# Try to unzip file
+				$unzip_file = $this->unzip($file);
+				if (false !== $unzip_file) {
+					$bk = new flatImport($this->core,$unzip_file);
+				}
+				# Else this is a normal file
+				else {
+					$bk = new flatImport($this->core,$file);
+				}
+				
 				$bk->importFull();
 			} catch (Exception $e) {
+				@unlink($unzip_file);
 				if ($to_unlink) {
 					@unlink($file);
@@ -103,4 +124,5 @@
 				throw $e;
 			}
+			@unlink($unzip_file);
 			if ($to_unlink) {
 				@unlink($file);
@@ -128,4 +150,7 @@
 			return;
 		}
+		
+		$public_files = array_merge(array('-' => ''),$this->getPublicFiles());
+		$has_files = (boolean) (count($public_files) - 1);
 		
 		echo
@@ -155,29 +180,27 @@
 		
 		echo
-		'<h3>'.__('Import a single blog').'</h3>'.
-		'<p>'.sprintf(__('This will import a single blog backup as new content in the current blog: %s.'),
-		'<strong>'.html::escapeHTML($this->core->blog->name).'</strong>').'</p>'.
 		'<form action="'.$this->getURL(true).'" method="post" enctype="multipart/form-data">'.
-		
-		'<div class="fieldset">'.
+		'<fieldset><legend>'.__('Single blog').'</legend>'.
+		'<p>'.sprintf(__('This will import a single blog backup as new content in the current blog: %s.'),html::escapeHTML($this->core->blog->name)).'</p>'.
+		
+		'<p><label for="up_single_file">'.__('Upload a backup file').'</label>'.
+		'<input type="file" id="up_single_file" name="up_single_file" size="20" />'.
+		'</p>';
+		
+		if ($has_files) {
+			echo 
+			'<p><label for="public_single_file">'.__('or pick up a local file in your public directory').' '.
+			form::combo('public_single_file',$public_files).
+			'</label></p>';
+		}
+		
+		echo 
+		'<p>'.
 		$this->core->formNonce().
 		form::hidden(array('do'),1).
 		form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE).
-		'<p><label for="up_single_file">'.__('Upload a backup file').'</label>'.
-		'<input type="file" id="up_single_file" name="up_single_file" size="20" />'.
-		'</p>';
-		
-		$public_files = $this->getPublicFiles();
-		
-		$empty = empty($public_files);
-		$public_files = array_merge(array('-' => ''),$public_files);
-		echo
-		'<p><label for="public_single_file">'.__('or pick up a local file in your public directory').' '.
-		form::combo('public_single_file',$public_files, '', '', '', $empty).
-		'</label></p>';
-		
-		echo
-		'<p><input type="submit" value="'.__('Import').'" /></p>'.
-		'</div>'.
+		'<input type="submit" value="'.__('Import').'" /></p>'.
+		
+		'</fieldset>'.
 		'</form>';
 		
@@ -185,29 +208,30 @@
 		{
 			echo
-			'<h3>'.__('Import a full backup file').'</h3>'.
 			'<form action="'.$this->getURL(true).'" method="post" enctype="multipart/form-data" id="formfull">'.
-			'<div>'.form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE).'</div>'.
-			
-			'<div class="fieldset">'.
+			'<fieldset><legend>'.__('Multiple blogs').'</legend>'.
+			'<p>'.__('This will reset all the content of your database, except users.').'</p>'.
+			
+			'<p><label for="up_full_file">'.__('Upload a backup file').'</label>'.
+			'<input type="file" id="up_full_file" name="up_full_file" size="20" />'.
+			'</p>';
+			
+			if ($has_files) {
+				echo 
+				'<p><label for="public_full_file">'.__('or pick up a local file in your public directory').'</label>'.
+				form::combo('public_full_file',$public_files).
+				'</p>';
+			}
+			
+			echo
+			'<p><label for="your_pwd" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label>'.
+			form::password('your_pwd',20,255).'</p>'.
+			
+			'<p>'.
 			$this->core->formNonce().
 			form::hidden(array('do'),1).
 			form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE).
-			'<p><label for="up_full_file">'.__('Upload a backup file').'</label>'.
-			'<input type="file" id="up_full_file" name="up_full_file" size="20" />'.
-			'</p>';
-			
-			echo
-			'<p><label for="public_full_file">'.__('or pick up a local file in your public directory').'</label>'.
-			form::combo('public_full_file',$public_files, '', '', '', $empty).
-			'</p>';
-			
-			echo
-			'<p class="form-note warning"><strong>'.__('Warning: This will reset all the content of your database, except users.').'</strong></p>'.
-			
-			'<p><label for="your_pwd" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label>'.
-			form::password('your_pwd',20,255).'</p>'.
-			
-			'<p><input type="submit" value="'.__('Import').'" /></p>'.
-			'</div>'.
+			'<input type="submit" value="'.__('Import').'" /></p>'.
+			
+			'</fieldset>'.
 			'</form>';
 		}
@@ -225,13 +249,76 @@
 				if (is_file($entry_path) && is_readable($entry_path))
 				{
-					$fp = fopen($entry_path,'rb');
-					if (strpos(fgets($fp),'///DOTCLEAR|') === 0) {
+					# Do not test each zip file content here, its too long
+					if (substr($entry_path,-4) == '.zip') {
+							$public_files[$entry] = $entry_path;
+					}
+					elseif (self::checkFileContent($entry_path)) {
 						$public_files[$entry] = $entry_path;
 					}
-					fclose($fp);
 				}
 			}
 		}
 		return $public_files;
+	}
+	
+	protected static function checkFileContent($entry_path)
+	{
+		$ret = false;
+		
+		$fp = fopen($entry_path,'rb');
+		$ret = strpos(fgets($fp),'///DOTCLEAR|') === 0;
+		fclose($fp);
+		
+		return $ret;
+	}
+	
+	private function unzip($file)
+	{
+		$zip = new fileUnzip($file);
+		
+		if ($zip->isEmpty()) {
+			$zip->close();
+			return false;//throw new Exception(__('File is empty or not a compressed file.'));
+		}
+		
+		foreach($zip->getFilesList() as $zip_file)
+		{
+			# Check zipped file name
+			if (substr($zip_file,-4) != '.txt') {
+				continue;
+			}
+			
+			# Check zipped file contents
+			$content = $zip->unzip($zip_file);
+			if (strpos($content,'///DOTCLEAR|') !== 0) {
+				unset($content);
+				continue;
+			}
+			
+			$target = path::fullFromRoot($zip_file,dirname($file));
+			
+			# Check existing files with same name
+			if (file_exists($target)) {
+				$zip->close();
+				unset($content);
+				throw new Exception(__('Another file with same name exists.'));
+			}
+			
+			# Extract backup content
+			if (file_put_contents($target,$content) === false) {
+				$zip->close();
+				unset($content);
+				throw new Exception(__('Failed to extract backup file.'));
+			}
+			
+			$zip->close();
+			unset($content);
+			
+			# Return extracted file name
+			return $target;
+		}
+		
+		$zip->close();
+		throw new Exception(__('No backup in compressed file.'));
 	}
 }
Index: plugins/importExport/inc/class.dc.import.wp.php
===================================================================
--- plugins/importExport/inc/class.dc.import.wp.php	(revision 270)
+++ plugins/importExport/inc/class.dc.import.wp.php	(revision 840)
@@ -2,7 +2,7 @@
 # -- BEGIN LICENSE BLOCK ---------------------------------------
 #
-# This file is part of Dotclear 2.
+# This file is part of importExport, a plugin for DotClear2.
 #
-# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Copyright (c) 2003-2012 Olivier Meunier & Association Dotclear
 # Licensed under the GPL version 2.0 license.
 # See LICENSE file or
@@ -61,5 +61,5 @@
 	protected function setInfo()
 	{
-		$this->type = 'i';
+		$this->type = 'import';
 		$this->name = __('WordPress import');
 		$this->description = __('Import a WordPress installation into your current blog.');
@@ -621,6 +621,12 @@
 		
 		$cur->post_format = $this->vars['post_formater'];
-		$cur->post_content = $this->cleanStr($rs->post_content);
-		$cur->post_excerpt = $this->cleanStr($rs->post_excerpt);
+		$_post_content = explode('<!--more-->',$rs->post_content,2);
+		if (count($_post_content) == 1) {
+			$cur->post_excerpt = NULL;
+			$cur->post_content = $this->cleanStr(array_shift($_post_content));
+		} else {
+			$cur->post_excerpt = $this->cleanStr(array_shift($_post_content));
+			$cur->post_content = $this->cleanStr(array_shift($_post_content));
+		}
 		
 		$cur->post_content_xhtml = $this->core->callFormater($this->vars['post_formater'],$cur->post_content);
@@ -696,5 +702,5 @@
 			$cur->comment_trackback       = $rs->comment_type == 'trackback' ? 1 : 0;
 			$cur->comment_site = substr($this->cleanStr($rs->comment_author_url),0,255);
-			if (!isset($cur->comment_site)) $cur->comment_site = NULL;
+			if ($cur->comment_site == '') $cur->comment_site = NULL;
 			
 			if ($rs->comment_approved == 'spam') {
Index: lugins/importExport/inc/flat/class.backupFile.php
===================================================================
--- plugins/importExport/inc/flat/class.backupFile.php	(revision 270)
+++ 	(revision )
@@ -1,133 +1,0 @@
-<?php
-# -- BEGIN LICENSE BLOCK ---------------------------------------
-#
-# This file is part of Dotclear 2.
-#
-# Copyright (c) 2003-2011 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_RC_PATH')) { return; }
-
-class backupFile
-{
-	protected $fp;
-	private $line_cols = array();
-	private $line_name;
-	
-	private $replacement = array(
-		'/(?<!\\\\)(?>(\\\\\\\\)*+)(\\\\n)/u' => "\$1\n",
-		'/(?<!\\\\)(?>(\\\\\\\\)*+)(\\\\r)/u' => "\$1\r",
-		'/(?<!\\\\)(?>(\\\\\\\\)*+)(\\\\")/u' => '$1"',
-		'/(\\\\\\\\)/' => '\\'
-	);
-	
-	public function __construct($file)
-	{
-		if (file_exists($file) && is_readable($file)) {
-			$this->fp = fopen($file,'rb');
-		} else {
-			throw new Exception(__('No file to read.'));
-		}
-	}
-	
-	public function __destruct()
-	{
-		if ($this->fp) {
-			fclose($this->fp);
-		}
-	}
-	
-	public function getLine()
-	{
-		if (feof($this->fp)) {
-			return false;
-		}
-		
-		$line = trim(fgets($this->fp));
-		
-		if (substr($line,0,1) == '[')
-		{
-			$this->line_name = substr($line,1,strpos($line,' ')-1);
-			
-			$line = substr($line,strpos($line,' ')+1,-1);
-			$this->line_cols = explode(',',$line);
-			
-			return $this->getLine();
-		}
-		elseif (substr($line,0,1) == '"')
-		{
-			$line = preg_replace('/^"|"$/','',$line);
-			$line = preg_split('/(^"|","|"$)/m',$line);
-			
-			if (count($this->line_cols) != count($line)) {
-				throw new Exception('Invalid row count');
-			}
-			
-			$res = array();
-			
-			for ($i=0; $i<count($line); $i++) {
-				$res[$this->line_cols[$i]] =
-				preg_replace(array_keys($this->replacement),array_values($this->replacement),$line[$i]);
-			}
-			
-			return new backupFileItem($this->line_name,$res);
-		}
-		else
-		{
-			return $this->getLine();
-		}
-	}
-}
-
-class backupFileItem
-{
-	public $__name;
-	private $__data = array();
-	
-	public function __construct($name,$data)
-	{
-		$this->__name = $name;
-		$this->__data = $data;
-	}
-	
-	public function f($name)
-	{
-		return iconv('UTF-8','UTF-8//IGNORE',$this->__data[$name]);
-	}
-	
-	public function __get($name)
-	{
-		return $this->f($name);
-	}
-	
-	public function __set($n,$v)
-	{
-		$this->__data[$n] = $v;
-	}
-	
-	public function exists($n)
-	{
-		return isset($this->__data[$n]);
-	}
-	
-	public function drop()
-	{
-		foreach (func_get_args() as $n) {
-			if (isset($this->__data[$n])) {
-				unset($this->__data[$n]);
-			}
-		}
-	}
-	
-	public function substitute($old,$new)
-	{
-		if (isset($this->__data[$old])) {
-			$this->__data[$new] = $this->__data[$old];
-			unset($this->__data[$old]);
-		}
-	}
-}
-?>
Index: lugins/importExport/inc/flat/class.db.export.php
===================================================================
--- plugins/importExport/inc/flat/class.db.export.php	(revision 270)
+++ 	(revision )
@@ -1,106 +1,0 @@
-<?php
-# -- BEGIN LICENSE BLOCK ---------------------------------------
-#
-# This file is part of Dotclear 2.
-#
-# Copyright (c) 2003-2011 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_RC_PATH')) { return; }
-
-class dbExport
-{
-	private $con;
-	private $prefix;
-	
-	private $line_reg = array('/\\\\/u',  '/\n/u','/\r/u','/"/u');
-	private $line_rep = array('\\\\\\\\', '\n'   ,'\r'   ,'\"');
-	
-	public $fp;
-	
-	function __construct($con,$out='php://output',$prefix=null)
-	{
-		$this->con =& $con;
-		$this->prefix = $prefix;
-		
-		if (($this->fp = fopen($out,'w')) === false) {
-			return false;
-		}
-		@set_time_limit(300);
-	}
-	
-	function __destruct()
-	{
-		if (is_resource($this->fp)) {
-			fclose($this->fp);
-		}
-	}
-	
-	function export($name,$sql)
-	{
-		$rs = $this->con->select($sql);
-		
-		if (!$rs->isEmpty())
-		{
-			fwrite($this->fp,"\n[".$name.' '.implode(',',$rs->columns())."]\n");
-			while ($rs->fetch()) {
-				fwrite($this->fp,$this->getLine($rs));
-			}
-			fflush($this->fp);
-		}
-	}
-	
-	function exportAll()
-	{
-		$tables = $this->getTables();
-		
-		foreach ($tables as $table)
-		{
-			$this->exportTable($table);
-		}
-	}
-	
-	function exportTable($table)
-	{
-		$req = 'SELECT * FROM '.$this->con->escapeSystem($this->prefix.$table);
-		
-		$this->export($table,$req);
-	}
-	
-	function getTables()
-	{
-		$schema = dbSchema::init($this->con);
-		$db_tables = $schema->getTables();
-		
-		$tables = array();
-		foreach ($db_tables as $t)
-		{
-			if ($this->prefix) {
-				if (strpos($t,$this->prefix) === 0) {
-					$tables[] = $t;
-				}
-			} else {
-				$tables[] = $t;
-			}
-		}
-		
-		return $tables;
-	}
-	
-	function getLine($rs)
-	{
-		$l = array();
-		$cols = $rs->columns();
-		foreach ($cols as $i => &$c) {
-			$s = $rs->f($c);
-			$s = preg_replace($this->line_reg,$this->line_rep,$s);
-			$s = '"'.$s.'"';
-			$l[$i] = $s;
-		}
-		return implode(',',$l)."\n";
-	}
-}
-?>
Index: lugins/importExport/inc/flat/class.dc.import.php
===================================================================
--- plugins/importExport/inc/flat/class.dc.import.php	(revision 298)
+++ 	(revision )
@@ -1,857 +1,0 @@
-<?php
-# -- BEGIN LICENSE BLOCK ---------------------------------------
-#
-# This file is part of Dotclear 2.
-#
-# Copyright (c) 2003-2011 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_RC_PATH')) { return; }
-
-class dcImport extends backupFile
-{
-	private $core;
-	private $con;
-	private $prefix;
-	
-	private $dc_version;
-	private $dc_major;
-	private $mode;
-	
-	private $blog_url;
-	private $blog_name;
-	private $blog_desc;
-	
-	private $users = array();
-	
-	public $old_ids = array(
-		'category' => array(),
-		'post' => array(),
-		'media' => array()
-	);
-	
-	public $stack = array(
-		'categories'=>null,
-		'cat_id'=>1,
-		'cat_lft'=>array(),
-		'post_id'=>1,
-		'media_id'=>1,
-		'comment_id'=>1,
-		'link_id'=>1
-	);
-	
-	public $has_categories = false;
-	
-	public function __construct($core,$file)
-	{
-		parent::__construct($file);
-		
-		$first_line = fgets($this->fp);
-		if (strpos($first_line,'///DOTCLEAR|') !== 0) {
-			throw new Exception(__('File is not a DotClear backup.'));
-		}
-		
-		@set_time_limit(300);
-		
-		$l = explode('|',$first_line);
-		
-		if (isset($l[1])) {
-			$this->dc_version = $l[1];
-		}
-		
-		$this->mode = isset($l[2]) ? strtolower(trim($l[2])) : 'single';
-		if ($this->mode != 'full' && $this->mode != 'single') {
-			$this->mode = 'single';
-		}
-		
-		if (version_compare('1.2',$this->dc_version,'<=') &&
-		version_compare('1.3',$this->dc_version,'>')) {
-			$this->dc_major_version = '1.2';
-		} else {
-			$this->dc_major_version = '2.0';
-		}
-		
-		$this->core =& $core;
-		$this->con =& $core->con;
-		$this->prefix = $core->prefix;
-		
-		$this->cur_blog        = $this->con->openCursor($this->prefix.'blog');
-		$this->cur_category    = $this->con->openCursor($this->prefix.'category');
-		$this->cur_link        = $this->con->openCursor($this->prefix.'link');
-		$this->cur_setting     = $this->con->openCursor($this->prefix.'setting');
-		$this->cur_user        = $this->con->openCursor($this->prefix.'user');
-		$this->cur_pref        = $this->con->openCursor($this->prefix.'pref');
-		$this->cur_permissions = $this->con->openCursor($this->prefix.'permissions');
-		$this->cur_post        = $this->con->openCursor($this->prefix.'post');
-		$this->cur_meta        = $this->con->openCursor($this->prefix.'meta');
-		$this->cur_media       = $this->con->openCursor($this->prefix.'media');
-		$this->cur_post_media  = $this->con->openCursor($this->prefix.'post_media');
-		$this->cur_log         = $this->con->openCursor($this->prefix.'log');
-		$this->cur_ping        = $this->con->openCursor($this->prefix.'ping');
-		$this->cur_comment     = $this->con->openCursor($this->prefix.'comment');
-		$this->cur_spamrule    = $this->con->openCursor($this->prefix.'spamrule');
-		$this->cur_version     = $this->con->openCursor($this->prefix.'version');
-		
-		# --BEHAVIOR-- importInit
-		$this->core->callBehavior('importInit',$this,$this->core);
-	}
-	
-	public function importSingle()
-	{
-		if ($this->mode != 'single') {
-			throw new Exception(__('File is not a single blog export.'));
-		}
-		
-		if (!$this->core->auth->check('admin',$this->core->blog->id)) {
-			throw new Exception(__('Permission denied.'));
-		}
-		
-		$this->blog_id = $this->core->blog->id;
-		
-		$this->stack['categories'] = $this->con->select(
-			'SELECT cat_id, cat_title, cat_url '.
-			'FROM '.$this->prefix.'category '.
-			"WHERE blog_id = '".$this->con->escape($this->blog_id)."' "
-		);
-		
-		$rs = $this->con->select('SELECT MAX(cat_id) FROM '.$this->prefix.'category');
-		$this->stack['cat_id'] = ((integer) $rs->f(0))+1;
-		
-		$rs = $this->con->select('SELECT MAX(link_id) FROM '.$this->prefix.'link');
-		$this->stack['link_id'] = ((integer) $rs->f(0))+1;
-		
-		$rs = $this->con->select('SELECT MAX(post_id) FROM '.$this->prefix.'post');
-		$this->stack['post_id'] = ((integer) $rs->f(0))+1;
-		
-		$rs = $this->con->select('SELECT MAX(media_id) FROM '.$this->prefix.'media');
-		$this->stack['media_id'] = ((integer) $rs->f(0))+1;
-		
-		$rs = $this->con->select('SELECT MAX(comment_id) FROM '.$this->prefix.'comment');
-		$this->stack['comment_id'] = ((integer) $rs->f(0))+1;
-		
-		$rs = $this->con->select(
-			'SELECT MAX(cat_rgt) AS cat_rgt FROM '.$this->prefix.'category '.
-			"WHERE blog_id = '".$this->con->escape($this->core->blog->id)."'"
-		);
-		
-		if ((integer) $rs->cat_rgt > 0) {
-			$this->has_categories = true;
-			$this->stack['cat_lft'][$this->core->blog->id] = (integer) $rs->cat_rgt + 1;
-		}
-		
-		$this->con->begin();
-		
-		try
-		{
-			$last_line_name = '';
-			$constrained = array('post', 'meta', 'post_media', 'ping', 'comment');
-			
-			while (($line = $this->getLine()) !== false)
-			{
-				# import DC 1.2.x, we fix lines before insert
-				if ($this->dc_major_version == '1.2') {
-					$this->prepareDC12line($line);
-				}
-				
-				if ($last_line_name != $line->__name) {
-					if (in_array($last_line_name,$constrained)) {
-						# UNDEFER
-						if ($this->con->driver() == 'mysql') $this->con->execute('SET foreign_key_checks = 1');
-						if ($this->con->driver() == 'pgsql') $this->con->execute('SET CONSTRAINTS ALL DEFERRED');
-					}
-					
-					if (in_array($line->__name,$constrained)) {
-						# DEFER
-						if ($this->con->driver() == 'mysql') $this->con->execute('SET foreign_key_checks = 0');
-						if ($this->con->driver() == 'pgsql') $this->con->execute('SET CONSTRAINTS ALL IMMEDIATE');
-					}
-					
-					$last_line_name = $line->__name;
-				}
-				
-				switch ($line->__name)
-				{
-					case 'category':
-						$this->insertCategorySingle($line);
-						break;
-					case 'link':
-						$this->insertLinkSingle($line);
-						break;
-					case 'post':
-						$this->insertPostSingle($line);
-						break;
-					case 'meta':
-						$this->insertMetaSingle($line);
-						break;
-					case 'media':
-						$this->insertMediaSingle($line);
-						break;
-					case 'post_media':
-						$this->insertPostMediaSingle($line);
-						break;
-					case 'ping':
-						$this->insertPingSingle($line);
-						break;
-					case 'comment':
-						$this->insertCommentSingle($line);
-						break;
-				}
-				
-				# --BEHAVIOR-- importSingle
-				$this->core->callBehavior('importSingle',$line,$this,$this->core);
-			}
-			
-			if ($this->con->driver() == 'mysql') $this->con->execute('SET foreign_key_checks = 1');
-			if ($this->con->driver() == 'pgsql') $this->con->execute('SET CONSTRAINTS ALL DEFERRED');
-		}
-		catch (Exception $e)
-		{
-			$this->con->rollback();
-			throw $e;
-		}
-		
-		$this->con->commit();
-	}
-	
-	public function importFull()
-	{
-		if ($this->mode != 'full') {
-			throw new Exception(__('File is not a full export.'));
-		}
-		
-		if (!$this->core->auth->isSuperAdmin()) {
-			throw new Exception(__('Permission denied.'));
-		}
-		
-		$this->con->begin();
-		$this->con->execute('DELETE FROM '.$this->prefix.'blog');
-		$this->con->execute('DELETE FROM '.$this->prefix.'media');
-		$this->con->execute('DELETE FROM '.$this->prefix.'spamrule');
-		$this->con->execute('DELETE FROM '.$this->prefix.'setting');
-		
-		try
-		{
-			while (($line = $this->getLine()) !== false)
-			{
-				switch ($line->__name)
-				{
-					case 'blog':
-						$this->insertBlog($line);
-						break;
-					case 'category':
-						$this->insertCategory($line);
-						break;
-					case 'link':
-						$this->insertLink($line);
-						break;
-					case 'setting':
-						$this->insertSetting($line);
-						break;
-					case 'user':
-						$this->insertUser($line);
-						break;
-					case 'pref':
-						$this->insertPref($line);
-						break;
-					case 'permissions':
-						$this->insertPermissions($line);
-						break;
-					case 'post':
-						$this->insertPost($line);
-						break;
-					case 'meta':
-						$this->insertMeta($line);
-						break;
-					case 'media':
-						$this->insertMedia($line);
-						break;
-					case 'post_media':
-						$this->insertPostMedia($line);
-						break;
-					case 'log';
-						$this->insertLog($line);
-						break;
-					case 'ping':
-						$this->insertPing($line);
-						break;
-					case 'comment':
-						$this->insertComment($line);
-						break;
-					case 'spamrule':
-						$this->insertSpamRule($line);
-						break;
-				}
-				# --BEHAVIOR-- importFull
-				$this->core->callBehavior('importFull',$line,$this,$this->core);
-			}
-		}
-		catch (Exception $e)
-		{
-			$this->con->rollback();
-			throw $e;
-		}
-		
-		$this->con->commit();
-	}
-	
-	private function insertBlog($blog)
-	{
-		$this->cur_blog->clean();
-		
-		$this->cur_blog->blog_id     = (string) $blog->blog_id;
-		$this->cur_blog->blog_uid    = (string) $blog->blog_uid;
-		$this->cur_blog->blog_creadt = (string) $blog->blog_creadt;
-		$this->cur_blog->blog_upddt  = (string) $blog->blog_upddt;
-		$this->cur_blog->blog_url    = (string) $blog->blog_url;
-		$this->cur_blog->blog_name   = (string) $blog->blog_name;
-		$this->cur_blog->blog_desc   = (string) $blog->blog_desc;
-		
-		$this->cur_blog->blog_status = $blog->exists('blog_status') ? (integer) $blog->blog_status : 1;
-		
-		$this->cur_blog->insert();
-	}
-	
-	private function insertCategory($category)
-	{
-		$this->cur_category->clean();
-		
-		$this->cur_category->cat_id       = (string) $category->cat_id;
-		$this->cur_category->blog_id      = (string) $category->blog_id;
-		$this->cur_category->cat_title    = (string) $category->cat_title;
-		$this->cur_category->cat_url      = (string) $category->cat_url;
-		$this->cur_category->cat_desc     = (string) $category->cat_desc;
-		
-		if (!$this->has_categories && $category->exists('cat_lft') && $category->exists('cat_rgt')) {
-			$this->cur_category->cat_lft = (integer) $category->cat_lft;
-			$this->cur_category->cat_rgt = (integer) $category->cat_rgt;
-		} else {
-			if (!isset($this->stack['cat_lft'][$category->blog_id])) {
-				$this->stack['cat_lft'][$category->blog_id] = 2;
-			}
-			$this->cur_category->cat_lft = $this->stack['cat_lft'][$category->blog_id]++;
-			$this->cur_category->cat_rgt = $this->stack['cat_lft'][$category->blog_id]++;
-		}
-		
-		$this->cur_category->insert();
-	}
-	
-	private function insertLink($link)
-	{
-		$this->cur_link->clean();
-		
-		$this->cur_link->link_id       = (integer) $link->link_id;
-		$this->cur_link->blog_id       = (string) $link->blog_id;
-		$this->cur_link->link_href     = (string) $link->link_href;
-		$this->cur_link->link_title    = (string) $link->link_title;
-		$this->cur_link->link_desc     = (string) $link->link_desc;
-		$this->cur_link->link_lang     = (string) $link->link_lang;
-		$this->cur_link->link_xfn      = (string) $link->link_xfn;
-		$this->cur_link->link_position = (integer) $link->link_position;
-		
-		$this->cur_link->insert();
-	}
-	
-	private function insertSetting($setting)
-	{
-		$this->cur_setting->clean();
-		
-		$this->cur_setting->setting_id    = (string) $setting->setting_id;
-		$this->cur_setting->blog_id       = !$setting->blog_id ? null : (string) $setting->blog_id;
-		$this->cur_setting->setting_ns    = (string) $setting->setting_ns;
-		$this->cur_setting->setting_value = (string) $setting->setting_value;
-		$this->cur_setting->setting_type  = (string) $setting->setting_type;
-		$this->cur_setting->setting_label = (string) $setting->setting_label;
-		
-		$this->cur_setting->insert();
-	}
-	
-	private function insertPref($pref)
-	{
-		if ($this->prefExists($pref->pref_ws,$pref->pref_id,$pref->user_id)) {
-			return;
-		}
-		
-		$this->cur_pref->clean();
-		
-		$this->cur_pref->pref_id    = (string) $pref->pref_id;
-		$this->cur_pref->user_id    = !$pref->user_id ? null : (string) $pref->user_id;
-		$this->cur_pref->pref_ws    = (string) $pref->pref_ws;
-		$this->cur_pref->pref_value = (string) $pref->pref_value;
-		$this->cur_pref->pref_type  = (string) $pref->pref_type;
-		$this->cur_pref->pref_label = (string) $pref->pref_label;
-		
-		$this->cur_pref->insert();
-	}
-	
-	private function insertUser($user)
-	{
-		if ($this->userExists($user->user_id)) {
-			return;
-		}
-		
-		$this->cur_user->clean();
-		
-		$this->cur_user->user_id           = (string) $user->user_id;
-		$this->cur_user->user_super        = (integer) $user->user_super;
-		$this->cur_user->user_pwd          = (string) $user->user_pwd;
-		$this->cur_user->user_recover_key  = (string) $user->user_recover_key;
-		$this->cur_user->user_name         = (string) $user->user_name;
-		$this->cur_user->user_firstname    = (string) $user->user_firstname;
-		$this->cur_user->user_displayname  = (string) $user->user_displayname;
-		$this->cur_user->user_email        = (string) $user->user_email;
-		$this->cur_user->user_url          = (string) $user->user_url;
-		$this->cur_user->user_default_blog = !$user->user_default_blog ? null : (string) $user->user_default_blog;
-		$this->cur_user->user_lang         = (string) $user->user_lang;
-		$this->cur_user->user_tz           = (string) $user->user_tz;
-		$this->cur_user->user_post_status  = (integer) $user->user_post_status;
-		$this->cur_user->user_creadt       = (string) $user->user_creadt;
-		$this->cur_user->user_upddt        = (string) $user->user_upddt;
-		
-		$this->cur_user->user_desc = $user->exists('user_desc') ? (string) $user->user_desc : null;
-		$this->cur_user->user_options = $user->exists('user_options') ? (string) $user->user_options : null;
-		$this->cur_user->user_status = $user->exists('user_status') ? (integer) $user->user_status : 1;
-		
-		$this->cur_user->insert();
-		
-		$this->stack['users'][$user->user_id] = true;
-	}
-	
-	private function insertPermissions($permissions)
-	{
-		$this->cur_permissions->clean();
-		
-		$this->cur_permissions->user_id     = (string) $permissions->user_id;
-		$this->cur_permissions->blog_id     = (string) $permissions->blog_id;
-		$this->cur_permissions->permissions = (string) $permissions->permissions;
-		
-		$this->cur_permissions->insert();
-	}
-	
-	private function insertPost($post)
-	{
-		$this->cur_post->clean();
-		
-		$cat_id = (integer) $post->cat_id;
-		if (!$cat_id) {
-			$cat_id = null;
-		}
-		
-		$post_password = $post->post_password ? (string) $post->post_password : null;
-		
-		$this->cur_post->post_id            = (integer) $post->post_id;
-		$this->cur_post->blog_id            = (string) $post->blog_id;
-		$this->cur_post->user_id            = (string) $this->getUserId($post->user_id);
-		$this->cur_post->cat_id             = $cat_id;
-		$this->cur_post->post_dt            = (string) $post->post_dt;
-		$this->cur_post->post_creadt        = (string) $post->post_creadt;
-		$this->cur_post->post_upddt         = (string) $post->post_upddt;
-		$this->cur_post->post_password      = $post_password;
-		$this->cur_post->post_type          = (string) $post->post_type;
-		$this->cur_post->post_format        = (string) $post->post_format;
-		$this->cur_post->post_url           = (string) $post->post_url;
-		$this->cur_post->post_lang          = (string) $post->post_lang;
-		$this->cur_post->post_title         = (string) $post->post_title;
-		$this->cur_post->post_excerpt       = (string) $post->post_excerpt;
-		$this->cur_post->post_excerpt_xhtml = (string) $post->post_excerpt_xhtml;
-		$this->cur_post->post_content       = (string) $post->post_content;
-		$this->cur_post->post_content_xhtml = (string) $post->post_content_xhtml;
-		$this->cur_post->post_notes         = (string) $post->post_notes;
-		$this->cur_post->post_words         = (string) $post->post_words;
-		$this->cur_post->post_meta          = (string) $post->post_meta;
-		$this->cur_post->post_status        = (integer) $post->post_status;
-		$this->cur_post->post_selected      = (integer) $post->post_selected;
-		$this->cur_post->post_open_comment  = (integer) $post->post_open_comment;
-		$this->cur_post->post_open_tb       = (integer) $post->post_open_tb;
-		$this->cur_post->nb_comment         = (integer) $post->nb_comment;
-		$this->cur_post->nb_trackback       = (integer) $post->nb_trackback;
-		
-		$this->cur_post->post_tz = $post->exists('post_tz') ? (string) $post->post_tz : 'UTC';
-		
-		$this->cur_post->insert();
-	}
-	
-	private function insertMeta($meta)
-	{
-		$this->cur_meta->clean();
-		
-		$this->cur_meta->meta_id   = (string) $meta->meta_id;
-		$this->cur_meta->meta_type = (string) $meta->meta_type;
-		$this->cur_meta->post_id   = (integer) $meta->post_id;
-		
-		$this->cur_meta->insert();
-	}
-	
-	private function insertMedia($media)
-	{
-		$this->cur_media->clean();
-		
-		$this->cur_media->media_id      = (integer) $media->media_id;
-		$this->cur_media->user_id       = (string) $media->user_id;
-		$this->cur_media->media_path    = (string) $media->media_path;
-		$this->cur_media->media_title   = (string) $media->media_title;
-		$this->cur_media->media_file    = (string) $media->media_file;
-		$this->cur_media->media_meta    = (string) $media->media_meta;
-		$this->cur_media->media_dt      = (string) $media->media_dt;
-		$this->cur_media->media_creadt  = (string) $media->media_creadt;
-		$this->cur_media->media_upddt   = (string) $media->media_upddt;
-		$this->cur_media->media_private = (integer) $media->media_private;
-		
-		$this->cur_media->media_dir = $media->exists('media_dir') ? (string) $media->media_dir : dirname($media->media_file);
-		
-		if (!$this->mediaExists()) {
-			$this->cur_media->insert();
-		}
-	}
-	
-	private function insertPostMedia($post_media)
-	{
-		$this->cur_post_media->clean();
-		
-		$this->cur_post_media->media_id = (integer) $post_media->media_id;
-		$this->cur_post_media->post_id  = (integer) $post_media->post_id;
-		
-		$this->cur_post_media->insert();
-	}
-	
-	private function insertLog($log)
-	{
-		$this->cur_log->clean();
-		
-		$this->cur_log->log_id    = (integer) $log->log_id;
-		$this->cur_log->user_id   = (string) $log->user_id;
-		$this->cur_log->log_table = (string) $log->log_table;
-		$this->cur_log->log_dt    = (string) $log->log_dt;
-		$this->cur_log->log_ip    = (string) $log->log_ip;
-		$this->cur_log->log_msg   = (string) $log->log_msg;
-		
-		$this->cur_log->insert();
-	}
-	
-	private function insertPing($ping)
-	{
-		$this->cur_ping->clean();
-		
-		$this->cur_ping->post_id  = (integer) $ping->post_id;
-		$this->cur_ping->ping_url = (string) $ping->ping_url;
-		$this->cur_ping->ping_dt  = (string) $ping->ping_dt;
-		
-		$this->cur_ping->insert();
-	}
-	
-	private function insertComment($comment)
-	{
-		$this->cur_comment->clean();
-		
-		$this->cur_comment->comment_id          = (integer) $comment->comment_id;
-		$this->cur_comment->post_id             = (integer) $comment->post_id;
-		$this->cur_comment->comment_dt          = (string) $comment->comment_dt;
-		$this->cur_comment->comment_upddt       = (string) $comment->comment_upddt;
-		$this->cur_comment->comment_author      = (string) $comment->comment_author;
-		$this->cur_comment->comment_email       = (string) $comment->comment_email;
-		$this->cur_comment->comment_site        = (string) $comment->comment_site;
-		$this->cur_comment->comment_content     = (string) $comment->comment_content;
-		$this->cur_comment->comment_words       = (string) $comment->comment_words;
-		$this->cur_comment->comment_ip          = (string) $comment->comment_ip;
-		$this->cur_comment->comment_status      = (integer) $comment->comment_status;
-		$this->cur_comment->comment_spam_status = (integer) $comment->comment_spam_status;
-		$this->cur_comment->comment_trackback   = (integer) $comment->comment_trackback;
-		
-		$this->cur_comment->comment_tz = $comment->exists('comment_tz') ? (string) $comment->comment_tz : 'UTC';
-		$this->cur_comment->comment_spam_filter = $comment->exists('comment_spam_filter') ? (integer) $comment->comment_spam_filter : null;
-		
-		$this->cur_comment->insert();
-	}
-	
-	private function insertSpamRule($spamrule)
-	{
-		$this->cur_spamrule->clean();
-		
-		$this->cur_spamrule->rule_id      = (integer) $spamrule->rule_id;
-		$this->cur_spamrule->blog_id      = !$spamrule->blog_id ? null : (string) $spamrule->blog_id;
-		$this->cur_spamrule->rule_type    = (string) $spamrule->rule_type;
-		$this->cur_spamrule->rule_content = (string) $spamrule->rule_content;
-		
-		$this->cur_spamrule->insert();
-	}
-	
-	private function insertCategorySingle($category)
-	{
-		$this->cur_category->clean();
-		
-		$m = $this->searchCategory($this->stack['categories'],$category->cat_url);
-		
-		$old_id = $category->cat_id;
-		if ($m !== false)
-		{
-			$cat_id = $m;
-		}
-		else
-		{
-			$cat_id = $this->stack['cat_id'];
-			$category->cat_id = $cat_id;
-			$category->blog_id = $this->blog_id;
-			
-			$this->insertCategory($category);
-			$this->stack['cat_id']++;
-		}
-		
-		$this->old_ids['category'][(integer) $old_id] = $cat_id;
-	}
-	
-	private function insertLinkSingle($link)
-	{
-		$link->blog_id = $this->blog_id;
-		$link->link_id = $this->stack['link_id'];
-		
-		$this->insertLink($link);
-		$this->stack['link_id']++;
-	}
-	
-	private function insertPostSingle($post)
-	{
-		if (!$post->cat_id || isset($this->old_ids['category'][(integer) $post->cat_id])) {
-			$post_id = $this->stack['post_id'];
-			$this->old_ids['post'][(integer) $post->post_id] = $post_id;
-			
-			$cat_id = $post->cat_id ? $this->old_ids['category'][(integer) $post->cat_id] : null;
-			
-			$post->post_id = $post_id;
-			$post->cat_id = $cat_id;
-			$post->blog_id = $this->blog_id;
-			
-			$post->post_url = $this->core->blog->getPostURL(
-				$post->post_url,$post->post_dt,$post->post_title,$post->post_id
-			);
-			
-			$this->insertPost($post);
-			$this->stack['post_id']++;
-		} else {
-			throw new Exception(__('The backup file does not appear to be well formed.'));
-		}
-	}
-	
-	private function insertMetaSingle($meta)
-	{
-		if (isset($this->old_ids['post'][(integer) $meta->post_id])) {
-			$meta->post_id = $this->old_ids['post'][(integer) $meta->post_id];
-			$this->insertMeta($meta);
-		} else {
-			throw new Exception(__('The backup file does not appear to be well formed.'));
-		}
-	}
-	
-	private function insertMediaSingle($media)
-	{
-		$media_id = $this->stack['media_id'];
-		$old_id = $media->media_id;
-		
-		$media->media_id = $media_id;
-		$media->media_path = $this->core->blog->settings->system->public_path;
-		$media->user_id = $this->getUserId($media->user_id);
-		
-		$this->insertMedia($media);
-		$this->stack['media_id']++;
-		$this->old_ids['media'][(integer) $old_id] = $media_id;
-	}
-	
-	private function insertPostMediaSingle($post_media)
-	{
-		if (isset($this->old_ids['media'][(integer) $post_media->media_id]) &&
-			isset($this->old_ids['post'][(integer) $post_media->post_id])) {
-			$post_media->media_id = $this->old_ids['media'][(integer) $post_media->media_id];
-			$post_media->post_id = $this->old_ids['post'][(integer) $post_media->post_id];
-			
-			$this->insertPostMedia($post_media);
-		} else {
-			throw new Exception(__('The backup file does not appear to be well formed.'));
-		}
-	}
-	
-	private function insertPingSingle($ping)
-	{
-		if (isset($this->old_ids['post'][(integer) $ping->post_id])) {
-			$ping->post_id = $this->old_ids['post'][(integer) $ping->post_id];
-			
-			$this->insertPing($ping);
-		} else {
-			throw new Exception(__('The backup file does not appear to be well formed.'));
-		}
-	}
-	
-	private function insertCommentSingle($comment)
-	{
-		if (isset($this->old_ids['post'][(integer) $comment->post_id])) {
-			$comment_id = $this->stack['comment_id'];
-			
-			$comment->comment_id = $comment_id;
-			$comment->post_id = $this->old_ids['post'][(integer) $comment->post_id];
-			
-			$this->insertComment($comment);
-			$this->stack['comment_id']++;
-		} else {
-			throw new Exception(__('The backup file does not appear to be well formed.'));
-		}
-	}
-	
-	public function searchCategory($rs,$url)
-	{
-		while ($rs->fetch())
-		{
-			if ($rs->cat_url == $url) {
-				return $rs->cat_id;
-			}
-		}
-		
-		return false;
-	}
-	
-	public function getUserId($user_id)
-	{
-		if (!$this->userExists($user_id))
-		{
-			if ($this->core->auth->isSuperAdmin())
-			{
-				# Sanitizes user_id and create a lambda user
-				$user_id = preg_replace('/[^A-Za-z0-9]$/','',$user_id);
-				$user_id .= strlen($user_id) < 2 ? '-a' : '';
-				
-				# We change user_id, we need to check again
-				if (!$this->userExists($user_id))
-				{
-					$this->cur_user->clean();
-					$this->cur_user->user_id = (string) $user_id;
-					$this->cur_user->user_pwd = md5(uniqid());
-					
-					$this->core->addUser($this->cur_user);
-					
-					$this->stack['users'][$user_id] = true;
-				}
-			}
-			else
-			{
-				# Returns current user id
-				$user_id = $this->core->auth->userID();
-			}
-		}
-		
-		return $user_id;
-	}
-	
-	private function userExists($user_id)
-	{
-		if (isset($this->stack['users'][$user_id])) {
-			return $this->stack['users'][$user_id];
-		}
-		
-		$strReq = 'SELECT user_id '.
-				'FROM '.$this->prefix.'user '.
-				"WHERE user_id = '".$this->con->escape($user_id)."' ";
-		
-		$rs = $this->con->select($strReq);
-		
-		$this->stack['users'][$user_id] = !$rs->isEmpty();
-		return $this->stack['users'][$user_id];
-	}
-	
-	private function prefExists($pref_ws,$pref_id,$user_id)
-	{
-		$strReq = 'SELECT pref_id,pref_ws,user_id '.
-				'FROM '.$this->prefix.'pref '.
-				"WHERE pref_id = '".$this->con->escape($pref_id)."' ".
-				"AND pref_ws = '".$this->con->escape($pref_ws)."' ";
-		if (!$user_id) {
-			$strReq .= "AND user_id IS NULL ";
-		} else {
-			$strReq .= "AND user_id = '".$this->con->escape($user_id)."' ";
-		}
-		
-		$rs = $this->con->select($strReq);
-		
-		return !$rs->isEmpty();
-	}
-	
-	private function mediaExists()
-	{
-		$strReq = 'SELECT media_id '.
-				'FROM '.$this->prefix.'media '.
-				"WHERE media_path = '".$this->cur_media->media_path."' ".
-				"AND media_file = '".$this->cur_media->media_file."' ";
-		
-		$rs = $this->con->select($strReq);
-		
-		return !$rs->isEmpty();
-	}
-	
-	private function prepareDC12line(&$line)
-	{
-		$settings = array('dc_theme','dc_nb_post_per_page','dc_allow_comments',
-		'dc_allow_trackbacks','dc_comment_pub','dc_comments_ttl',
-		'dc_wiki_comments','dc_use_smilies','dc_date_format','dc_time_format',
-		'dc_url_scan');
-		
-		switch ($line->__name)
-		{
-			case 'categorie':
-				$line->substitute('cat_libelle','cat_title');
-				$line->substitute('cat_libelle_url','cat_url');
-				$line->__name = 'category';
-				$line->blog_id = 'default';
-				break;
-			case 'link':
-				$line->substitute('href','link_href');
-				$line->substitute('label','link_title');
-				$line->substitute('title','link_desc');
-				$line->substitute('lang','link_lang');
-				$line->substitute('rel','link_xfn');
-				$line->substitute('position','link_position');
-				$line->blog_id = 'default';
-				break;
-			case 'post':
-				$line->substitute('post_titre','post_title');
-				$line->post_title = html::decodeEntities($line->post_title);
-				$line->post_url = date('Y/m/d/',strtotime($line->post_dt)).$line->post_id.'-'.$line->post_titre_url;
-				$line->post_url = substr($line->post_url,0,255);
-				$line->post_format = $line->post_content_wiki == '' ? 'xhtml' : 'wiki';
-				$line->post_content_xhtml = $line->post_content;
-				$line->post_excerpt_xhtml = $line->post_chapo;
-				
-				if ($line->post_format == 'wiki') {
-					$line->post_content = $line->post_content_wiki;
-					$line->post_excerpt = $line->post_chapo_wiki;
-				} else {
-					$line->post_content = $line->post_content;
-					$line->post_excerpt = $line->post_chapo;
-				}
-				
-				$line->post_status = (integer) $line->post_pub;
-				$line->post_type = 'post';
-				$line->blog_id = 'default';
-				
-				$line->drop('post_titre_url','post_content_wiki','post_chapo','post_chapo_wiki','post_pub');
-				
-				break;
-			case 'post_meta':
-				$line->drop('meta_id');
-				$line->substitute('meta_key','meta_type');
-				$line->substitute('meta_value','meta_id');
-				$line->__name = 'meta';
-				$line->blog_id = 'default';
-				break;
-			case 'comment':
-				$line->substitute('comment_auteur','comment_author');
-				if ($line->comment_site != '' && !preg_match('!^http://.*$!', $line->comment_site,$m)) {
-					$line->comment_site = 'http://'.$line->comment_site;
-				}
-				$line->comment_status = (integer) $line->comment_pub;
-				$line->drop('comment_pub');
-				break;
-		}
-		
-		# --BEHAVIOR-- importPrepareDC12
-		$this->core->callBehavior('importPrepareDC12',$line,$this,$this->core);
-	}
-}
-?>
Index: plugins/importExport/inc/flat/class.flat.backup.php
===================================================================
--- plugins/importExport/inc/flat/class.flat.backup.php	(revision 841)
+++ plugins/importExport/inc/flat/class.flat.backup.php	(revision 841)
@@ -0,0 +1,148 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of importExport, a plugin for DotClear2.
+#
+# Copyright (c) 2003-2012 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_RC_PATH')) { return; }
+
+class flatBackup
+{
+	protected $fp;
+	private $line_cols = array();
+	private $line_name;
+	private $line_num;
+	
+	private $replacement = array(
+		'/(?<!\\\\)(?>(\\\\\\\\)*+)(\\\\n)/u' => "\$1\n",
+		'/(?<!\\\\)(?>(\\\\\\\\)*+)(\\\\r)/u' => "\$1\r",
+		'/(?<!\\\\)(?>(\\\\\\\\)*+)(\\\\")/u' => '$1"',
+		'/(\\\\\\\\)/' => '\\'
+	);
+	
+	public function __construct($file)
+	{
+		if (file_exists($file) && is_readable($file)) {
+			$this->fp = fopen($file,'rb');
+			$this->line_num = 1;
+		} else {
+			throw new Exception(__('No file to read.'));
+		}
+	}
+	
+	public function __destruct()
+	{
+		if ($this->fp) {
+			fclose($this->fp);
+		}
+	}
+	
+	public function getLine()
+	{
+		if (($line = $this->nextLine()) === false) {
+			return false;
+		}
+		
+		if (substr($line,0,1) == '[')
+		{
+			$this->line_name = substr($line,1,strpos($line,' ')-1);
+			
+			$line = substr($line,strpos($line,' ')+1,-1);
+			$this->line_cols = explode(',',$line);
+			
+			return $this->getLine();
+		}
+		elseif (substr($line,0,1) == '"')
+		{
+			$line = preg_replace('/^"|"$/','',$line);
+			$line = preg_split('/(^"|","|"$)/m',$line);
+			
+			if (count($this->line_cols) != count($line)) {
+				throw new Exception(sprintf('Invalid row count at line %s',$this->line_num));
+			}
+			
+			$res = array();
+			
+			for ($i=0; $i<count($line); $i++) {
+				$res[$this->line_cols[$i]] =
+				preg_replace(array_keys($this->replacement),array_values($this->replacement),$line[$i]);
+			}
+			
+			return new flatBackupItem($this->line_name,$res,$this->line_num);
+		}
+		else
+		{
+			return $this->getLine();
+		}
+	}
+	
+	private function nextLine()
+	{
+		if (feof($this->fp)) {
+			return false;
+		}
+		$this->line_num++;
+		
+		$line = fgets($this->fp);
+		$line = trim($line);
+		
+		return empty($line) ? $this->nextLine() : $line;
+	}
+}
+
+class flatBackupItem
+{
+	public $__name;
+	public $__line;
+	private $__data = array();
+	
+	public function __construct($name,$data,$line)
+	{
+		$this->__name = $name;
+		$this->__data = $data;
+		$this->__line = $line;
+	}
+	
+	public function f($name)
+	{
+		return iconv('UTF-8','UTF-8//IGNORE',$this->__data[$name]);
+	}
+	
+	public function __get($name)
+	{
+		return $this->f($name);
+	}
+	
+	public function __set($n,$v)
+	{
+		$this->__data[$n] = $v;
+	}
+	
+	public function exists($n)
+	{
+		return isset($this->__data[$n]);
+	}
+	
+	public function drop()
+	{
+		foreach (func_get_args() as $n) {
+			if (isset($this->__data[$n])) {
+				unset($this->__data[$n]);
+			}
+		}
+	}
+	
+	public function substitute($old,$new)
+	{
+		if (isset($this->__data[$old])) {
+			$this->__data[$new] = $this->__data[$old];
+			unset($this->__data[$old]);
+		}
+	}
+}
+?>
Index: plugins/importExport/inc/flat/class.flat.export.php
===================================================================
--- plugins/importExport/inc/flat/class.flat.export.php	(revision 840)
+++ plugins/importExport/inc/flat/class.flat.export.php	(revision 840)
@@ -0,0 +1,106 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of importExport, a plugin for DotClear2.
+#
+# Copyright (c) 2003-2012 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_RC_PATH')) { return; }
+
+class flatExport
+{
+	private $con;
+	private $prefix;
+	
+	private $line_reg = array('/\\\\/u',  '/\n/u','/\r/u','/"/u');
+	private $line_rep = array('\\\\\\\\', '\n'   ,'\r'   ,'\"');
+	
+	public $fp;
+	
+	function __construct($con,$out='php://output',$prefix=null)
+	{
+		$this->con =& $con;
+		$this->prefix = $prefix;
+		
+		if (($this->fp = fopen($out,'w')) === false) {
+			return false;
+		}
+		@set_time_limit(300);
+	}
+	
+	function __destruct()
+	{
+		if (is_resource($this->fp)) {
+			fclose($this->fp);
+		}
+	}
+	
+	function export($name,$sql)
+	{
+		$rs = $this->con->select($sql);
+		
+		if (!$rs->isEmpty())
+		{
+			fwrite($this->fp,"\n[".$name.' '.implode(',',$rs->columns())."]\n");
+			while ($rs->fetch()) {
+				fwrite($this->fp,$this->getLine($rs));
+			}
+			fflush($this->fp);
+		}
+	}
+	
+	function exportAll()
+	{
+		$tables = $this->getTables();
+		
+		foreach ($tables as $table)
+		{
+			$this->exportTable($table);
+		}
+	}
+	
+	function exportTable($table)
+	{
+		$req = 'SELECT * FROM '.$this->con->escapeSystem($this->prefix.$table);
+		
+		$this->export($table,$req);
+	}
+	
+	function getTables()
+	{
+		$schema = dbSchema::init($this->con);
+		$db_tables = $schema->getTables();
+		
+		$tables = array();
+		foreach ($db_tables as $t)
+		{
+			if ($this->prefix) {
+				if (strpos($t,$this->prefix) === 0) {
+					$tables[] = $t;
+				}
+			} else {
+				$tables[] = $t;
+			}
+		}
+		
+		return $tables;
+	}
+	
+	function getLine($rs)
+	{
+		$l = array();
+		$cols = $rs->columns();
+		foreach ($cols as $i => &$c) {
+			$s = $rs->f($c);
+			$s = preg_replace($this->line_reg,$this->line_rep,$s);
+			$s = '"'.$s.'"';
+			$l[$i] = $s;
+		}
+		return implode(',',$l)."\n";
+	}
+}
+?>
Index: plugins/importExport/inc/flat/class.flat.import.php
===================================================================
--- plugins/importExport/inc/flat/class.flat.import.php	(revision 841)
+++ plugins/importExport/inc/flat/class.flat.import.php	(revision 841)
@@ -0,0 +1,869 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of importExport, a plugin for DotClear2.
+#
+# Copyright (c) 2003-2012 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_RC_PATH')) { return; }
+
+class flatImport extends flatBackup
+{
+	private $core;
+	private $con;
+	private $prefix;
+	
+	private $dc_version;
+	private $dc_major;
+	private $mode;
+	
+	private $blog_url;
+	private $blog_name;
+	private $blog_desc;
+	
+	private $users = array();
+	
+	public $old_ids = array(
+		'category' => array(),
+		'post' => array(),
+		'media' => array()
+	);
+	
+	public $stack = array(
+		'categories'=>null,
+		'cat_id'=>1,
+		'cat_lft'=>array(),
+		'post_id'=>1,
+		'media_id'=>1,
+		'comment_id'=>1,
+		'link_id'=>1
+	);
+	
+	public $has_categories = false;
+	
+	public function __construct($core,$file)
+	{
+		parent::__construct($file);
+		
+		$first_line = fgets($this->fp);
+		if (strpos($first_line,'///DOTCLEAR|') !== 0) {
+			throw new Exception(__('File is not a DotClear backup.'));
+		}
+		
+		@set_time_limit(300);
+		
+		$l = explode('|',$first_line);
+		
+		if (isset($l[1])) {
+			$this->dc_version = $l[1];
+		}
+		
+		$this->mode = isset($l[2]) ? strtolower(trim($l[2])) : 'single';
+		if ($this->mode != 'full' && $this->mode != 'single') {
+			$this->mode = 'single';
+		}
+		
+		if (version_compare('1.2',$this->dc_version,'<=') &&
+		version_compare('1.3',$this->dc_version,'>')) {
+			$this->dc_major_version = '1.2';
+		} else {
+			$this->dc_major_version = '2.0';
+		}
+		
+		$this->core =& $core;
+		$this->con =& $core->con;
+		$this->prefix = $core->prefix;
+		
+		$this->cur_blog        = $this->con->openCursor($this->prefix.'blog');
+		$this->cur_category    = $this->con->openCursor($this->prefix.'category');
+		$this->cur_link        = $this->con->openCursor($this->prefix.'link');
+		$this->cur_setting     = $this->con->openCursor($this->prefix.'setting');
+		$this->cur_user        = $this->con->openCursor($this->prefix.'user');
+		$this->cur_pref        = $this->con->openCursor($this->prefix.'pref');
+		$this->cur_permissions = $this->con->openCursor($this->prefix.'permissions');
+		$this->cur_post        = $this->con->openCursor($this->prefix.'post');
+		$this->cur_meta        = $this->con->openCursor($this->prefix.'meta');
+		$this->cur_media       = $this->con->openCursor($this->prefix.'media');
+		$this->cur_post_media  = $this->con->openCursor($this->prefix.'post_media');
+		$this->cur_log         = $this->con->openCursor($this->prefix.'log');
+		$this->cur_ping        = $this->con->openCursor($this->prefix.'ping');
+		$this->cur_comment     = $this->con->openCursor($this->prefix.'comment');
+		$this->cur_spamrule    = $this->con->openCursor($this->prefix.'spamrule');
+		$this->cur_version     = $this->con->openCursor($this->prefix.'version');
+		
+		# --BEHAVIOR-- importInit
+		$this->core->callBehavior('importInit',$this,$this->core);
+	}
+	
+	public function importSingle()
+	{
+		if ($this->mode != 'single') {
+			throw new Exception(__('File is not a single blog export.'));
+		}
+		
+		if (!$this->core->auth->check('admin',$this->core->blog->id)) {
+			throw new Exception(__('Permission denied.'));
+		}
+		
+		$this->blog_id = $this->core->blog->id;
+		
+		$this->stack['categories'] = $this->con->select(
+			'SELECT cat_id, cat_title, cat_url '.
+			'FROM '.$this->prefix.'category '.
+			"WHERE blog_id = '".$this->con->escape($this->blog_id)."' "
+		);
+		
+		$rs = $this->con->select('SELECT MAX(cat_id) FROM '.$this->prefix.'category');
+		$this->stack['cat_id'] = ((integer) $rs->f(0))+1;
+		
+		$rs = $this->con->select('SELECT MAX(link_id) FROM '.$this->prefix.'link');
+		$this->stack['link_id'] = ((integer) $rs->f(0))+1;
+		
+		$rs = $this->con->select('SELECT MAX(post_id) FROM '.$this->prefix.'post');
+		$this->stack['post_id'] = ((integer) $rs->f(0))+1;
+		
+		$rs = $this->con->select('SELECT MAX(media_id) FROM '.$this->prefix.'media');
+		$this->stack['media_id'] = ((integer) $rs->f(0))+1;
+		
+		$rs = $this->con->select('SELECT MAX(comment_id) FROM '.$this->prefix.'comment');
+		$this->stack['comment_id'] = ((integer) $rs->f(0))+1;
+		
+		$rs = $this->con->select(
+			'SELECT MAX(cat_rgt) AS cat_rgt FROM '.$this->prefix.'category '.
+			"WHERE blog_id = '".$this->con->escape($this->core->blog->id)."'"
+		);
+		
+		if ((integer) $rs->cat_rgt > 0) {
+			$this->has_categories = true;
+			$this->stack['cat_lft'][$this->core->blog->id] = (integer) $rs->cat_rgt + 1;
+		}
+		
+		$this->con->begin();
+		
+		try
+		{
+			$last_line_name = '';
+			$constrained = array('post', 'meta', 'post_media', 'ping', 'comment');
+			
+			while (($line = $this->getLine()) !== false)
+			{
+				# import DC 1.2.x, we fix lines before insert
+				if ($this->dc_major_version == '1.2') {
+					$this->prepareDC12line($line);
+				}
+				
+				if ($last_line_name != $line->__name) {
+					if (in_array($last_line_name,$constrained)) {
+						# UNDEFER
+						if ($this->con->driver() == 'mysql') $this->con->execute('SET foreign_key_checks = 1');
+						if ($this->con->driver() == 'pgsql') $this->con->execute('SET CONSTRAINTS ALL DEFERRED');
+					}
+					
+					if (in_array($line->__name,$constrained)) {
+						# DEFER
+						if ($this->con->driver() == 'mysql') $this->con->execute('SET foreign_key_checks = 0');
+						if ($this->con->driver() == 'pgsql') $this->con->execute('SET CONSTRAINTS ALL IMMEDIATE');
+					}
+					
+					$last_line_name = $line->__name;
+				}
+				
+				switch ($line->__name)
+				{
+					case 'category':
+						$this->insertCategorySingle($line);
+						break;
+					case 'link':
+						$this->insertLinkSingle($line);
+						break;
+					case 'post':
+						$this->insertPostSingle($line);
+						break;
+					case 'meta':
+						$this->insertMetaSingle($line);
+						break;
+					case 'media':
+						$this->insertMediaSingle($line);
+						break;
+					case 'post_media':
+						$this->insertPostMediaSingle($line);
+						break;
+					case 'ping':
+						$this->insertPingSingle($line);
+						break;
+					case 'comment':
+						$this->insertCommentSingle($line);
+						break;
+				}
+				
+				# --BEHAVIOR-- importSingle
+				$this->core->callBehavior('importSingle',$line,$this,$this->core);
+			}
+			
+			if ($this->con->driver() == 'mysql') $this->con->execute('SET foreign_key_checks = 1');
+			if ($this->con->driver() == 'pgsql') $this->con->execute('SET CONSTRAINTS ALL DEFERRED');
+		}
+		catch (Exception $e)
+		{
+			$this->con->rollback();
+			throw $e;
+		}
+		
+		$this->con->commit();
+	}
+	
+	public function importFull()
+	{
+		if ($this->mode != 'full') {
+			throw new Exception(__('File is not a full export.'));
+		}
+		
+		if (!$this->core->auth->isSuperAdmin()) {
+			throw new Exception(__('Permission denied.'));
+		}
+		
+		$this->con->begin();
+		$this->con->execute('DELETE FROM '.$this->prefix.'blog');
+		$this->con->execute('DELETE FROM '.$this->prefix.'media');
+		$this->con->execute('DELETE FROM '.$this->prefix.'spamrule');
+		$this->con->execute('DELETE FROM '.$this->prefix.'setting');
+		
+		try
+		{
+			while (($line = $this->getLine()) !== false)
+			{
+				switch ($line->__name)
+				{
+					case 'blog':
+						$this->insertBlog($line);
+						break;
+					case 'category':
+						$this->insertCategory($line);
+						break;
+					case 'link':
+						$this->insertLink($line);
+						break;
+					case 'setting':
+						$this->insertSetting($line);
+						break;
+					case 'user':
+						$this->insertUser($line);
+						break;
+					case 'pref':
+						$this->insertPref($line);
+						break;
+					case 'permissions':
+						$this->insertPermissions($line);
+						break;
+					case 'post':
+						$this->insertPost($line);
+						break;
+					case 'meta':
+						$this->insertMeta($line);
+						break;
+					case 'media':
+						$this->insertMedia($line);
+						break;
+					case 'post_media':
+						$this->insertPostMedia($line);
+						break;
+					case 'log';
+						$this->insertLog($line);
+						break;
+					case 'ping':
+						$this->insertPing($line);
+						break;
+					case 'comment':
+						$this->insertComment($line);
+						break;
+					case 'spamrule':
+						$this->insertSpamRule($line);
+						break;
+				}
+				# --BEHAVIOR-- importFull
+				$this->core->callBehavior('importFull',$line,$this,$this->core);
+			}
+		}
+		catch (Exception $e)
+		{
+			$this->con->rollback();
+			throw $e;
+		}
+		
+		$this->con->commit();
+	}
+	
+	private function insertBlog($blog)
+	{
+		$this->cur_blog->clean();
+		
+		$this->cur_blog->blog_id     = (string) $blog->blog_id;
+		$this->cur_blog->blog_uid    = (string) $blog->blog_uid;
+		$this->cur_blog->blog_creadt = (string) $blog->blog_creadt;
+		$this->cur_blog->blog_upddt  = (string) $blog->blog_upddt;
+		$this->cur_blog->blog_url    = (string) $blog->blog_url;
+		$this->cur_blog->blog_name   = (string) $blog->blog_name;
+		$this->cur_blog->blog_desc   = (string) $blog->blog_desc;
+		
+		$this->cur_blog->blog_status = $blog->exists('blog_status') ? (integer) $blog->blog_status : 1;
+		
+		$this->cur_blog->insert();
+	}
+	
+	private function insertCategory($category)
+	{
+		$this->cur_category->clean();
+		
+		$this->cur_category->cat_id       = (string) $category->cat_id;
+		$this->cur_category->blog_id      = (string) $category->blog_id;
+		$this->cur_category->cat_title    = (string) $category->cat_title;
+		$this->cur_category->cat_url      = (string) $category->cat_url;
+		$this->cur_category->cat_desc     = (string) $category->cat_desc;
+		
+		if (!$this->has_categories && $category->exists('cat_lft') && $category->exists('cat_rgt')) {
+			$this->cur_category->cat_lft = (integer) $category->cat_lft;
+			$this->cur_category->cat_rgt = (integer) $category->cat_rgt;
+		} else {
+			if (!isset($this->stack['cat_lft'][$category->blog_id])) {
+				$this->stack['cat_lft'][$category->blog_id] = 2;
+			}
+			$this->cur_category->cat_lft = $this->stack['cat_lft'][$category->blog_id]++;
+			$this->cur_category->cat_rgt = $this->stack['cat_lft'][$category->blog_id]++;
+		}
+		
+		$this->cur_category->insert();
+	}
+	
+	private function insertLink($link)
+	{
+		$this->cur_link->clean();
+		
+		$this->cur_link->link_id       = (integer) $link->link_id;
+		$this->cur_link->blog_id       = (string) $link->blog_id;
+		$this->cur_link->link_href     = (string) $link->link_href;
+		$this->cur_link->link_title    = (string) $link->link_title;
+		$this->cur_link->link_desc     = (string) $link->link_desc;
+		$this->cur_link->link_lang     = (string) $link->link_lang;
+		$this->cur_link->link_xfn      = (string) $link->link_xfn;
+		$this->cur_link->link_position = (integer) $link->link_position;
+		
+		$this->cur_link->insert();
+	}
+	
+	private function insertSetting($setting)
+	{
+		$this->cur_setting->clean();
+		
+		$this->cur_setting->setting_id    = (string) $setting->setting_id;
+		$this->cur_setting->blog_id       = !$setting->blog_id ? null : (string) $setting->blog_id;
+		$this->cur_setting->setting_ns    = (string) $setting->setting_ns;
+		$this->cur_setting->setting_value = (string) $setting->setting_value;
+		$this->cur_setting->setting_type  = (string) $setting->setting_type;
+		$this->cur_setting->setting_label = (string) $setting->setting_label;
+		
+		$this->cur_setting->insert();
+	}
+	
+	private function insertPref($pref)
+	{
+		if ($this->prefExists($pref->pref_ws,$pref->pref_id,$pref->user_id)) {
+			return;
+		}
+		
+		$this->cur_pref->clean();
+		
+		$this->cur_pref->pref_id    = (string) $pref->pref_id;
+		$this->cur_pref->user_id    = !$pref->user_id ? null : (string) $pref->user_id;
+		$this->cur_pref->pref_ws    = (string) $pref->pref_ws;
+		$this->cur_pref->pref_value = (string) $pref->pref_value;
+		$this->cur_pref->pref_type  = (string) $pref->pref_type;
+		$this->cur_pref->pref_label = (string) $pref->pref_label;
+		
+		$this->cur_pref->insert();
+	}
+	
+	private function insertUser($user)
+	{
+		if ($this->userExists($user->user_id)) {
+			return;
+		}
+		
+		$this->cur_user->clean();
+		
+		$this->cur_user->user_id           = (string) $user->user_id;
+		$this->cur_user->user_super        = (integer) $user->user_super;
+		$this->cur_user->user_pwd          = (string) $user->user_pwd;
+		$this->cur_user->user_recover_key  = (string) $user->user_recover_key;
+		$this->cur_user->user_name         = (string) $user->user_name;
+		$this->cur_user->user_firstname    = (string) $user->user_firstname;
+		$this->cur_user->user_displayname  = (string) $user->user_displayname;
+		$this->cur_user->user_email        = (string) $user->user_email;
+		$this->cur_user->user_url          = (string) $user->user_url;
+		$this->cur_user->user_default_blog = !$user->user_default_blog ? null : (string) $user->user_default_blog;
+		$this->cur_user->user_lang         = (string) $user->user_lang;
+		$this->cur_user->user_tz           = (string) $user->user_tz;
+		$this->cur_user->user_post_status  = (integer) $user->user_post_status;
+		$this->cur_user->user_creadt       = (string) $user->user_creadt;
+		$this->cur_user->user_upddt        = (string) $user->user_upddt;
+		
+		$this->cur_user->user_desc = $user->exists('user_desc') ? (string) $user->user_desc : null;
+		$this->cur_user->user_options = $user->exists('user_options') ? (string) $user->user_options : null;
+		$this->cur_user->user_status = $user->exists('user_status') ? (integer) $user->user_status : 1;
+		
+		$this->cur_user->insert();
+		
+		$this->stack['users'][$user->user_id] = true;
+	}
+	
+	private function insertPermissions($permissions)
+	{
+		$this->cur_permissions->clean();
+		
+		$this->cur_permissions->user_id     = (string) $permissions->user_id;
+		$this->cur_permissions->blog_id     = (string) $permissions->blog_id;
+		$this->cur_permissions->permissions = (string) $permissions->permissions;
+		
+		$this->cur_permissions->insert();
+	}
+	
+	private function insertPost($post)
+	{
+		$this->cur_post->clean();
+		
+		$cat_id = (integer) $post->cat_id;
+		if (!$cat_id) {
+			$cat_id = null;
+		}
+		
+		$post_password = $post->post_password ? (string) $post->post_password : null;
+		
+		$this->cur_post->post_id            = (integer) $post->post_id;
+		$this->cur_post->blog_id            = (string) $post->blog_id;
+		$this->cur_post->user_id            = (string) $this->getUserId($post->user_id);
+		$this->cur_post->cat_id             = $cat_id;
+		$this->cur_post->post_dt            = (string) $post->post_dt;
+		$this->cur_post->post_creadt        = (string) $post->post_creadt;
+		$this->cur_post->post_upddt         = (string) $post->post_upddt;
+		$this->cur_post->post_password      = $post_password;
+		$this->cur_post->post_type          = (string) $post->post_type;
+		$this->cur_post->post_format        = (string) $post->post_format;
+		$this->cur_post->post_url           = (string) $post->post_url;
+		$this->cur_post->post_lang          = (string) $post->post_lang;
+		$this->cur_post->post_title         = (string) $post->post_title;
+		$this->cur_post->post_excerpt       = (string) $post->post_excerpt;
+		$this->cur_post->post_excerpt_xhtml = (string) $post->post_excerpt_xhtml;
+		$this->cur_post->post_content       = (string) $post->post_content;
+		$this->cur_post->post_content_xhtml = (string) $post->post_content_xhtml;
+		$this->cur_post->post_notes         = (string) $post->post_notes;
+		$this->cur_post->post_words         = (string) $post->post_words;
+		$this->cur_post->post_meta          = (string) $post->post_meta;
+		$this->cur_post->post_status        = (integer) $post->post_status;
+		$this->cur_post->post_selected      = (integer) $post->post_selected;
+		$this->cur_post->post_open_comment  = (integer) $post->post_open_comment;
+		$this->cur_post->post_open_tb       = (integer) $post->post_open_tb;
+		$this->cur_post->nb_comment         = (integer) $post->nb_comment;
+		$this->cur_post->nb_trackback       = (integer) $post->nb_trackback;
+		
+		$this->cur_post->post_tz = $post->exists('post_tz') ? (string) $post->post_tz : 'UTC';
+		
+		$this->cur_post->insert();
+	}
+	
+	private function insertMeta($meta)
+	{
+		$this->cur_meta->clean();
+		
+		$this->cur_meta->meta_id   = (string) $meta->meta_id;
+		$this->cur_meta->meta_type = (string) $meta->meta_type;
+		$this->cur_meta->post_id   = (integer) $meta->post_id;
+		
+		$this->cur_meta->insert();
+	}
+	
+	private function insertMedia($media)
+	{
+		$this->cur_media->clean();
+		
+		$this->cur_media->media_id      = (integer) $media->media_id;
+		$this->cur_media->user_id       = (string) $media->user_id;
+		$this->cur_media->media_path    = (string) $media->media_path;
+		$this->cur_media->media_title   = (string) $media->media_title;
+		$this->cur_media->media_file    = (string) $media->media_file;
+		$this->cur_media->media_meta    = (string) $media->media_meta;
+		$this->cur_media->media_dt      = (string) $media->media_dt;
+		$this->cur_media->media_creadt  = (string) $media->media_creadt;
+		$this->cur_media->media_upddt   = (string) $media->media_upddt;
+		$this->cur_media->media_private = (integer) $media->media_private;
+		
+		$this->cur_media->media_dir = $media->exists('media_dir') ? (string) $media->media_dir : dirname($media->media_file);
+		
+		if (!$this->mediaExists()) {
+			$this->cur_media->insert();
+		}
+	}
+	
+	private function insertPostMedia($post_media)
+	{
+		$this->cur_post_media->clean();
+		
+		$this->cur_post_media->media_id = (integer) $post_media->media_id;
+		$this->cur_post_media->post_id  = (integer) $post_media->post_id;
+		
+		$this->cur_post_media->insert();
+	}
+	
+	private function insertLog($log)
+	{
+		$this->cur_log->clean();
+		
+		$this->cur_log->log_id    = (integer) $log->log_id;
+		$this->cur_log->user_id   = (string) $log->user_id;
+		$this->cur_log->log_table = (string) $log->log_table;
+		$this->cur_log->log_dt    = (string) $log->log_dt;
+		$this->cur_log->log_ip    = (string) $log->log_ip;
+		$this->cur_log->log_msg   = (string) $log->log_msg;
+		
+		$this->cur_log->insert();
+	}
+	
+	private function insertPing($ping)
+	{
+		$this->cur_ping->clean();
+		
+		$this->cur_ping->post_id  = (integer) $ping->post_id;
+		$this->cur_ping->ping_url = (string) $ping->ping_url;
+		$this->cur_ping->ping_dt  = (string) $ping->ping_dt;
+		
+		$this->cur_ping->insert();
+	}
+	
+	private function insertComment($comment)
+	{
+		$this->cur_comment->clean();
+		
+		$this->cur_comment->comment_id          = (integer) $comment->comment_id;
+		$this->cur_comment->post_id             = (integer) $comment->post_id;
+		$this->cur_comment->comment_dt          = (string) $comment->comment_dt;
+		$this->cur_comment->comment_upddt       = (string) $comment->comment_upddt;
+		$this->cur_comment->comment_author      = (string) $comment->comment_author;
+		$this->cur_comment->comment_email       = (string) $comment->comment_email;
+		$this->cur_comment->comment_site        = (string) $comment->comment_site;
+		$this->cur_comment->comment_content     = (string) $comment->comment_content;
+		$this->cur_comment->comment_words       = (string) $comment->comment_words;
+		$this->cur_comment->comment_ip          = (string) $comment->comment_ip;
+		$this->cur_comment->comment_status      = (integer) $comment->comment_status;
+		$this->cur_comment->comment_spam_status = (integer) $comment->comment_spam_status;
+		$this->cur_comment->comment_trackback   = (integer) $comment->comment_trackback;
+		
+		$this->cur_comment->comment_tz = $comment->exists('comment_tz') ? (string) $comment->comment_tz : 'UTC';
+		$this->cur_comment->comment_spam_filter = $comment->exists('comment_spam_filter') ? (integer) $comment->comment_spam_filter : null;
+		
+		$this->cur_comment->insert();
+	}
+	
+	private function insertSpamRule($spamrule)
+	{
+		$this->cur_spamrule->clean();
+		
+		$this->cur_spamrule->rule_id      = (integer) $spamrule->rule_id;
+		$this->cur_spamrule->blog_id      = !$spamrule->blog_id ? null : (string) $spamrule->blog_id;
+		$this->cur_spamrule->rule_type    = (string) $spamrule->rule_type;
+		$this->cur_spamrule->rule_content = (string) $spamrule->rule_content;
+		
+		$this->cur_spamrule->insert();
+	}
+	
+	private function insertCategorySingle($category)
+	{
+		$this->cur_category->clean();
+		
+		$m = $this->searchCategory($this->stack['categories'],$category->cat_url);
+		
+		$old_id = $category->cat_id;
+		if ($m !== false)
+		{
+			$cat_id = $m;
+		}
+		else
+		{
+			$cat_id = $this->stack['cat_id'];
+			$category->cat_id = $cat_id;
+			$category->blog_id = $this->blog_id;
+			
+			$this->insertCategory($category);
+			$this->stack['cat_id']++;
+		}
+		
+		$this->old_ids['category'][(integer) $old_id] = $cat_id;
+	}
+	
+	private function insertLinkSingle($link)
+	{
+		$link->blog_id = $this->blog_id;
+		$link->link_id = $this->stack['link_id'];
+		
+		$this->insertLink($link);
+		$this->stack['link_id']++;
+	}
+	
+	private function insertPostSingle($post)
+	{
+		if (!$post->cat_id || isset($this->old_ids['category'][(integer) $post->cat_id])) {
+			$post_id = $this->stack['post_id'];
+			$this->old_ids['post'][(integer) $post->post_id] = $post_id;
+			
+			$cat_id = $post->cat_id ? $this->old_ids['category'][(integer) $post->cat_id] : null;
+			
+			$post->post_id = $post_id;
+			$post->cat_id = $cat_id;
+			$post->blog_id = $this->blog_id;
+			
+			$post->post_url = $this->core->blog->getPostURL(
+				$post->post_url,$post->post_dt,$post->post_title,$post->post_id
+			);
+			
+			$this->insertPost($post);
+			$this->stack['post_id']++;
+		} else {
+			self::throwIdError($post->__name,$post->__line,'category');
+		}
+	}
+	
+	private function insertMetaSingle($meta)
+	{
+		if (isset($this->old_ids['post'][(integer) $meta->post_id])) {
+			$meta->post_id = $this->old_ids['post'][(integer) $meta->post_id];
+			$this->insertMeta($meta);
+		} else {
+			self::throwIdError($meta->__name,$meta->__line,'post');
+		}
+	}
+	
+	private function insertMediaSingle($media)
+	{
+		$media_id = $this->stack['media_id'];
+		$old_id = $media->media_id;
+		
+		$media->media_id = $media_id;
+		$media->media_path = $this->core->blog->settings->system->public_path;
+		$media->user_id = $this->getUserId($media->user_id);
+		
+		$this->insertMedia($media);
+		$this->stack['media_id']++;
+		$this->old_ids['media'][(integer) $old_id] = $media_id;
+	}
+	
+	private function insertPostMediaSingle($post_media)
+	{
+		if (isset($this->old_ids['media'][(integer) $post_media->media_id]) &&
+			isset($this->old_ids['post'][(integer) $post_media->post_id])) {
+			$post_media->media_id = $this->old_ids['media'][(integer) $post_media->media_id];
+			$post_media->post_id = $this->old_ids['post'][(integer) $post_media->post_id];
+			
+			$this->insertPostMedia($post_media);
+		} elseif (!isset($this->old_ids['media'][(integer) $post_media->media_id])) {
+			self::throwIdError($post_media->__name,$post_media->__line,'media');
+		}else {
+			self::throwIdError($post_media->__name,$post_media->__line,'post');
+		}
+	}
+	
+	private function insertPingSingle($ping)
+	{
+		if (isset($this->old_ids['post'][(integer) $ping->post_id])) {
+			$ping->post_id = $this->old_ids['post'][(integer) $ping->post_id];
+			
+			$this->insertPing($ping);
+		} else {
+			self::throwIdError($ping->__name,$ping->__line,'post');
+		}
+	}
+	
+	private function insertCommentSingle($comment)
+	{
+		if (isset($this->old_ids['post'][(integer) $comment->post_id])) {
+			$comment_id = $this->stack['comment_id'];
+			
+			$comment->comment_id = $comment_id;
+			$comment->post_id = $this->old_ids['post'][(integer) $comment->post_id];
+			
+			$this->insertComment($comment);
+			$this->stack['comment_id']++;
+		} else {
+			self::throwIdError($comment->__name,$comment->__line,'post');
+		}
+	}
+	
+	private static function throwIdError($name,$line,$related)
+	{
+		throw new Exception(sprintf(
+			__('ID of "%3$s" does not match on record "%1$s" at line %2$s of backup file.'),
+			html::escapeHTML($name),
+			html::escapeHTML($line),
+			html::escapeHTML($related)
+		));
+	}
+	
+	public function searchCategory($rs,$url)
+	{
+		while ($rs->fetch())
+		{
+			if ($rs->cat_url == $url) {
+				return $rs->cat_id;
+			}
+		}
+		
+		return false;
+	}
+	
+	public function getUserId($user_id)
+	{
+		if (!$this->userExists($user_id))
+		{
+			if ($this->core->auth->isSuperAdmin())
+			{
+				# Sanitizes user_id and create a lambda user
+				$user_id = preg_replace('/[^A-Za-z0-9]$/','',$user_id);
+				$user_id .= strlen($user_id) < 2 ? '-a' : '';
+				
+				# We change user_id, we need to check again
+				if (!$this->userExists($user_id))
+				{
+					$this->cur_user->clean();
+					$this->cur_user->user_id = (string) $user_id;
+					$this->cur_user->user_pwd = md5(uniqid());
+					
+					$this->core->addUser($this->cur_user);
+					
+					$this->stack['users'][$user_id] = true;
+				}
+			}
+			else
+			{
+				# Returns current user id
+				$user_id = $this->core->auth->userID();
+			}
+		}
+		
+		return $user_id;
+	}
+	
+	private function userExists($user_id)
+	{
+		if (isset($this->stack['users'][$user_id])) {
+			return $this->stack['users'][$user_id];
+		}
+		
+		$strReq = 'SELECT user_id '.
+				'FROM '.$this->prefix.'user '.
+				"WHERE user_id = '".$this->con->escape($user_id)."' ";
+		
+		$rs = $this->con->select($strReq);
+		
+		$this->stack['users'][$user_id] = !$rs->isEmpty();
+		return $this->stack['users'][$user_id];
+	}
+	
+	private function prefExists($pref_ws,$pref_id,$user_id)
+	{
+		$strReq = 'SELECT pref_id,pref_ws,user_id '.
+				'FROM '.$this->prefix.'pref '.
+				"WHERE pref_id = '".$this->con->escape($pref_id)."' ".
+				"AND pref_ws = '".$this->con->escape($pref_ws)."' ";
+		if (!$user_id) {
+			$strReq .= "AND user_id IS NULL ";
+		} else {
+			$strReq .= "AND user_id = '".$this->con->escape($user_id)."' ";
+		}
+		
+		$rs = $this->con->select($strReq);
+		
+		return !$rs->isEmpty();
+	}
+	
+	private function mediaExists()
+	{
+		$strReq = 'SELECT media_id '.
+				'FROM '.$this->prefix.'media '.
+				"WHERE media_path = '".$this->cur_media->media_path."' ".
+				"AND media_file = '".$this->cur_media->media_file."' ";
+		
+		$rs = $this->con->select($strReq);
+		
+		return !$rs->isEmpty();
+	}
+	
+	private function prepareDC12line(&$line)
+	{
+		$settings = array('dc_theme','dc_nb_post_per_page','dc_allow_comments',
+		'dc_allow_trackbacks','dc_comment_pub','dc_comments_ttl',
+		'dc_wiki_comments','dc_use_smilies','dc_date_format','dc_time_format',
+		'dc_url_scan');
+		
+		switch ($line->__name)
+		{
+			case 'categorie':
+				$line->substitute('cat_libelle','cat_title');
+				$line->substitute('cat_libelle_url','cat_url');
+				$line->__name = 'category';
+				$line->blog_id = 'default';
+				break;
+			case 'link':
+				$line->substitute('href','link_href');
+				$line->substitute('label','link_title');
+				$line->substitute('title','link_desc');
+				$line->substitute('lang','link_lang');
+				$line->substitute('rel','link_xfn');
+				$line->substitute('position','link_position');
+				$line->blog_id = 'default';
+				break;
+			case 'post':
+				$line->substitute('post_titre','post_title');
+				$line->post_title = html::decodeEntities($line->post_title);
+				$line->post_url = date('Y/m/d/',strtotime($line->post_dt)).$line->post_id.'-'.$line->post_titre_url;
+				$line->post_url = substr($line->post_url,0,255);
+				$line->post_format = $line->post_content_wiki == '' ? 'xhtml' : 'wiki';
+				$line->post_content_xhtml = $line->post_content;
+				$line->post_excerpt_xhtml = $line->post_chapo;
+				
+				if ($line->post_format == 'wiki') {
+					$line->post_content = $line->post_content_wiki;
+					$line->post_excerpt = $line->post_chapo_wiki;
+				} else {
+					$line->post_content = $line->post_content;
+					$line->post_excerpt = $line->post_chapo;
+				}
+				
+				$line->post_status = (integer) $line->post_pub;
+				$line->post_type = 'post';
+				$line->blog_id = 'default';
+				
+				$line->drop('post_titre_url','post_content_wiki','post_chapo','post_chapo_wiki','post_pub');
+				
+				break;
+			case 'post_meta':
+				$line->drop('meta_id');
+				$line->substitute('meta_key','meta_type');
+				$line->substitute('meta_value','meta_id');
+				$line->__name = 'meta';
+				$line->blog_id = 'default';
+				break;
+			case 'comment':
+				$line->substitute('comment_auteur','comment_author');
+				if ($line->comment_site != '' && !preg_match('!^http://.*$!', $line->comment_site,$m)) {
+					$line->comment_site = 'http://'.$line->comment_site;
+				}
+				$line->comment_status = (integer) $line->comment_pub;
+				$line->drop('comment_pub');
+				break;
+		}
+		
+		# --BEHAVIOR-- importPrepareDC12
+		$this->core->callBehavior('importPrepareDC12',$line,$this,$this->core);
+	}
+}
+?>
Index: plugins/importExport/index.php
===================================================================
--- plugins/importExport/index.php	(revision 696)
+++ plugins/importExport/index.php	(revision 840)
@@ -2,7 +2,7 @@
 # -- BEGIN LICENSE BLOCK ---------------------------------------
 #
-# This file is part of Dotclear 2.
+# This file is part of importExport, a plugin for DotClear2.
 #
-# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Copyright (c) 2003-2012 Olivier Meunier & Association Dotclear
 # Licensed under the GPL version 2.0 license.
 # See LICENSE file or
@@ -12,19 +12,21 @@
 if (!defined('DC_CONTEXT_ADMIN')) { return; }
 
-require dirname(__FILE__).'/inc/class.dc.ieModule.php';
+function listImportExportModules($core,$modules)
+{
+	$res = '';
+	foreach ($modules as $id)
+	{
+		$o = new $id($core);
+		
+		$res .= 
+		'<dt><a href="'.$o->getURL(true).'">'.html::escapeHTML($o->name).'</a></dt>'.
+		'<dd>'.html::escapeHTML($o->description).'</dd>';
+		
+		unset($o);
+	}
+	return '<dl class="modules">'.$res.'</dl>';
+}
 
-$modules = new ArrayObject();
-$modules['i'] = new ArrayObject(array(
-	'dcImportFlat' => dirname(__FILE__).'/inc/class.dc.import.flat.php',
-	'dcImportFeed' => dirname(__FILE__).'/inc/class.dc.import.feed.php'
-));
-$modules['e'] = new ArrayObject(array(
-	'dcExportFlat' => dirname(__FILE__).'/inc/class.dc.export.flat.php'
-));
-
-if ($core->auth->isSuperAdmin()) {
-	$modules['i']['dcImportDC1']  = dirname(__FILE__).'/inc/class.dc.import.dc1.php';
-	$modules['i']['dcImportWP']  = dirname(__FILE__).'/inc/class.dc.import.wp.php';
-}
+$modules = new ArrayObject(array('import' => array(),'export' => array()));
 
 # --BEHAVIOR-- importExportModules
@@ -32,112 +34,62 @@
 
 $type = null;
-if (!empty($_REQUEST['t']) && ($_REQUEST['t'] == 'e' || $_REQUEST['t'] == 'i')) {
-	$type = $_REQUEST['t'];
+if (!empty($_REQUEST['type'])  && in_array($_REQUEST['type'],array('export','import'))) {
+	$type = $_REQUEST['type'];
 }
 
-$current_module = null;
-if ($type && !empty($_REQUEST['f'])) {
-	if (isset($modules[$type][$_REQUEST['f']])) {
-		require_once $modules[$type][$_REQUEST['f']];
-		$current_module = new $_REQUEST['f']($core);
-		$current_module->init();
+$module = null;
+if ($type && !empty($_REQUEST['module'])) {
+
+	if (isset($modules[$type]) && in_array($_REQUEST['module'],$modules[$type])) {
+	
+		$module = new $_REQUEST['module']($core);
+		$module->init();
 	}
 }
 
-if ($type && $current_module !== null && !empty($_REQUEST['do']))
+if ($type && $module !== null && !empty($_REQUEST['do']))
 {
 	try {
-		$current_module->process($_REQUEST['do']);
+		$module->process($_REQUEST['do']);
 	} catch (Exception $e) {
 		$core->error->add($e->getMessage());
 	}
 }
-?>
+
+$title = __('Import/Export');
+
+echo '
 <html>
 <head>
-	<title><?php echo __('Import/Export'); ?></title>
-	<style type="text/css">
-	dl.modules dt {
-		font-weight: bold;
-		font-size: 1.1em;
-		margin: 1em 0 0 0;
-	}
-	dl.modules dd {
-		margin: 0 0 1.5em 0;
-	}
-	div.ie-progress {
-		background: #eee;
-		margin: 1em 0;
-	}
-	div.ie-progress div {
-		height: 10px;
-		width: 0;
-		font-size: 0.8em;
-		line-height: 1em;
-		height: 1em;
-		padding: 2px 0;
-		text-align: right;
-		background: green url(index.php?pf=importExport/progress.png) repeat-x top left;
-		color: white;
-		font-weight: bold;
-		-moz-border-radius: 2px;
-	}
-	</style>
-	<script type="text/javascript" src="index.php?pf=importExport/script.js"></script>
+	<title>'.$title.'</title>
+	<link rel="stylesheet" type="text/css" href="index.php?pf=importExport/style.css" />
+	'.dcPage::jsLoad('index.php?pf=importExport/js/script.js').'
 	<script type="text/javascript">
 	//<![CDATA[
-	dotclear.msg.please_wait = '<?php echo html::escapeJS(__("Please wait...")); ?>';
+	'.dcPage::jsVar('dotclear.msg.please_wait',__('Please wait...')).'
 	//]]>
 	</script>
 </head>
-<body>
+<body>';
 
-<?php
-if ($type && $current_module !== null)
-{
-	echo '<h2><a href="'.$p_url.'">'.__('Import/Export').'</a>'.
-	' &rsaquo; <span class="page-title">'.html::escapeHTML($current_module->name).'</span></h2>';
+if ($type && $module !== null) {
+	echo
+	'<h2><a href="'.$p_url.'">'.$title.'</a>'.
+	' &rsaquo; <span class="page-title">'.html::escapeHTML($module->name).'</span></h2>'.
+	'<div id="ie-gui">';
 	
-	echo '<div id="ie-gui">';
-	$current_module->gui();
+	$module->gui();
+	
 	echo '</div>';
 }
-else
-{
-	echo '<h2 class="page-title">'.__('Import/Export').'</h2>';
-	echo '<h3>'.__('Import').'</h3>';
-	
-	echo '<dl class="modules">';
-	foreach ($modules['i'] as $k => $v)
-	{
-		require_once $v;
-		$o = new $k($core);
-		
-		echo 
-		'<dt><a href="'.$o->getURL(true).'">'.html::escapeHTML($o->name).'</a></dt>'.
-		'<dd>'.html::escapeHTML($o->description).'</dd>';
-		
-		unset($o);
-	}
-	echo '</dl>';
-	
-	echo '<h3>'.__('Export').'</h3>';
-	
-	echo '<dl class="modules">';
-	foreach ($modules['e'] as $k => $v)
-	{
-		require_once $v;
-		$o = new $k($core);
-		
-		echo 
-		'<dt><a href="'.$o->getURL(true).'">'.html::escapeHTML($o->name).'</a></dt>'.
-		'<dd>'.html::escapeHTML($o->description).'</dd>';
-		
-		unset($o);
-	}
-	echo '</dl>';
+else {
+	echo
+	'<h2 class="page-title">'.$title.'</h2>'.
+	'<h3>'.__('Import').'</h3>'.listImportExportModules($core,$modules['import']).
+	'<h3>'.__('Export').'</h3>'.listImportExportModules($core,$modules['export']);
 }
+
+echo '
+</body>
+</html>';
 ?>
-
-</body>
-</html>
Index: plugins/importExport/js/script.js
===================================================================
--- plugins/importExport/js/script.js	(revision 840)
+++ plugins/importExport/js/script.js	(revision 840)
@@ -0,0 +1,3 @@
+
+$(function(){if($('*.error').length>0){return;}
+$('#ie-gui form[method=post]:has(input[type=hidden][name=autosubmit])').each(function(){$('input[type=submit]',this).remove();$(this).after('<p style="font-size:2em;text-align:center">'+dotclear.msg.please_wait+'</p>');$(this).submit();});});
Index: plugins/importExport/locales/fr/main.po
===================================================================
--- plugins/importExport/locales/fr/main.po	(revision 841)
+++ plugins/importExport/locales/fr/main.po	(revision 841)
@@ -0,0 +1,333 @@
+# Language: Français
+# Module: importExport - 3.1
+# Date: 2012-07-09 14:37:32
+# Translated with translater 1.5
+
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: importExport 3.1\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2012-07-09T14:37:32+00:00\n"
+"Last-Translator: Jean-Christian Denis\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: _admin.php:15
+#: _admin.php:28
+#: index.php:59
+msgid "Import/Export"
+msgstr "Import/Export"
+
+#: inc/class.dc.export.flat.php:19
+msgid "Flat file export"
+msgstr "Exporter un fichier texte"
+
+#: inc/class.dc.export.flat.php:20
+msgid "Exports a blog or a full Dotclear installation to flat file."
+msgstr "Exporte un blog ou toutes les données de Dotclear dans un fichier texte."
+
+#: inc/class.dc.export.flat.php:140
+msgid "Export file not found."
+msgstr "Fichier d'export non trouvé."
+
+#: inc/class.dc.export.flat.php:184
+msgid "Failed to compress export file."
+msgstr "Impossible de compresser le fichier d'export."
+
+#: inc/class.dc.export.flat.php:194
+#: inc/class.dc.import.feed.php:84
+#: inc/class.dc.import.flat.php:183
+msgid "Single blog"
+msgstr "Un seul blog"
+
+#: inc/class.dc.export.flat.php:195
+msgid "This will create an export of your current blog: %s"
+msgstr "Ceci va exporter le contenu du blog en cours : %s."
+
+#: inc/class.dc.export.flat.php:197
+#: inc/class.dc.export.flat.php:223
+msgid "File name:"
+msgstr "Nom du fichier :"
+
+#: inc/class.dc.export.flat.php:203
+#: inc/class.dc.export.flat.php:229
+msgid "Compress file"
+msgstr "Compresser le fichier"
+
+#: inc/class.dc.export.flat.php:207
+msgid "You may also want to download your media directory as a zip file"
+msgstr "Vous pouvez également télécharger votre répertoire de médias au format zip."
+
+#: inc/class.dc.export.flat.php:209
+#: inc/class.dc.export.flat.php:232
+#: index.php:89
+msgid "Export"
+msgstr "Exporter"
+
+#: inc/class.dc.export.flat.php:220
+#: inc/class.dc.import.flat.php:211
+msgid "Multiple blogs"
+msgstr "Tous les blogs"
+
+#: inc/class.dc.export.flat.php:221
+msgid "This will create an export of all the content of your database."
+msgstr "Ceci va exporter le contenu complet de votre base de données."
+
+#: inc/class.dc.ieModule.php:74
+msgid "Congratulation!"
+msgstr "Félicitations !"
+
+#: inc/class.dc.ieModule.php:75
+msgid "Your blog has been successfully imported. Welcome on Dotclear 2!"
+msgstr "Votre blog a été importé avec succès. Bienvenue sur Dotclear 2 !"
+
+#: inc/class.dc.ieModule.php:76
+msgid "Why don't you blog this now?"
+msgstr "Pourquoi ne pas le bloguer maintenant ?"
+
+#: inc/class.dc.ieModule.php:77
+msgid "or"
+msgstr "ou"
+
+#: inc/class.dc.ieModule.php:77
+msgid "visit your dashboard"
+msgstr "vous rendre sur votre tableau de bord"
+
+#: inc/class.dc.import.dc1.php:43
+msgid "Dotclear 1.2 import"
+msgstr "Importer depuis Dotclear 1.2"
+
+#: inc/class.dc.import.dc1.php:44
+msgid "Import a Dotclear 1.2 installation into your current blog."
+msgstr "Importe un blog Dotclear 1.2 dans votre blog en cours."
+
+#: inc/class.dc.import.dc1.php:145
+msgid "This will import your Dotclear 1.2 content as new content in the current blog: %s."
+msgstr "Ceci va importer votre blog Dotclear 1.2 comme un nouveau contenu dans le blog en cours : %s."
+
+#: inc/class.dc.import.dc1.php:149
+#: inc/class.dc.import.wp.php:180
+msgid "Depending on the size of your blog, it could take a few minutes."
+msgstr "Selon la taille de votre blog, ceci peut prendre quelques minutes."
+
+#: inc/class.dc.import.dc1.php:151
+#: inc/class.dc.import.wp.php:182
+msgid "General information"
+msgstr "Informations générales"
+
+#: inc/class.dc.import.dc1.php:151
+#: inc/class.dc.import.wp.php:182
+msgid "Import my blog now"
+msgstr "Importer mon blog"
+
+#: inc/class.dc.import.dc1.php:152
+msgid "We first need some information about your old Dotclear 1.2 installation."
+msgstr "Nous avons d'abord besoin de renseignements à propos de votre ancienne installation Dotclear 1.2."
+
+#: inc/class.dc.import.dc1.php:163
+#: inc/class.dc.import.wp.php:194
+msgid "Entries import options"
+msgstr "Options d'importation des billets"
+
+#: inc/class.dc.import.dc1.php:164
+#: inc/class.dc.import.wp.php:212
+msgid "Number of entries to import at once:"
+msgstr "Nombre de billets à importer à chaque étape :"
+
+#: inc/class.dc.import.dc1.php:169
+#: inc/class.dc.import.wp.php:222
+msgid "Importing users"
+msgstr "Importe les utilisateurs"
+
+#: inc/class.dc.import.dc1.php:174
+#: inc/class.dc.import.wp.php:227
+msgid "Importing categories"
+msgstr "Importe les catégories"
+
+#: inc/class.dc.import.dc1.php:179
+#: inc/class.dc.import.wp.php:232
+msgid "Importing blogroll"
+msgstr "Importe les liens"
+
+#: inc/class.dc.import.dc1.php:184
+#: inc/class.dc.import.wp.php:237
+msgid "Importing entries from %d to %d / %d"
+msgstr "Importation des billets %d à %d"
+
+#: inc/class.dc.import.dc1.php:193
+msgid "Please read carefully"
+msgstr "Merci de lire attentivement"
+
+#: inc/class.dc.import.dc1.php:214
+#: inc/class.dc.import.wp.php:258
+msgid "next step"
+msgstr "étape suivante"
+
+#: inc/class.dc.import.dc1.php:242
+msgid "Dotclear tables not found"
+msgstr "Tables Dotclear non trouvées"
+
+#: inc/class.dc.import.feed.php:22
+msgid "Feed import"
+msgstr "Importer depuis un flux"
+
+#: inc/class.dc.import.feed.php:23
+msgid "Imports a feed as new entries."
+msgstr "Importe un flux comme nouveaux billets."
+
+#: inc/class.dc.import.feed.php:41
+msgid "Cannot retrieve feed URL."
+msgstr "Impossible d'atteindre l'URL du fil."
+
+#: inc/class.dc.import.feed.php:44
+msgid "No items in feed."
+msgstr "Aucun élément dans le fil."
+
+#: inc/class.dc.import.feed.php:79
+#: inc/class.dc.import.flat.php:149
+msgid "Content successfully imported."
+msgstr "Contenu importé avec succès."
+
+#: inc/class.dc.import.feed.php:85
+msgid "This will import a feed (RSS or Atom) a as new content in the current blog: %s."
+msgstr "Ceci va importer un fil (RSS ou Atom) comme un nouveau contenu dans le blog en cours : %s."
+
+#: inc/class.dc.import.feed.php:87
+msgid "Feed URL:"
+msgstr "URL du fil :"
+
+#: inc/class.dc.import.feed.php:93
+#: inc/class.dc.import.flat.php:202
+#: inc/class.dc.import.flat.php:233
+#: index.php:88
+msgid "Import"
+msgstr "Importer"
+
+#: inc/class.dc.import.flat.php:21
+msgid "Flat file import"
+msgstr "Importer depuis un fichier texte"
+
+#: inc/class.dc.import.flat.php:22
+msgid "Imports a blog or a full Dotclear installation from flat file."
+msgstr "Importe un blog ou toutes les données depuis un fichier texte."
+
+#: inc/class.dc.import.flat.php:144
+msgid "Single blog successfully imported."
+msgstr "Blog importé avec succès."
+
+#: inc/class.dc.import.flat.php:160
+msgid "Are you sure you want to import a full backup file?"
+msgstr "Êtes-vous certain de vouloir charger un fichier de sauvegarde complet ?"
+
+#: inc/class.dc.import.flat.php:184
+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."
+
+#: inc/class.dc.import.flat.php:186
+#: inc/class.dc.import.flat.php:214
+msgid "Upload a backup file"
+msgstr "Charger un fichier de sauvegarde"
+
+#: inc/class.dc.import.flat.php:192
+#: inc/class.dc.import.flat.php:220
+msgid "or pick up a local file in your public directory"
+msgstr "ou choisissez un fichier local dans votre répertoire public"
+
+#: inc/class.dc.import.flat.php:212
+msgid "This will reset all the content of your database, except users."
+msgstr "Ceci va remettre à zéro tout le contenu, sauf les utilisateurs."
+
+#: inc/class.dc.import.flat.php:281
+msgid "File is empty or not a compressed file."
+msgstr "Le Fichier est vide ou n'est pas un fichier compressé."
+
+#: inc/class.dc.import.flat.php:304
+msgid "Another file with same name exists."
+msgstr "Un autre fichier du même nom existe déjà."
+
+#: inc/class.dc.import.flat.php:311
+msgid "Failed to extract backup file."
+msgstr "Impossible d'extraire le fichier de sauvegarde."
+
+#: inc/class.dc.import.flat.php:322
+msgid "No backup in compressed file."
+msgstr "Pas de sauvegarde dans le fichier compressé."
+
+#: inc/class.dc.import.wp.php:64
+msgid "WordPress import"
+msgstr "Importer depuis WordPress"
+
+#: inc/class.dc.import.wp.php:65
+msgid "Import a WordPress installation into your current blog."
+msgstr "Importe un blog WordPress dans votre blog en cours."
+
+#: inc/class.dc.import.wp.php:176
+msgid "This will import your WordPress content as new content in the current blog: %s."
+msgstr "Ceci va importer votre blog WordPress comme un nouveau contenu dans le blog en cours : %s."
+
+#: inc/class.dc.import.wp.php:183
+msgid "We first need some information about your old WordPress installation."
+msgstr "Nous avons d'abord besoin de renseignements à propos de votre ancienne installation WordPress."
+
+#: inc/class.dc.import.wp.php:205
+msgid "Ignore the first category:"
+msgstr "Ignorer la première catégorie :"
+
+#: inc/class.dc.import.wp.php:207
+msgid "Import lowest numbered category on posts:"
+msgstr "Importer la catégorie la plus ancienne sur les articles :"
+
+#: inc/class.dc.import.wp.php:209
+msgid "Import all categories as tags:"
+msgstr "Importer les catégories comme des mots-clés :"
+
+#: inc/class.dc.import.wp.php:210
+msgid "Prefix such tags with:"
+msgstr "Préfixer ces mots-clés avec :"
+
+#: inc/class.dc.import.wp.php:215
+msgid "Content filters"
+msgstr "Filtres de contenu"
+
+#: inc/class.dc.import.wp.php:216
+msgid "You may want to process your post and/or comment content with the following filters."
+msgstr "Vous pouvez utiliser les filtres suivants sur vos articles et/ou commentaires."
+
+#: inc/class.dc.import.wp.php:217
+msgid "Post content formatter:"
+msgstr "Formatage des articles :"
+
+#: inc/class.dc.import.wp.php:218
+msgid "Comment content formatter:"
+msgstr "Formatage des commentaires :"
+
+#: inc/class.dc.import.wp.php:286
+msgid "WordPress tables not found"
+msgstr "Tables WordPress non trouvées"
+
+#: inc/flat/class.flat.backup.php:34
+msgid "No file to read."
+msgstr "Aucun fichier lisible."
+
+#: inc/flat/class.flat.import.php:54
+msgid "File is not a DotClear backup."
+msgstr "Le fichier n'est pas une sauvegarde DotClear."
+
+#: inc/flat/class.flat.import.php:105
+msgid "File is not a single blog export."
+msgstr "Le fichier n'est pas un fichier d'export simple."
+
+#: inc/flat/class.flat.import.php:222
+msgid "File is not a full export."
+msgstr "Le fichier n'est pas un fichier d'export complet."
+
+#: inc/flat/class.flat.import.php:704
+msgid "ID of \"%3$s\" does not match on record \"%1$s\" at line %2$s of backup file."
+msgstr "L'ID de \"%3$s\" ne correspond pas dans l'enregistrement de \"%1$s\" à la ligne %2$s du fichier de sauvegarde."
+
+#: index.php:69
+msgid "Please wait..."
+msgstr "Veuillez patienter..."
+
Index: lugins/importExport/script.js
===================================================================
--- plugins/importExport/script.js	(revision 0)
+++ 	(revision )
@@ -1,11 +1,0 @@
-$(function() {
-	if ($('*.error').length > 0) {
-		return;
-	}
-	
-	$('#ie-gui form[method=post]:has(input[type=hidden][name=autosubmit])').each(function() {
-		$('input[type=submit]',this).remove();
-		$(this).after('<p style="font-size:2em;text-align:center">' + dotclear.msg.please_wait + '</p>');
-		$(this).submit();
-	});
-});
Index: plugins/importExport/style.css
===================================================================
--- plugins/importExport/style.css	(revision 840)
+++ plugins/importExport/style.css	(revision 840)
@@ -0,0 +1,25 @@
+dl.modules dt {
+	font-weight: bold;
+	font-size: 1.1em;
+	margin: 1em 0 0 0;
+}
+dl.modules dd {
+	margin: 0 0 1.5em 0;
+}
+div.ie-progress {
+	background: #eee;
+	margin: 1em 0;
+}
+div.ie-progress div {
+	height: 10px;
+	width: 0;
+	font-size: 0.8em;
+	line-height: 1em;
+	height: 1em;
+	padding: 2px 0;
+	text-align: right;
+	background: green url(index.php?pf=importExport/progress.png) repeat-x top left;
+	color: white;
+	font-weight: bold;
+	-moz-border-radius: 2px;
+}
Index: plugins/pages/_prepend.php
===================================================================
--- plugins/pages/_prepend.php	(revision 776)
+++ plugins/pages/_prepend.php	(revision 857)
@@ -12,4 +12,6 @@
 if (!defined('DC_RC_PATH')) { return; }
 
+global $core;
+
 $core->url->register('pages','pages','^pages/(.+)$',array('urlPages','pages'));
 $core->url->register('pagespreview','pagespreview','^pagespreview/(.+)$',array('urlPages','pagespreview'));
Index: plugins/pages/list.php
===================================================================
--- plugins/pages/list.php	(revision 884)
+++ plugins/pages/list.php	(revision 578)
@@ -11,70 +11,55 @@
 # -- END LICENSE BLOCK -----------------------------------------
 if (!defined('DC_CONTEXT_ADMIN')) { return; }
-
 dcPage::check('pages,contentadmin');
 
-class adminPageList extends adminItemsList
-{
-	public function setColumns()
+/* Pager class
+-------------------------------------------------------- */
+class adminPageList extends adminGenericList
+{
+	public function display($page,$nb_per_page,$enclose_block='')
 	{
-		$this->addColumn('title','post_title',__('Title'),array('adminPostList','getTitle'),array('class' => array('maximal')),true,true,false);
-		$this->addColumn('date','post_dt',__('Date'),array('adminPostList','getDate'));
-		$this->addColumn('datetime','post_dt',__('Date and time'),array('adminPostList','getDateTime'));
-		$this->addColumn('author','user_id',__('Author'),array('adminPostList','getAuthor'));
-		$this->addColumn('comments','nb_comment',__('Comments'),array('adminPostList','getComments'));
-		$this->addColumn('trackbacks','nb_trackback',__('Trackbacks'),array('adminPostList','getTrackbacks'));
-		$this->addColumn('status','post_status',__('Status'),array('adminPostList','getStatus'));
-		$this->default_sortby = 'datetime';
-		$this->default_order = 'desc';
-
+		if ($this->rs->isEmpty())
+		{
+			echo '<p><strong>'.__('No page').'</strong></p>';
+		}
+		else
+		{
+			$pager = new pager($page,$this->rs_count,$nb_per_page,10);
+			$pager->html_prev = $this->html_prev;
+			$pager->html_next = $this->html_next;
+			$pager->var_page = 'page';
+			
+			$html_block =
+			'<table class="clear"><tr>'.
+			'<th colspan="2">'.__('Title').'</th>'.
+			'<th>'.__('Date').'</th>'.
+			'<th>'.__('Author').'</th>'.
+			'<th>'.__('Comments').'</th>'.
+			'<th>'.__('Trackbacks').'</th>'.
+			'<th>'.__('Status').'</th>'.
+			'</tr>%s</table>';
+			
+			if ($enclose_block) {
+				$html_block = sprintf($enclose_block,$html_block);
+			}
+			
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+			
+			$blocks = explode('%s',$html_block);
+			
+			echo $blocks[0];
+			
+			while ($this->rs->fetch())
+			{
+				echo $this->postLine();
+			}
+			
+			echo $blocks[1];
+			
+			echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
+		}
 	}
 	
-	protected function getDefaultCaption()
-	{
-		return __('Pages list');
-	}
-	
-	protected function getDefaultLine()
-	{
-		return
-		'<tr class="line'.($this->rs->post_status != 1 ? ' offline' : '').'"'.
-		' id="p'.$this->rs->post_id.'">%s</tr>';
-	}
-	
-	protected function getTitle()
-	{
-		return
-		'<th scope="row" class="maximal">'.
-		form::checkbox(array('entries[]'),$this->rs->post_id,'','','',!$this->rs->isEditable()).'&nbsp;'.
-		'<a href="'.$this->core->getPostAdminURL($this->rs->post_type,$this->rs->post_id).'">'.
-		html::escapeHTML($this->rs->post_title).'</a></th>';
-	}
-	
-	protected function getDate()
-	{
-		return '<td class="nowrap">'.dt::dt2str(__('%Y-%m-%d'),$this->rs->post_dt).'</td>';
-	}
-	
-	protected function getDateTime()
-	{
-		return '<td class="nowrap">'.dt::dt2str(__('%Y-%m-%d %H:%M'),$this->rs->post_dt).'</td>';
-	}
-	
-	protected function getAuthor()
-	{
-		return '<td class="nowrap">'.$this->rs->user_id.'</td>';
-	}
-	
-	protected function getComments()
-	{
-		return '<td class="nowrap">'.$this->rs->nb_comment.'</td>';
-	}
-	
-	protected function getTrackbacks()
-	{
-		return '<td class="nowrap">'.$this->rs->nb_trackback.'</td>';
-	}
-	
-	protected function getStatus()
+	private function postLine()
 	{
 		$img = '<img alt="%1$s" title="%1$s" src="images/%2$s" />';
@@ -99,4 +84,9 @@
 		}
 		
+		$selected = '';
+		if ($this->rs->post_selected) {
+			$selected = sprintf($img,__('selected'),'selected.png');
+		}
+		
 		$attach = '';
 		$nb_media = $this->rs->countMedia();
@@ -106,61 +96,47 @@
 		}
 		
-		return '<td class="nowrap status">'.$img_status.' '.$protected.' '.$attach.'</td>';
+		$res = '<tr class="line'.($this->rs->post_status != 1 ? ' offline' : '').'"'.
+		' id="p'.$this->rs->post_id.'">';
+		
+		$res .=
+		'<td class="nowrap">'.
+		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>'.
+		'<td class="nowrap">'.dt::dt2str(__('%Y-%m-%d %H:%M'),$this->rs->post_dt).'</td>'.
+		
+		'<td class="nowrap">'.$this->rs->user_id.'</td>'.
+		'<td class="nowrap">'.$this->rs->nb_comment.'</td>'.
+		'<td class="nowrap">'.$this->rs->nb_trackback.'</td>'.
+		'<td class="nowrap status">'.$img_status.' '.$selected.' '.$protected.' '.$attach.'</td>'.
+		'</tr>';
+		
+		return $res;
 	}
 }
 
-
-# Getting authors
+/* Getting pages
+-------------------------------------------------------- */
+$params = array(
+	'post_type' => 'page'
+);
+
+$page = !empty($_GET['page']) ? (integer) $_GET['page'] : 1;
+$nb_per_page =  30;
+
+if (!empty($_GET['nb']) && (integer) $_GET['nb'] > 0) {
+	$nb_per_page = (integer) $_GET['nb'];
+}
+
+$params['limit'] = array((($page-1)*$nb_per_page),$nb_per_page);
+$params['no_content'] = true;
+$params['order'] = 'post_position ASC, post_title ASC';
+
 try {
-	$users = $core->blog->getPostsUsers('page');
+	$pages = $core->blog->getPosts($params);
+	$counter = $core->blog->getPosts($params,true);
+	$post_list = new adminPageList($core,$pages,$counter->f(0));
 } catch (Exception $e) {
 	$core->error->add($e->getMessage());
-}
-
-# Getting dates
-try {
-	$dates = $core->blog->getDates(array('type'=>'month','post_type'=>'page'));
-} catch (Exception $e) {
-	$core->error->add($e->getMessage());
-}
-
-# Getting langs
-try {
-	$langs = $core->blog->getLangs(array('post_type'=>'page'));
-} catch (Exception $e) {
-	$core->error->add($e->getMessage());
-}
-
-# Creating filter combo boxes
-if (!$core->error->flag())
-{
-	# Filter form we'll put in html_block
-	$users_combo = array();
-	while ($users->fetch())
-	{
-		$user_cn = dcUtils::getUserCN($users->user_id,$users->user_name,
-		$users->user_firstname,$users->user_displayname);
-		
-		if ($user_cn != $users->user_id) {
-			$user_cn .= ' ('.$users->user_id.')';
-		}
-		
-		$users_combo[$user_cn] = $users->user_id; 
-	}
-	
-	$status_combo = array(
-	);
-	foreach ($core->blog->getAllPostStatus() as $k => $v) {
-		$status_combo[$v] = (string) $k;
-	}
-	
-	# Months array
-	while ($dates->fetch()) {
-		$dt_m_combo[dt::str('%B %Y',$dates->ts())] = $dates->year().$dates->month();
-	}
-	
-	while ($langs->fetch()) {
-		$lang_combo[$langs->post_lang] = $langs->post_lang;
-	}
 }
 
@@ -169,76 +145,19 @@
 if ($core->auth->check('publish,contentadmin',$core->blog->id))
 {
-	$combo_action[__('Status')] = array(
-		__('Publish') => 'publish',
-		__('Unpublish') => 'unpublish',
-		__('Schedule') => 'schedule',
-		__('Mark as pending') => 'pending'
-	);
-}
-if ($core->auth->check('admin',$core->blog->id))
-{
-	$combo_action[__('Change')] = array(__('Change author') => 'author');
+	$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';
 }
 if ($core->auth->check('delete,contentadmin',$core->blog->id))
 {
-	$combo_action[__('Delete')] = array(__('Delete') => 'delete');
+	$combo_action[__('delete')] = 'delete';
 }
 
 # --BEHAVIOR-- adminPagesActionsCombo
 $core->callBehavior('adminPagesActionsCombo',array(&$combo_action));
-
-
-/* Get posts
--------------------------------------------------------- */
-$post_list = new adminPageList($core);
-
-$params = new ArrayObject();
-$params['post_type'] = 'page';
-$params['no_content'] = true;
-
-$filterSet = new dcFilterSet('pages',$p_url);
-class monthComboFilter extends comboFilter {
-	public function applyFilter($params) {
-		$month=$this->values[0];
-		$params['post_month'] = substr($month,4,2);
-		$params['post_year'] = substr($month,0,4);
-	}
-}
-$filterSet
-	->addFilter(new comboFilter(
-		'users',__('Author'), __('Author'), 'user_id', $users_combo))
-	->addFilter(new comboFilter(
-		'post_status',__('Status'), __('Status'), 'post_status', $status_combo))
-	->addFilter(new comboFilter(
-		'lang',__('Lang'), __('Lang'), 'post_lang', $lang_combo))
-	->addFilter(new monthComboFilter(
-		'month',__('Month'),__('Month'), 'post_month', $dt_m_combo,array('singleval' => 1)))
-	->addFilter(new textFilter(
-		'search',__('Contains'),__('The page contains'), 'search',20,255));
-
-$core->callBehavior('adminPagesFilters',$filterSet);
-$filterSet->setExtra($post_list);
-
-$filterSet->setup($_GET,$_POST);
-
-# Get pages
-try {
-	$nfparams = $params->getArrayCopy();
-	$filtered = $filterSet->applyFilters($params);
-	$core->callBehavior('adminPostsParams',$params);
-	$posts = $core->blog->getPosts($params);
-	$counter = $core->blog->getPosts($params,true);
-	if ($filtered) {
-		$totalcounter = $core->blog->getPosts($nfparams,true);
-		$page_title = sprintf(__('Pages / %s filtered out of %s'),$counter->f(0),$totalcounter->f(0));
-	} else {
-		$page_title = __('Pages');
-		$filters_info = '';
-	}
-	$post_list->setItems($posts,$counter->f(0));
-} catch (Exception $e) {
-	$core->error->add($e->getMessage());
-}
-
 
 /* Display
@@ -254,20 +173,16 @@
   //]]>
   </script>
-<?php
-echo $filterSet->header();
-?>
 </head>
 
 <body>
 <?php
+echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Pages').'</span></h2>'.
+'<p class="top-add"><a class="button add" href="'.$p_url.'&amp;act=page">'.__('New page').'</a></p>';
+
 if (!$core->error->flag())
 {
-	echo 
-	'<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Pages').'</span></h2>'.
-	'<p class="top-add"><a class="button add" href="'.$p_url.'&amp;act=page">'.__('New page').'</a></p>';
-
-	$filterSet->display();
 	# Show pages
-	$post_list->display('<form action="posts_actions.php" method="post" id="form-entries">'.
+	$post_list->display($page,$nb_per_page,
+	'<form action="posts_actions.php" method="post" id="form-entries">'.
 	
 	'%s'.
@@ -279,11 +194,10 @@
 	form::combo('action',$combo_action).
 	'<input type="submit" value="'.__('ok').'" /></p>'.
-	str_replace('%','%%',$filterSet->getFormFieldsAsHidden()).
+	form::hidden(array('post_type'),'page').
+	form::hidden(array('redir'),html::escapeHTML($_SERVER['REQUEST_URI'])).
 	$core->formNonce().
 	'</div>'.
-	'</form>'
-	);
-}
-
+	'</form>');
+}
 dcPage::helpBlock('pages');
 ?>
Index: plugins/simpleMenu/index.php
===================================================================
--- plugins/simpleMenu/index.php	(revision 776)
+++ plugins/simpleMenu/index.php	(revision 790)
@@ -405,7 +405,4 @@
 	</script>
 	<?php endif; ?>
-	<!--
-	<link rel="stylesheet" type="text/css" href="index.php?pf=simpleMenu/style.css" />
-	-->
 </head>
 
Index: plugins/tags/_admin.php
===================================================================
--- plugins/tags/_admin.php	(revision 782)
+++ plugins/tags/_admin.php	(revision 818)
@@ -131,27 +131,29 @@
 	public static function postsActionsHeaders()
 	{
-		$tag_url = $GLOBALS['core']->blog->url.$GLOBALS['core']->url->getURLFor('tag');
-		
-		$opts = $GLOBALS['core']->auth->getOptions();
-		$type = isset($opts['tag_list_format']) ? $opts['tag_list_format'] : 'more';
-		
-		return 
-		'<script type="text/javascript">'."\n".
-		"//<![CDATA[\n".
-		"metaEditor.prototype.meta_url = 'plugin.php?p=tags&m=tag_posts&amp;tag=';\n".
-		"metaEditor.prototype.meta_type = '".html::escapeJS($type)."';\n".
-		"metaEditor.prototype.text_confirm_remove = '".html::escapeJS(__('Are you sure you want to remove this %s?'))."';\n".
-		"metaEditor.prototype.text_add_meta = '".html::escapeJS(__('Add a %s to this entry'))."';\n".
-		"metaEditor.prototype.text_choose = '".html::escapeJS(__('Choose from list'))."';\n".
-		"metaEditor.prototype.text_all = '".html::escapeJS(__('all'))."';\n".
-		"metaEditor.prototype.text_separation = '".html::escapeJS(__('Enter tags separated by coma'))."';\n".
-		"dotclear.msg.tags_autocomplete = '".html::escapeJS(__('used in %e - frequency %p%'))."';\n".
-		"dotclear.msg.entry = '".html::escapeJS(__('entry'))."';\n".
-		"dotclear.msg.entries = '".html::escapeJS(__('entries'))."';\n".
-		"\n//]]>\n".
-		"</script>\n".
-		'<script type="text/javascript" src="index.php?pf=tags/js/posts_actions.js"></script>'.
-		dcPage::jqueryUI().
-		'<link rel="stylesheet" type="text/css" href="index.php?pf=tags/style.css" />';
+		if (($_POST['action'] == 'tags') || ($_POST['action'] == 'tags_remove')) {
+			$tag_url = $GLOBALS['core']->blog->url.$GLOBALS['core']->url->getURLFor('tag');
+
+			$opts = $GLOBALS['core']->auth->getOptions();
+			$type = isset($opts['tag_list_format']) ? $opts['tag_list_format'] : 'more';
+
+			return 
+			'<script type="text/javascript" src="index.php?pf=tags/js/jquery.autocomplete.js"></script>'.
+			'<script type="text/javascript" src="index.php?pf=tags/js/posts_actions.js"></script>'.
+			'<script type="text/javascript">'."\n".
+			"//<![CDATA[\n".
+			"metaEditor.prototype.meta_url = 'plugin.php?p=tags&m=tag_posts&amp;tag=';\n".
+			"metaEditor.prototype.meta_type = '".html::escapeJS($type)."';\n".
+			"metaEditor.prototype.text_confirm_remove = '".html::escapeJS(__('Are you sure you want to remove this %s?'))."';\n".
+			"metaEditor.prototype.text_add_meta = '".html::escapeJS(__('Add a %s to this entry'))."';\n".
+			"metaEditor.prototype.text_choose = '".html::escapeJS(__('Choose from list'))."';\n".
+			"metaEditor.prototype.text_all = '".html::escapeJS(__('all'))."';\n".
+			"metaEditor.prototype.text_separation = '".html::escapeJS(__('Enter tags separated by coma'))."';\n".
+			"dotclear.msg.tags_autocomplete = '".html::escapeJS(__('used in %e - frequency %p%'))."';\n".
+			"dotclear.msg.entry = '".html::escapeJS(__('entry'))."';\n".
+			"dotclear.msg.entries = '".html::escapeJS(__('entries'))."';\n".
+			"\n//]]>\n".
+			"</script>\n".
+			'<link rel="stylesheet" type="text/css" href="index.php?pf=tags/style.css" />';
+		}
 	}
 	
@@ -172,4 +174,5 @@
 			try
 			{
+
 				$meta =& $GLOBALS['core']->meta;
 				$tags = $meta->splitMetaValues($_POST['new_tags']);
Index: plugins/tags/_public.php
===================================================================
--- plugins/tags/_public.php	(revision 783)
+++ plugins/tags/_public.php	(revision 863)
@@ -44,5 +44,4 @@
 
 $core->addBehavior('templateBeforeBlock',array('behaviorsTags','templateBeforeBlock'));
-$core->addBehavior('tplSysIfConditions',array('behaviorsTags','tplSysIfConditions'));
 $core->addBehavior('publicBeforeDocument',array('behaviorsTags','addTplPath'));
 
@@ -55,8 +54,6 @@
 			return
 			"<?php\n".
-			"if (!isset(\$params['from'])) \$params['from']='';"."\n".
-			"if (!isset(\$params['sql'])) \$params['sql']='';"."\n".
-			"\$params['from'] .= ', '.\$core->prefix.'meta META ';\n".
-			"\$params['sql'] .= 'AND META.post_id = P.post_id ';\n".
+			"@\$params['from'] .= ', '.\$core->prefix.'meta META ';\n".
+			"@\$params['sql'] .= 'AND META.post_id = P.post_id ';\n".
 			"\$params['sql'] .= \"AND META.meta_type = 'tag' \";\n".
 			"\$params['sql'] .= \"AND META.meta_id = '".$core->con->escape($attr['tag'])."' \";\n".
@@ -66,24 +63,10 @@
 		{
 			return
-			'<?php if ($_ctx->exists("meta")) { '.
-				"if (!isset(\$params['from'])) \$params['from']='';"."\n".
-				"if (!isset(\$params['sql'])) \$params['sql']='';"."\n".
-				"\$params['from'] .= ', '.\$core->prefix.'meta META ';\n".
-				"\$params['sql'] .= 'AND META.post_id = P.post_id ';\n".
+			'<?php if ($_ctx->exists("meta") && ($_ctx->meta->meta_type == "tag")) { '.
+				"@\$params['from'] .= ', '.\$core->prefix.'meta META ';\n".
+				"@\$params['sql'] .= 'AND META.post_id = P.post_id ';\n".
 				"\$params['sql'] .= \"AND META.meta_type = 'tag' \";\n".
 				"\$params['sql'] .= \"AND META.meta_id = '\".\$core->con->escape(\$_ctx->meta->meta_id).\"' \";\n".
 			"} ?>\n";
-		}
-	}
-	
-	public static function tplIfConditions($tag, $attr,$content,$if)
-	{
-		if ($tag == 'Sys' && isset($attr['has_tag'])) {
-			$sign = '';
-			if (substr($attr['has_tag'],0,1) == '!') {
-				$sign = '!';
-				$attr['has_tag'] = substr($attr['has_tag'],1);
-			}
-			$if[] =  $sign."(\$core->tpl->tagExists('".addslashes($attr['has_tag'])."') )";
 		}
 	}
Index: plugins/tags/js/post.js
===================================================================
--- plugins/tags/js/post.js	(revision 756)
+++ plugins/tags/js/post.js	(revision 0)
@@ -1,9 +1,3 @@
 $(function() {
-	function split( val ) {
-		return val.split( /,\s*/ );
-	}
-	function extractLast(term) {
-		return split(term).pop();
-	}
 	$('#edit-entry').onetabload(function() {
 		var tags_edit = $('#tags-edit');
@@ -24,69 +18,42 @@
 		}
 		
-		$('#post_meta_input')
-			.bind( "keydown", function( event ) {
-		if ( event.keyCode === $.ui.keyCode.TAB &&
-				$( this ).data( "autocomplete" ).menu.active ) {
-			event.preventDefault();
-		}
-	})
-	.autocomplete({
-		minLength: 2,
-		delay: 1000,
-		source: function(request,response) {
-			$.ajax({
-				url: mEdit.service_uri,
-				data: {
-					'f': 'searchMeta',
-					'metaType': 'tag',
-					'q': extractLast(request.term)
-				},
-				success:function(data) {
-					results = [];
-					$(data).find('meta').each(function(){
-						var id = $(this).text();
-						var roundpercent = $(this).attr("roundpercent");
-						var count = $(this).attr("count");
-						console.log(id);
-						console.log(roundpercent);
-						console.log(count);
-						var label = id + ' (' +
-							dotclear.msg.tags_autocomplete.
-								replace('%p',roundpercent).
-								replace('%e',count + ' ' +
-								((count > 1) ?
-									dotclear.msg.entries :
-									dotclear.msg.entry
-								)) + ')';
-							console.log(label);
-						results.push({label:label,value:id});
-					});
-					response(results);
-				}
-			});
-		},
-		search: function() {
-			var term = extractLast( this.value );
-			if ( term.length < 2 ) {
-				return false;
+		$('#post_meta_input').autocomplete(mEdit.service_uri, {
+			extraParams: {
+				'f': 'searchMeta',
+				'metaType': 'tag'
+			},
+			delay: 1000,
+			multiple: true,
+			matchSubset: false,
+			matchContains: true,
+			parse: function(xml) { 
+				var results = [];
+				$(xml).find('meta').each(function(){
+					results[results.length] = {
+						data: {
+							"id": $(this).text(),
+							"count": $(this).attr("count"),
+							"percent":  $(this).attr("roundpercent")
+						},
+						result: $(this).text()
+					}; 
+				});
+				return results;
+			},
+			formatItem: function(tag) {
+				return tag.id + ' <em>(' +
+				dotclear.msg.tags_autocomplete.
+					replace('%p',tag.percent).
+					replace('%e',tag.count + ' ' +
+						(tag.count > 1 ?
+						dotclear.msg.entries :
+						dotclear.msg.entry)
+					) +
+				')</em>';
+			},
+			formatResult: function(tag) { 
+				return tag.result; 
 			}
-		},
-		focus: function() {
-			// prevent value inserted on focus
-			return false;
-		},
-		select: function( event, ui ) {
-			var terms = split( this.value );
-			// remove the current input
-			terms.pop();
-			// add the selected item
-			terms.push( ui.item.value );
-			// add placeholder to get the comma-and-space at the end
-			terms.push( "" );
-			this.value = terms.join( ", " );
-			return false;
-		}		
-	});
-
+		});
 	});
 });
Index: plugins/tags/js/posts_actions.js
===================================================================
--- plugins/tags/js/posts_actions.js	(revision 756)
+++ plugins/tags/js/posts_actions.js	(revision 0)
@@ -1,9 +1,3 @@
 $(function() {
-	function split( val ) {
-		return val.split( /,\s*/ );
-	}
-	function extractLast(term) {
-		return split(term).pop();
-	}
 	var tag_field = $('#new_tags');
 	
@@ -25,67 +19,41 @@
 	});
 	
-	$('#post_meta_input')
-	.bind( "keydown", function( event ) {
-		if ( event.keyCode === $.ui.keyCode.TAB &&
-				$( this ).data( "autocomplete" ).menu.active ) {
-			event.preventDefault();
+	$('#post_meta_input').autocomplete(mEdit.service_uri, {
+		extraParams: {
+			'f': 'searchMeta',
+			'metaType': 'tag'
+		},
+		delay: 1000,
+		multiple: true,
+		matchSubset: false,
+		matchContains: true,
+		parse: function(xml) { 
+			var results = [];
+			$(xml).find('meta').each(function(){
+				results[results.length] = {
+					data: {
+						"id": $(this).text(),
+						"count": $(this).attr("count"),
+						"percent":  $(this).attr("roundpercent")
+					},
+					result: $(this).text()
+				}; 
+			});
+			return results;
+		},
+		formatItem: function(tag) {
+			return tag.id + ' <em>(' +
+			dotclear.msg.tags_autocomplete.
+				replace('%p',tag.percent).
+				replace('%e',tag.count + ' ' +
+					(tag.count > 1 ?
+					dotclear.msg.entries :
+					dotclear.msg.entry)
+				) +
+			')</em>';
+		},
+		formatResult: function(tag) { 
+			return tag.result; 
 		}
-	})
-	.autocomplete({
-		minLength: 2,
-		delay: 1000,
-		source: function(request,response) {
-			$.ajax({
-				url: mEdit.service_uri,
-				data: {
-					'f': 'searchMeta',
-					'metaType': 'tag',
-					'q': extractLast(request.term)
-				},
-				success:function(data) {
-					results = [];
-					$(data).find('meta').each(function(){
-						var id = $(this).text();
-						var roundpercent = $(this).attr("roundpercent");
-						var count = $(this).attr("count");
-						console.log(id);
-						console.log(roundpercent);
-						console.log(count);
-						var label = id + ' (' +
-							dotclear.msg.tags_autocomplete.
-								replace('%p',roundpercent).
-								replace('%e',count + ' ' +
-								((count > 1) ?
-									dotclear.msg.entries :
-									dotclear.msg.entry
-								)) + ')';
-							console.log(label);
-						results.push({label:label,value:id});
-					});
-					response(results);
-				}
-			});
-		},
-		search: function() {
-			var term = extractLast( this.value );
-			if ( term.length < 2 ) {
-				return false;
-			}
-		},
-		focus: function() {
-			// prevent value inserted on focus
-			return false;
-		},
-		select: function( event, ui ) {
-			var terms = split( this.value );
-			// remove the current input
-			terms.pop();
-			// add the selected item
-			terms.push( ui.item.value );
-			// add placeholder to get the comma-and-space at the end
-			terms.push( "" );
-			this.value = terms.join( ", " );
-			return false;
-		}		
 	});
 });
Index: plugins/tags/tag_posts.php
===================================================================
--- plugins/tags/tag_posts.php	(revision 711)
+++ plugins/tags/tag_posts.php	(revision 793)
@@ -17,5 +17,5 @@
 
 
-$page = !empty($_GET['page']) ? $_GET['page'] : 1;
+$page = !empty($_GET['page']) ? (integer) $_GET['page'] : 1;
 $nb_per_page =  30;
 
Index: plugins/tags/tags.php
===================================================================
--- plugins/tags/tags.php	(revision 782)
+++ plugins/tags/tags.php	(revision 711)
@@ -43,11 +43,11 @@
 			$col = 1;
 		}
-		$cols[$col] .= '<tr class="tagLetter"><th scope="row" colspan="2"><span>'.$letter.'</span></th></tr>';
+		$cols[$col] .= '<tr class="tagLetter"><td colspan="2"><span>'.$letter.'</span></td></tr>';
 	}
 	
 	$cols[$col] .=
 	'<tr class="line">'.
-		'<th scope="row" class="maximal"><a href="'.$p_url.
-		'&amp;m=tag_posts&amp;tag='.rawurlencode($tags->meta_id).'">'.$tags->meta_id.'</a></th>'.
+		'<td class="maximal"><a href="'.$p_url.
+		'&amp;m=tag_posts&amp;tag='.rawurlencode($tags->meta_id).'">'.$tags->meta_id.'</a></td>'.
 		'<td class="nowrap"><strong>'.$tags->count.'</strong> '.
 		(($tags->count==1) ? __('entry') : __('entries')).'</td>'.
@@ -57,8 +57,5 @@
 }
 
-$table =
-'<div class="col"><table class="tags"><caption>'.
-__('Tags list').
-'</caption><tbody>%s</tbody></table></div>';
+$table = '<div class="col"><table class="tags">%s</table></div>';
 
 if ($cols[0])
Index: plugins/userPref/index.php
===================================================================
--- plugins/userPref/index.php	(revision 782)
+++ plugins/userPref/index.php	(revision 589)
@@ -128,5 +128,5 @@
 <div id="local" class="multi-part" title="<?php echo __('user preferences'); ?>">
 
-<?php
+<?php 
 $table_header = '<table class="prefs" id="%s"><caption>%s</caption>'.
 '<thead>'.
@@ -142,5 +142,4 @@
 
 $prefs = array();
-
 foreach ($core->auth->user_prefs->dumpWorkspaces() as $ws => $workspace) {
 	foreach ($workspace->dumpPrefs() as $k => $v) {
Index: plugins/widgets/_widgets_functions.php
===================================================================
--- plugins/widgets/_widgets_functions.php	(revision 776)
+++ plugins/widgets/_widgets_functions.php	(revision 862)
@@ -250,5 +250,16 @@
 		$i = 0;
 		foreach ($feed->items as $item) {
-			$li = isset($item->link) ? '<a href="'.html::escapeHTML($item->link).'">'.$item->title.'</a>' : $item->title;
+			$title = isset($item->title) && strlen(trim($item->title)) ? $item->title : '';
+			$link = isset($item->link) && strlen(trim($item->link)) ? $item->link : '';
+			
+			if (!$link && !$title) {
+				continue;
+			}
+			
+			if (!$title) {
+				$title = substr($link,0,25).'...';
+			}
+			
+			$li = $link ? '<a href="'.html::escapeHTML($item->link).'">'.$title.'</a>' : $title;
 			$res .= ' <li>'.$li.'</li> ';
 			$i++;
Index: plugins/widgets/index.php
===================================================================
--- plugins/widgets/index.php	(revision 735)
+++ plugins/widgets/index.php	(revision 864)
@@ -325,5 +325,5 @@
 		form::checkbox(array($iname.'[_rem]'),'1',0).' '.__('Remove widget').
 		'</label></p>'.
-		'<div class="widgetSettings">'.$w->formSettings($iname,&$j).'</div>'.
+		'<div class="widgetSettings">'.$w->formSettings($iname,$j).'</div>'.
 		'</div>';
 		
Index: themes/ductile/_config.php
===================================================================
--- themes/ductile/_config.php	(revision 776)
+++ themes/ductile/_config.php	(revision 832)
@@ -13,6 +13,9 @@
 l10n::set(dirname(__FILE__).'/locales/'.$_lang.'/admin');
 
-$img_url = $core->blog->settings->system->themes_url.'/'.$core->blog->settings->system->theme.'/img/';
-$img_url = http::concatURL($core->blog->url,$img_url);
+if (preg_match('#^http(s)?://#',$core->blog->settings->system->themes_url)) {
+	$img_url = http::concatURL($core->blog->settings->system->themes_url,'/'.$core->blog->settings->system->theme.'/img/');
+} else {
+	$img_url = http::concatURL($core->blog->url,$core->blog->settings->system->themes_url.'/'.$core->blog->settings->system->theme.'/img/');
+}
 $img_path = dirname(__FILE__).'/img/';
 
@@ -221,4 +224,5 @@
 	// HTML
 	'subtitle_hidden' => null,
+	'logo_src' => null,
 	// CSS
 	'body_font' => null,
@@ -322,4 +326,5 @@
 		if ($conf_tab == 'html') {
 			$ductile_user['subtitle_hidden'] = (integer) !empty($_POST['subtitle_hidden']);
+			$ductile_user['logo_src'] = $_POST['logo_src'];
 
 			$ductile_stickers = array();
@@ -427,4 +432,6 @@
 	echo '<p>'.sprintf(__('To configure the top menu go to the <a href="%s">Simple Menu administration page</a>.'),'plugin.php?p=simpleMenu').'</p>';
 }
+echo '<p class="field"><label for"logo_src">'.__('Logo URL:').' '.
+	form::field('logo_src',40,255,$ductile_user['logo_src']).'</label>'.'</p>';
 echo '</fieldset>';
 
Index: themes/ductile/_define.php
===================================================================
--- themes/ductile/_define.php	(revision 716)
+++ themes/ductile/_define.php	(revision 881)
@@ -15,5 +15,5 @@
 	/* Description*/		"Mediaqueries compliant elegant theme",
 	/* Author */			"Dotclear Team",
-	/* Version */			'1.0',
+	/* Version */			'1.2.1',
 	/* Properties */		array(
 								'standalone_config' => true
Index: themes/ductile/_public.php
===================================================================
--- themes/ductile/_public.php	(revision 776)
+++ themes/ductile/_public.php	(revision 830)
@@ -22,4 +22,5 @@
 $core->tpl->addBlock('EntryIfContentIsCut',array('tplDuctileTheme','EntryIfContentIsCut'));
 $core->tpl->addValue('ductileNbEntryPerPage',array('tplDuctileTheme','ductileNbEntryPerPage'));
+$core->tpl->addValue('ductileLogoSrc',array('tplDuctileTheme','ductileLogoSrc'));
 
 class tplDuctileTheme
@@ -27,16 +28,21 @@
 	public static function ductileNbEntryPerPage($attr)
 	{
-		global $core;
-
+		return '<?php tplDuctileTheme::ductileNbEntryPerPageHelper(); ?>';
+	}
+	
+	public static function ductileNbEntryPerPageHelper()
+	{
+		global $_ctx;
+		
 		$nb = 0;
-		$s = $core->blog->settings->themes->get($core->blog->settings->system->theme.'_entries_counts');
+		$s = $GLOBALS['core']->blog->settings->themes->get($GLOBALS['core']->blog->settings->system->theme.'_entries_counts');
 		if ($s !== null) {
 			$s = @unserialize($s);
 			if (is_array($s)) {
-				if (isset($s[$core->url->type])) {
+				if (isset($s[$GLOBALS['core']->url->type])) {
 					// Nb de billets par page défini par la config du thème
-					$nb = (integer) $s[$core->url->type];
+					$nb = (integer) $s[$GLOBALS['core']->url->type];
 				} else {
-					if (($core->url->type == 'default-page') && (isset($s['default']))) {
+					if (($GLOBALS['core']->url->type == 'default-page') && (isset($s['default']))) {
 						// Les pages 2 et suivantes de la home ont le même nombre de billet que la première page
 						$nb = (integer) $s['default'];
@@ -54,5 +60,5 @@
 
 		if ($nb > 0)
-			return '<?php $_ctx->nb_entry_per_page = '.$nb.' ; ?>';
+			$_ctx->nb_entry_per_page = $nb;
 	}
 	
@@ -85,19 +91,88 @@
 	{
 		global $core;
+		
+		$tpl_path = dirname(__FILE__).'/tpl/';
+		$list_types = array('title','short','full');
+
+		// Get all _entry-*.html in tpl folder of theme
+		$list_types_templates = files::scandir($tpl_path);
+		if (is_array($list_types_templates)) {
+			foreach ($list_types_templates as $v) {
+				if (preg_match('/^_entry\-(.*)\.html$/',$v,$m)) {
+					if (isset($m[1])) {
+						if (!in_array($m[1],$list_types)) {
+							// template not already in full list
+							$list_types[] = $m[1];
+						}
+					}
+				}
+			}
+		}
+
 		$default = isset($attr['default']) ? trim($attr['default']) : 'short';
-
-		$model = '';
-		$s = $core->blog->settings->themes->get($core->blog->settings->system->theme.'_entries_lists');
+		$ret = '<?php '."\n".
+			'switch (tplDuctileTheme::ductileEntriesListHelper(\''.$default.'\')) {'."\n";
+
+		foreach ($list_types as $v) {
+			$ret .= '	case \''.$v.'\':'."\n".
+				'?>'."\n".
+						$core->tpl->includeFile(array('src' => '_entry-'.$v.'.html'))."\n".
+				'<?php '."\n".
+				'		break;'."\n";
+		}
+
+		$ret .= '}'."\n".
+			'?>';
+		
+		return $ret;
+	}
+	
+	public static function ductileEntriesListHelper($default)
+	{
+		$s = $GLOBALS['core']->blog->settings->themes->get($GLOBALS['core']->blog->settings->system->theme.'_entries_lists');
 		if ($s !== null) {
 			$s = @unserialize($s);
 			if (is_array($s)) {
-				if (isset($s[$core->url->type])) {
-					$model = $s[$core->url->type];
-				}
-			}
-		}
-
-		$local_attr = array('src' => '_entry-'.($model ? $model : $default).'.html');
-		return $core->tpl->includeFile($local_attr);
+				if (isset($s[$GLOBALS['core']->url->type])) {
+					$model = $s[$GLOBALS['core']->url->type];
+					return $model;
+				}
+			}
+		}
+		return $default;
+	}
+
+	public static function ductileLogoSrc($attr)
+	{
+		return '<?php echo tplDuctileTheme::ductileLogoSrcHelper(); ?>';
+	}
+
+	public static function ductileLogoSrcHelper()
+	{
+		$s = $GLOBALS['core']->blog->settings->themes->get($GLOBALS['core']->blog->settings->system->theme.'_style');
+		if ($s === null) {
+			return;
+		}
+		$s = @unserialize($s);
+		if (!is_array($s)) {
+			return;
+		}
+		
+		$img_url = $GLOBALS['core']->blog->settings->system->themes_url.'/'.$GLOBALS['core']->blog->settings->system->theme.'/img/logo.png';
+		if (isset($s['logo_src'])) {
+			if ($s['logo_src'] !== null) {
+				if ($s['logo_src'] != '') {
+					if ((substr($s['logo_src'],0,1) == '/') || (parse_url($s['logo_src'],PHP_URL_SCHEME) != '')) {
+						// absolute URL
+						$img_url = $s['logo_src'];
+					} else {
+						// relative URL (base = img folder of ductile theme)
+						$img_url = $GLOBALS['core']->blog->settings->system->themes_url.'/'.$GLOBALS['core']->blog->settings->system->theme.'/img/'.$s['logo_src'];
+					}
+				}
+			}
+		}
+		
+		return $img_url;
 	}
 
@@ -117,5 +192,5 @@
 				$default = true;
 			} else {
-				$s = array_filter($s,"tplDuctileTheme::cleanStickers");
+				$s = array_filter($s,"self::cleanStickers");
 				if (count($s) == 0) {
 					$default = true;
Index: themes/ductile/locales/en/help/help.html
===================================================================
--- themes/ductile/locales/en/help/help.html	(revision 683)
+++ themes/ductile/locales/en/help/help.html	(revision 810)
@@ -15,4 +15,6 @@
 
 <p>If the plugin "Simple menu" is installed and active, you can click on the designated link to configure the header's menu. (main menu?)</p>
+
+<p>Specify an URL of the logo to be used instead of default one. If the URL doesn't start with an <code>/</code> then it will be a relative URL from the <code>img</code> folder of the theme (put <code>logo.png</code>, for example, is similar to using the default logo). Clear this field to come back to the default configuration.</p>
 
   <dt>Stickers</dt>
Index: themes/ductile/locales/es/main.po
===================================================================
--- themes/ductile/locales/es/main.po	(revision 846)
+++ themes/ductile/locales/es/main.po	(revision 846)
@@ -0,0 +1,41 @@
+﻿msgid "Additionnal style directives"
+msgstr "Instrucciones CSS adicionales"
+
+msgid "reactions"
+msgstr "reacciones"
+
+msgid "Add ping"
+msgstr "Agregar un retroenlace"
+
+msgid "Suggestions:"
+msgstr "Sugerencias:"
+
+msgid "Go to homepage"
+msgstr "Regresar al inicio"
+
+msgid "Use search form"
+msgstr "Buscar"
+
+msgid "Explore archives"
+msgstr "Explorar los archivos"
+
+msgid "toDay"
+msgstr "al"
+
+msgid "FromDay"
+msgstr "Del"
+
+msgid "From"
+msgstr "Del"
+
+msgid "By category"
+msgstr "Por categoría"
+
+msgid "By date"
+msgstr "Por fecha"
+
+msgid "By tag"
+msgstr "Por tag"
+
+msgid "URL you've tried has typos, or the page has been deleted or moved."
+msgstr "Su URL está equivocada o la página fue borrada o desplazada."
Index: themes/ductile/locales/fr/admin.po
===================================================================
--- themes/ductile/locales/fr/admin.po	(revision 683)
+++ themes/ductile/locales/fr/admin.po	(revision 810)
@@ -10,4 +10,7 @@
 msgid "Hide blog description:"
 msgstr "Cacher la description du blog :"
+
+msgid "Logo URL:"
+msgstr "URL du logo :"
 
 msgid "To configure the top menu go to the <a href=\"%s\">Simple Menu administration page</a>."
Index: themes/ductile/locales/fr/help/help.html
===================================================================
--- themes/ductile/locales/fr/help/help.html	(revision 683)
+++ themes/ductile/locales/fr/help/help.html	(revision 810)
@@ -16,4 +16,5 @@
 <p>Cochez la case qui suit « Cacher la description du blog » pour ne pas afficher la description du blog habituellement affichée sous le titre.</p>
 <p>Vous pouvez, si l'extension « Menu Simple » est installée et active, cliquer sur le lien indiqué pour paramétrer le menu affiché en entête.</p>
+<p>Vous pouvez indiquer l'URL d'un logo à utiliser à la place du logo par défaut. Si l'URL ne débute pas par un <code>/</code> il s'agira d'une URL relative au dossier <code>img</code> du thème (mettre <code>logo.png</code> revient par exemple à utiliser le logo par défaut). Videz ce champ pour revenir à la configuration par défaut.</p>
 
 <h4>Étiquettes (« stickers »)</h4>
Index: themes/ductile/locales/fr/main.po
===================================================================
--- themes/ductile/locales/fr/main.po	(revision 683)
+++ themes/ductile/locales/fr/main.po	(revision 881)
@@ -4,4 +4,13 @@
 msgid "reactions"
 msgstr "réactions"
+
+msgid "no reactions"
+msgstr "pas de réaction"
+
+msgid "one reaction"
+msgstr "une réaction"
+
+msgid "%s reactions"
+msgstr "%s réactions"
 
 msgid "Add ping"
Index: themes/ductile/tpl/404.html
===================================================================
--- themes/ductile/tpl/404.html	(revision 683)
+++ themes/ductile/tpl/404.html	(revision 803)
@@ -24,5 +24,4 @@
 	{{tpl:include src="_head.html"}}
 </head>
-
 <body class="dc-404">
 	<div id="page">
Index: themes/ductile/tpl/_entry-full.html
===================================================================
--- themes/ductile/tpl/_entry-full.html	(revision 701)
+++ themes/ductile/tpl/_entry-full.html	(revision 803)
@@ -1,3 +1,4 @@
 <div id="p{{tpl:EntryID}}" class="post {{tpl:EntryIfOdd}} {{tpl:EntryIfFirst}} full" lang="{{tpl:EntryLang}}" xml:lang="{{tpl:EntryLang}}">
+
 	<!-- # New day date -->
 	<tpl:DateHeader><p class="day-date">{{tpl:EntryDate}}</p></tpl:DateHeader>
Index: themes/ductile/tpl/_entry-short.html
===================================================================
--- themes/ductile/tpl/_entry-short.html	(revision 701)
+++ themes/ductile/tpl/_entry-short.html	(revision 803)
@@ -1,3 +1,4 @@
 <div id="p{{tpl:EntryID}}" class="post short {{tpl:EntryIfOdd}} {{tpl:EntryIfFirst}}" lang="{{tpl:EntryLang}}" xml:lang="{{tpl:EntryLang}}">
+
 	<!-- # New day date -->
 	<tpl:DateHeader><p class="day-date">{{tpl:EntryDate}}</p></tpl:DateHeader>
Index: themes/ductile/tpl/_entry-title.html
===================================================================
--- themes/ductile/tpl/_entry-title.html	(revision 683)
+++ themes/ductile/tpl/_entry-title.html	(revision 803)
@@ -1,3 +1,4 @@
 <div id="p{{tpl:EntryID}}" class="post {{tpl:EntryIfOdd}} {{tpl:EntryIfFirst}} title" lang="{{tpl:EntryLang}}" xml:lang="{{tpl:EntryLang}}">
+
 	<!-- # New day date -->
 	<tpl:DateHeader><p class="day-date">{{tpl:EntryDate}}</p></tpl:DateHeader>
Index: themes/ductile/tpl/_footer.html
===================================================================
--- themes/ductile/tpl/_footer.html	(revision 688)
+++ themes/ductile/tpl/_footer.html	(revision 803)
@@ -2,5 +2,4 @@
 
 {{tpl:SimpleMenu id="sn-bottom" class="supranav nobig"}}
-
 <div id="footer">
 	<div id="blogcustom">
@@ -12,4 +11,3 @@
 	<p>{{tpl:SysPoweredBy}}</p>
 </div>
-
 {{tpl:SysBehavior behavior="publicFooterContent"}}
Index: themes/ductile/tpl/_head.html
===================================================================
--- themes/ductile/tpl/_head.html	(revision 683)
+++ themes/ductile/tpl/_head.html	(revision 803)
@@ -1,4 +1,5 @@
 <!-- media queries -->
 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+
 <!-- compat media queries -->
 <!--[if lt IE 9]>
Index: themes/ductile/tpl/_pagination.html
===================================================================
--- themes/ductile/tpl/_pagination.html	(revision 683)
+++ themes/ductile/tpl/_pagination.html	(revision 803)
@@ -2,6 +2,5 @@
 	<p class="pagination">
 		<tpl:PaginationIf end="0">
-			<a href="{{tpl:PaginationURL offset="+1"}}" class="prev">&#171;
-			{{tpl:lang previous entries}}</a> - 
+			<a href="{{tpl:PaginationURL offset="+1"}}" class="prev">&#171; {{tpl:lang previous entries}}</a> - 
 		</tpl:PaginationIf>
 		
Index: themes/ductile/tpl/_sidebar.html
===================================================================
--- themes/ductile/tpl/_sidebar.html	(revision 683)
+++ themes/ductile/tpl/_sidebar.html	(revision 803)
@@ -3,5 +3,4 @@
 		{{tpl:Widgets type="nav"}}
 	</div> <!-- End #blognav -->
-	
 	<div id="blogextra">
 		{{tpl:Widgets type="extra"}}
Index: themes/ductile/tpl/_simple-entry.html
===================================================================
--- themes/ductile/tpl/_simple-entry.html	(revision 702)
+++ themes/ductile/tpl/_simple-entry.html	(revision 881)
@@ -69,5 +69,5 @@
 		<tpl:CommentsHeader>
 			<div id="comments">
-				<h3>{{tpl:EntryCommentCount count_all="1" one="%s" more="%s"}} {{tpl:lang reactions}}</h3>
+				<h3>{{tpl:EntryCommentCount count_all="1" none="no reactions" one="one reaction" more="%s reactions"}}</h3>
 				<ul>
 		</tpl:CommentsHeader>
Index: themes/ductile/tpl/_top.html
===================================================================
--- themes/ductile/tpl/_top.html	(revision 683)
+++ themes/ductile/tpl/_top.html	(revision 810)
@@ -2,6 +2,6 @@
 	
 	<div id="top">
-		<p id="logo" class="nosmall"><a href="{{tpl:BlogURL}}"><img src="{{tpl:BlogThemeURL}}/img/logo.png" alt="{{tpl:lang Home}}" /></a></p>
-		<h1><span><a href="{{tpl:BlogURL}}">{{tpl:BlogName encode_html="1"}}</a></span></h1>
+		<p id="logo" class="nosmall"><a href="{{tpl:BlogURL}}"><img src="{{tpl:ductileLogoSrc}}" alt="{{tpl:lang Home}}" /></a></p>
+		<h1><a href="{{tpl:BlogURL}}"><span>{{tpl:BlogName encode_html="1"}}</span></a></h1>
 		<p id="blogdesc" class="nosmall">{{tpl:BlogDescription}}</p>
 	</div>
Index: themes/ductile/tpl/archive.html
===================================================================
--- themes/ductile/tpl/archive.html	(revision 683)
+++ themes/ductile/tpl/archive.html	(revision 803)
@@ -34,5 +34,4 @@
 	{{tpl:include src="_head.html"}}
 </head>
-
 <body class="dc-archive">
 	<div id="page">
Index: themes/ductile/tpl/archive_month.html
===================================================================
--- themes/ductile/tpl/archive_month.html	(revision 683)
+++ themes/ductile/tpl/archive_month.html	(revision 803)
@@ -33,5 +33,4 @@
 	{{tpl:include src="_head.html"}}
 </head>
-
 <body class="dc-archive-month">
 	<div id="page">
Index: themes/ductile/tpl/category.html
===================================================================
--- themes/ductile/tpl/category.html	(revision 683)
+++ themes/ductile/tpl/category.html	(revision 803)
@@ -46,5 +46,4 @@
 	{{tpl:include src="_head.html"}}
 </head>
-
 <body class="dc-category">
 	<div id="page">
Index: themes/ductile/tpl/home.html
===================================================================
--- themes/ductile/tpl/home.html	(revision 683)
+++ themes/ductile/tpl/home.html	(revision 803)
@@ -50,5 +50,4 @@
 	{{tpl:include src="_head.html"}}
 </head>
-
 <body class="dc-home <tpl:SysIf current_mode="default">dc-home-first</tpl:SysIf>">
 	<div id="page">
Index: themes/ductile/tpl/page.html
===================================================================
--- themes/ductile/tpl/page.html	(revision 683)
+++ themes/ductile/tpl/page.html	(revision 803)
@@ -37,5 +37,4 @@
 	</script>
 </head>
-
 <body class="dc-page">
 	<div id="page">
Index: themes/ductile/tpl/post.html
===================================================================
--- themes/ductile/tpl/post.html	(revision 683)
+++ themes/ductile/tpl/post.html	(revision 803)
@@ -40,5 +40,4 @@
 	</script>
 </head>
-
 <body class="dc-post">
 	<div id="page">
Index: themes/ductile/tpl/search.html
===================================================================
--- themes/ductile/tpl/search.html	(revision 683)
+++ themes/ductile/tpl/search.html	(revision 803)
@@ -44,5 +44,4 @@
 	{{tpl:include src="_head.html"}}
 </head>
-
 <body class="dc-search">
 	<div id="page">
Index: themes/ductile/tpl/tag.html
===================================================================
--- themes/ductile/tpl/tag.html	(revision 683)
+++ themes/ductile/tpl/tag.html	(revision 803)
@@ -45,5 +45,4 @@
 	{{tpl:include src="_head.html"}}
 </head>
-
 <body class="dc-tag">
 	<div id="page">
Index: themes/ductile/tpl/tags.html
===================================================================
--- themes/ductile/tpl/tags.html	(revision 683)
+++ themes/ductile/tpl/tags.html	(revision 803)
@@ -27,5 +27,4 @@
 	{{tpl:include src="_head.html"}}
 </head>
-
 <body class="dc-tags">
 	<div id="page">
